ページの先頭行へ戻る
Symfoware Server V12.1.x アプリケーション開発ガイド(JDBCドライバ編)
FUJITSU Software

2.1.2 コネクションプーリング

コネクションプーリングとは、データベースに接続する場合に、要求されるたびにコネクションを作成するのではなく、コネクションをプール(保持)して再利用する機能です。

このため、コネクションプーリングを使用することにより、同一ユーザのアプリケーションからデータベースへ接続する回数が軽減し、データベースへのコネクションを確立するアプリケーションの負荷も軽減されます。

コネクションプーリングを使用する場合、以下の2種類の方式から選択できます。

Interstage Application Server 9.0.0以降と連携する場合には、Interstage Application Serverでコネクションプーリングを行う方式を推奨します。

2.1.2.1 Interstage Application Serverでのコネクションプーリング

Interstage Application Serverでコネクションプーリングを行うことにより、Interstage Application Serverが提供している以下の機能が利用可能となります。

また、Interstage Application Serverでコネクションプーリングを行う場合は、以下の手順が不要となります。

参照

  • Interstage Application Serverのコネクションプーリングの詳細については、“Interstage Application Server J2EE ユーザーズガイド”を参照してください。

  • Interstage Application ServerによるJDBCデータソース登録の詳細については、“Interstage 管理コンソールヘルプ”または“Interstage Application Server リファレンスマニュアル(コマンド編)”を参照してください。

注意

  • 最大コネクション数で設定された値以上のコネクション要求が発生した場合、プールにコネクションが返却されるのを待ちます。

  • コネクションタイムアウト値を超えてもコネクションが返却されない場合、エラーを返却します。

  • コネクションタイムアウト値に0を指定した場合、JDBCドライバと同様に即座にエラーを返却します。

2.1.2.2 JDBCドライバでのコネクションプーリング

コネクションプーリングについて、以下に分類して説明します。

JDBCドライバの動作

JDBCドライバのコネクションプーリング時の動作について、以下に説明します。

コネクション接続

初回接続時は、 コネクションプーリングを使用しない場合と同じように、データベースへ接続します。次回の接続要求をした場合でも、プールしているコネクションがすべて使用中の場合には、新規にデータベースへ接続します。

また、最大コネクション数で設定された値以上のコネクション要求が発生した場合、JDBCドライバがエラーを返却します。

コネクションのプール(保持)と再利用

JDBCドライバでは、データソース接続に設定された“最大プールコネクション数”に達するまで、コネクションを保持していきます。接続要求をした際、プールしているコネクションの中に未使用のものが存在すると、事前に接続したコネクションを再利用します。その後、プールしているコネクション数以上に接続要求が重なると、未使用のコネクションが存在しないため、新たに接続してコネクションの接続本数は増加(最大コネクション数まで)していきます。

コネクションの切断

コネクションプーリング中は、アプリケーションでcloseメソッドを実施しても、データベースとの物理的なコネクションの切断を行いません。以下の場合に、データベースとの物理的なコネクションを切断します。

  • プロセスが終了する場合には、データベースとの物理的なコネクションをすべて切断します。

  • 処理途中においても、同時に接続要求が重なり、最大プールコネクション数を超えるコネクションが接続された場合には、そのクローズ要求で、データベースとの物理的なコネクションを切断します(最大プールコネクション数内に収まるように調整します)。

データソースとプロセスの関係

複数のプロセスから同一データソースを使用する場合、データソースに登録したコネクション数(最大コネクション数、最大プールコネクション数)はJavaのプロセスごとに対応します。データソース登録の詳細については、“5.2.3 JDBCデータソース登録ツール”を参照してください。

以下の例では、データソースに最大コネクション数を16、最大プールコネクション数を5として登録しています。この時、Javaアプリケーション1、Javaアプリケーション2それぞれ16まで接続が可能で、コネクションをそれぞれ5つプーリングします。