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.