En realidad, no está utilizando un grupo de conexiones. Un ConnectionPoolDataSource
no está destinado a ser utilizado directamente. Está pensado como un DataSource
(especial) para PooledConnection
objetos que luego se mantienen en un grupo de conexiones por un DataSource
(normal) implementación que proporciona agrupación de conexiones.
Un desarrollador normal no debería usar un ConnectionPoolDataSource
directamente, está diseñado para usarse con grupos de conexiones proporcionados por servidores de aplicaciones, o para envolverse en DataSource
de uso general s que proporcionaron agrupación de conexiones.
Cuando una Connection
se solicita desde el grupo de conexiones, verificará una PooledConnection
existente (o solicitar uno nuevo desde su ConnectionPoolDataSource
), recuperar una Connection
y devolver eso al usuario. Cuando el usuario cierra la Connection
, la PooledConnection
indicará al grupo de conexiones que está disponible nuevamente.
En este caso, está creando una PooledConnection
, recuperando una Connection
de él y luego descartar la PooledConnection
. Esto significa que PooledConnection
se abandona, y su conexión física a la base de datos no se puede reutilizar y se cerrará/descartará cuando finalmente se recopile la basura (normalmente, cuando el grupo de conexiones quiere cerrar la conexión física, llamará a close()
en la PooledConnection
).
Debe utilizar la agrupación de conexiones proporcionada por su servidor de aplicaciones o utilizar una agrupación de conexiones de propósito general como DBCP, c3p0 o BoneCP.