Mysql
 sql >> Database >  >> RDS >> Mysql

Come forzare il riutilizzo delle connessioni nel pool jdbc?

In realtà non stai utilizzando un pool di connessioni. Un ConnectionPoolDataSource non è destinato ad essere utilizzato direttamente. È inteso come un (speciale) DataSource per PooledConnection oggetti che vengono quindi mantenuti in un pool di connessioni da un (normale) DataSource implementazione che fornisce pool di connessioni.

Uno sviluppatore normale non dovrebbe utilizzare un ConnectionPoolDataSource direttamente, è destinato all'uso con i pool di connessione forniti dai server delle applicazioni o per essere racchiuso in DataSource per uso generale s che ha fornito il pool di connessioni.

Quando una Connection viene richiesto dal pool di connessioni, eseguirà il checkout di un PooledConnection esistente (o richiederne uno nuovo dal suo ConnectionPoolDataSource ), recuperare una Connection e restituirlo all'utente. Quando l'utente chiude la Connection , il PooledConnection segnalerà al pool di connessioni che è di nuovo disponibile.

In questo caso stai creando una PooledConnection , recuperando una Connection da esso e quindi scartando il PooledConnection . Ciò significa che il PooledConnection viene abbandonato e la sua connessione fisica al database non può essere riutilizzata e verrà chiusa/eliminata quando viene infine raccolta i rifiuti (normalmente quando il pool di connessioni vuole chiudere la connessione fisica, chiamerà close() su PooledConnection ).

È necessario utilizzare il pool di connessioni fornito dal server delle applicazioni oppure utilizzare un pool di connessioni generico come DBCP, c3p0 o BoneCP.