Sie verwenden nicht wirklich einen Verbindungspool. Eine ConnectionPoolDataSource
ist nicht zur direkten Verwendung bestimmt. Sie ist als (spezielle) DataSource
gedacht für PooledConnection
Objekte, die dann von einer (normalen) DataSource
in einem Verbindungspool gehalten werden Implementierung, die Verbindungspooling bereitstellt.
Ein normaler Entwickler sollte keine ConnectionPoolDataSource
verwenden direkt, es ist für die Verwendung mit Verbindungspools vorgesehen, die von Anwendungsservern bereitgestellt werden, oder um in eine allgemeine DataSource
eingeschlossen zu werden s, das Verbindungspooling bereitstellte.
Wenn eine Verbindung
vom Verbindungspool angefordert wird, wird eine vorhandene PooledConnection
ausgecheckt (oder fordern Sie eine neue von ihrer ConnectionPoolDataSource
an ), eine Verbindung
abrufen und an den Benutzer zurückgeben. Wenn der Benutzer die Verbindung
schließt , die PooledConnection
signalisiert dem Verbindungspool, dass er wieder verfügbar ist.
In diesem Fall erstellen Sie eine PooledConnection
, Abrufen einer Verbindung
daraus entfernen und dann die PooledConnection
verwerfen . Das bedeutet, dass die PooledConnection
wird abgebrochen, und seine physische Verbindung zur Datenbank kann nicht wiederverwendet werden und wird geschlossen/verworfen, wenn es endgültig der Garbage Collection unterzogen wird (normalerweise wird close()
auf der PooledConnection
).
Sie müssen entweder das von Ihrem Anwendungsserver bereitgestellte Verbindungspooling oder einen Allzweck-Verbindungspool wie DBCP, c3p0 oder BoneCP verwenden.