実際には接続プールを使用していません。 ConnectionPoolDataSource 直接使用するためのものではありません。これは(特別な) DataSourceとして意図されています PooledConnectionの場合 その後、(通常の) DataSourceによって接続プールに保持されるオブジェクト 接続プールを提供する実装。
通常の開発者はConnectionPoolDataSourceを使用しないでください 直接、アプリケーションサーバーによって提供される接続プールで使用すること、または汎用の DataSourceにラップすることを目的としています。 ■接続プールを提供しました。
接続の場合 接続プールから要求された場合、既存の PooledConnectionをチェックアウトします (または、 ConnectionPoolDataSourceから新しいものをリクエストします )、 Connectionを取得します それをユーザーに返します。ユーザーがConnectionを閉じたとき 、 PooledConnection 接続プールに再び使用可能であることを通知します。
この場合、 PooledConnectionを作成しています 、接続を取得する そこからPooledConnectionを破棄します 。これは、 PooledConnectionが が破棄され、データベースへの物理接続は再利用できず、最終的にガベージコレクションが行われるときに閉じ/破棄されます(通常、接続プールが物理接続を閉じたい場合は、 close()> PooledConnectionで 。
アプリケーションサーバーが提供する接続プールを使用するか、DBCP、c3p0、BoneCPなどの汎用接続プールを使用する必要があります。