sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo forzar la reutilización de conexiones en el grupo jdbc?

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.