Anda tidak benar-benar menggunakan kumpulan koneksi. Sebuah ConnectionPoolDataSource tidak dimaksudkan untuk digunakan secara langsung. Ini dimaksudkan sebagai DataSource (khusus) untuk PooledConnection objek yang kemudian disimpan dalam kumpulan koneksi oleh DataSource (normal) implementasi yang menyediakan penyatuan koneksi.
Pengembang normal tidak boleh menggunakan ConnectionPoolDataSource secara langsung, ini dimaksudkan untuk digunakan dengan kumpulan koneksi yang disediakan oleh Server Aplikasi, atau untuk digabungkan ke dalam DataSource tujuan umum s yang menyediakan penyatuan koneksi.
Saat Connection diminta dari kumpulan koneksi, itu akan memeriksa PooledConnection yang ada (atau minta yang baru dari ConnectionPoolDataSource its ), ambil Connection dan mengembalikannya ke pengguna. Saat pengguna menutup Connection , PooledConnection akan memberi sinyal pada kumpulan koneksi bahwa itu tersedia lagi.
Dalam hal ini Anda membuat PooledConnection , mengambil Connection dari itu dan kemudian membuang PooledConnection . Ini berarti bahwa PooledConnection ditinggalkan, dan koneksi fisiknya ke database tidak dapat digunakan kembali dan akan ditutup/dibuang ketika akhirnya sampah dikumpulkan (biasanya ketika kumpulan koneksi ingin menutup koneksi fisik, ia akan memanggil close() pada PooledConnection ).
Anda juga perlu menggunakan kumpulan koneksi yang disediakan oleh Server Aplikasi Anda, atau menggunakan kumpulan koneksi tujuan umum seperti DBCP, c3p0 atau BoneCP.