Business Components for Javaバージョン3.2から、接続プールがデフォルトの動作になりました。以前は各アプリケーション・モジュール・インスタンスに対して1つのJDBC接続を作成し、この接続をインスタンスの切断時に破棄していましたが、アプリケーション・モジュール・インスタンスで接続プールを再利用できるようになりました。
Business Components for Javaのこのリリースでは、アプリケーション・モジュール・プールと接続プールの両方に多くの新機能が追加され、どちらも新しい共通のクラス構造を使用して実装されています。
データベース接続の作成は時間のかかる処理で、データそのものの取得よりも時間がかかる場合があります。接続プールを使用すると、データベース接続を作成する必要がなくなり、クライアントの応答時間が短縮されます。接続を作成するかわりに、すでに存在するアプリケーション・モジュール・インスタンスの接続を再利用します。
JDBC接続URLごとに1つの接続プールが用意されます。この中には、ユーザー名とパスワードが定義されています。接続URLのサンプルは次のとおりです。
jdbc:oracle:thin:scott/tiger@myhost:1521:ORCL
たとえば、3つの異なるデータベース(Oracle9i、Oracle Liteおよび外部データベース)を使用している場合、次の接続タイプには異なる接続プールが用意されます。
Oracle9i(ユーザー名jsm、パスワードtiger)
Oracle9i(ユーザー名scott、パスワードtiger)
Oracle Lite(ユーザー名scott、パスワードtiger)
外部データベース(ユーザー名pam、パスワードtiger)
つまり接続プールは、多数のユーザーが同じユーザー名とパスワードを使用して1つのデータベースにログインする場合に特に役立ちます。
Business Components for Javaフレームワークには、プールを管理するための接続プール・マネージャが用意されています。最上位レベルのアプリケーション・モジュール・インスタンスでデータベース接続が必要になると、次の順序でイベントが発生します。
アプリケーション・モジュール・インスタンスが、JDBC接続URLの指定に従い、接続プール・マネージャに接続を要求します。
接続プール・マネージャは、プール内で使用できる接続を検索します。使用できる接続がない場合は、(決められた最大数を上限に)接続を作成します。接続を作成できない場合は、接続が使用できるようになるまで(タイムアウト値の範囲で)待機します。
アプリケーション・モジュール・インスタンスが切断されると、接続がプールに戻ります。
ビジネス・ロジック層のJVMごとに、1つの接続プール・マネージャが用意されます。接続は、解放されるかJVMが停止するまでプールに保持されます。デフォルトの最大接続数は非常に大きな値で、基本的には、データベース・ドライバでサポートしている接続数になります。
デフォルトの動作の他に、次のオプションがあります。
プール内の最大接続数および初期接続数を設定できます。
接続プールを無効にできます。
接続のタイムアウト値まで待機するように設定できます。
カスタム接続プール・マネージャを作成し、使用できます。