接続プールとは、データベースなどに接続する場合に、要求されるたびに接続を作成するのではなく、接続をプーリング(保持)して再利用するという機能です。このため、接続プールを使用することにより、同一ユーザからのアプリケーションから接続する回数が軽減し、接続を確立するアプリケーションの負荷も軽減されます。
ネーミングサービスに登録された以下のリソースに対して接続要求した場合に接続がプーリングされます。
コネクタリソース
JDBCリソース
JMS接続ファクトリ
データベースなどから実際に獲得した接続のことを物理接続と呼び、接続プールで再利用される接続のことを論理接続と呼びます。
接続プールを使用する場合、通常はInterstage側で接続がプーリングされます。接続プールはリソースに対して接続要求を行うアプリケーションが動作する各サーバーインスタンスに生成されます。接続プールの管理はInterstageが行うため、接続プールのチューニング機能が使用できます。
アプリケーションが獲得したConnectionオブジェクトに対してcloseメソッドを実行すると、物理接続に対して削除要求(closeメソッドの実行)を行わずに接続プールに返却されて再利用されます。(注1)
以下の図はJDBCリソースを使用してデータベースに接続した場合の例です。
注1)トランザクション内で接続を獲得した場合はトランザクション完了時にプールに返却されます。
JDBC接続プールの無効化
JDBC接続プールの場合、使用するJDBCドライバ側で接続プールする機能を提供している場合があります。このため、Interstage側のJDBC接続プールを無効とすることもできます。この場合、接続プールのチューニング機能や監視機能が一部利用できません。詳細は各機能の説明を参照してください。
JDBC接続プールを無効とすると、アプリケーションが獲得したConnectionオブジェクトに対してcloseメソッドを実行すると、すぐに物理接続に対して削除要求(closeメソッドの実行)を行います。削除要求された接続をどのように扱うかについては、JDBCドライバ側の仕様に依存します。
以下の図はJDBCリソースを使用してデータベースに接続した場合の例です。
接続プールの生成単位
接続プールは、各サーバーインスタンスにそれぞれ生成されます。(注2)
以下の図はJDBCリソースを使用してデータベースに接続した場合の例です。
アプリケーションがConnectionオブジェクトを使用していない間、接続プールにプーリングされている状態になります。プーリングされているコネクションは、以下のタイミングで破棄されます。
アイドルタイムアウトが発生した時
接続検証に失敗した時
サーバーインスタンスが停止した時
注2)Java EEアプリケーションクライアントまたはJava SEスタンドアロンアプリケーションの場合、クライアントのプロセスに接続プールが作成されます。この接続プールはサーバ側の接続プールの定義項目の値を使用して作成されます。