JDBC 接続プールとは、特定のデータベースのための再利用可能な接続のグループです。管理コンソールでプールを作成すると、管理者は実際には特定のデータベースへの接続の項目を定義していることになります。
プールを作成するには、まず JDBC ドライバをインストールして統合する必要があります。「接続プールを作成」ページを構築する際は、JDBC ドライバおよびデータベースベンダーに固有の特定のデータを入力する必要があります。処理を開始する前に、次の情報を集めます。
データベースベンダー名
javax.sql.DataSource (ローカルトランザクションのみ) や javax.sql.XADataSource (グローバルトランザクション) などのリソースタイプ
データソースクラス名
データベース名 (URL)、ユーザー名、およびパスワードなどの必要なプロパティー
管理コンソールを使用して、JDBC 接続プールを作成できます。
データベース接続用の JDBC ドライバを as-install/domains/ domain_name/lib/ext にコピーします。または、JDBC ドライバのパスを classpath-prefix に追加して、サーバーを再起動します。
管理コンソールで、「共通操作」ページの「JDBC 接続プールを作成」をクリックします。
接続プールの名前を入力して、リソースのタイプを選択し、データベースベンダーを選択します。「次へ」をクリックします。
管理コンソールに、デフォルトのプール設定と、ベンダーから提供されるデータソースクラスのプロパティーが表示されます。
「Ping」ボタンをクリックして、JDBC 接続プールをテストします。
管理コンソールの左側の区画で、「リソース」、「JDBC リソース」の順にクリックします。
「新規」をクリックします。
「新しい JDBC リソース」ページで、リソースの JNDI 名と、JDBC リソースを関連付ける必要がある JDBC 接続プールを指定します。
「了解」をクリックします。
asadmin create-jdbc-connection-pool コマンドを使用して、JDBC 接続プールを作成します。
JDBC 接続プールを作成するサンプルコマンドを、次に示します。
asadmin create-jdbc-connection-pool --datasourceclassname oracle.jdbc.pool.OracleDataSource --restype javax.sql.DataSource --property user=dbuser:password=dbpassword:url="jdbc:oracle\:thin\:@localhost\:1521\:ORCL" myjdbc_oracle-pool
asadmin create-jdbc-resource コマンドを使用して、この接続プールに関連付ける JDBC リソースを作成します。
JDBC リソースを作成するサンプルコマンドを、次に示します。
asadmin create-jdbc-connection-pool --connectionpoolid myjdbc_oracle-pool jdbc/oracle-resource
asadmin ping-connection-pool コマンドを使用して接続プールに ping を送信し、接続設定が正しいことをテストします。
asadmin ping-connection-pool myjdbc_oracle-pool
JDBC 接続プールのプロパティーを編集するには、asadmin list、get、および set コマンドを使用します。
JDBC 接続プールのリストを表示する、サンプルの list コマンドを示します。
asadmin list myjdbc_oracle-pool
このコマンドの出力例は次のようになります。
domain.resources.jdbc-connection-pool.oracle-pool
JDBC 接続プールのすべてのプロパティーを表示する、サンプルの get コマンドを示します。
asadmin list myjdbc_oracle-pool
JDBC 接続プールのすべてのプロパティーを取得する、サンプルの get コマンドを示します。
asadmin get domain.resources.jdbc-connection-pool.myjdbc_oracle-pool
JDBC 接続プールのプロパティーを設定する、サンプルの get コマンドを示します。
asadmin set domain.resources.jdbc-connection-pool.myjdbc_oracle-pool.steady-pool-size=20
「JDBC 接続プールを編集」ページは、名前を除く既存プールのすべての設定を変更する手段を提供します。
一般設定を変更します。
一般設定の値は、インストールした固有の JDBC ドライバにより異なります。これらの設定は、Java プログラミング言語で記述されたクラスやインタフェースの名前です。
パラメータ |
説明 |
---|---|
データソースクラス名 |
DataSource API または XADataSource API あるいはその両方を実装するベンダー固有のクラス名。このクラスは JDBC ドライバにあります。 |
リソースタイプ |
選択肢には javax.sql.DataSource (ローカルトランザクションに限る)、javax.sql.XADataSource (グローバルトランザクション)、および java.sql.ConnectinPoolDataSource (ローカルトランザクション、パフォーマンス向上の可能性あり) があります。 |
プール設定を変更します。
一連の物理データベース接続はプール内にあります。アプリケーションが接続を要求すると、接続はプールから削除され、アプリケーションが接続を解放すると、接続はプールに返されます。
パラメータ |
説明 |
---|---|
初期および最小プールサイズ |
プール内の接続の最小数。この値は、プールを最初に作成するときの、プールに含まれる接続の数も指定します。 |
最大プールサイズ |
プールに含まれる接続の最大数。 |
プールサイズ変更量 |
プールのサイズを最大プールサイズおよび最小プールサイズに対して拡大および縮小すると、一括処理でプールサイズが変更されます。この値は一括処理での接続の数を指定します。この値を過大に設定すると接続の作成と再利用が遅れ、過小に設定すると効率が落ちます。 |
アイドルタイムアウト |
プールで接続がアイドル状態のままでいられる最長時間を指定します。この時間を過ぎると、接続はプールから削除されます。 |
最大待ち時間 |
接続を要求するアプリケーションが接続タイムアウトになるまでに待つ時間。デフォルトの待ち時間は長いので、アプリケーションがハングアップしているように見える可能性があります。 |
接続検証設定を変更します。
オプションで、アプリケーションサーバーは接続が渡される前にそれを検証することができます。この検証により、ネットワークやデータベースサーバーに障害が発生してデータベースが利用できなくなった場合でも、アプリケーションサーバーが自動的にデータベース接続を再確立できます。接続の検証は追加オーバーヘッドとなるため、パフォーマンスに若干の影響が生じます。
パラメータ |
説明 |
---|---|
接続検証 |
「必須」チェックボックスにチェックを付けて、接続検証を有効にします。 |
検証方法 |
アプリケーションサーバーは、次の 3 つの方法でデータベース接続を検証できます。 auto-commit、metadata、および table。 auto-commit と meta-data - アプリケーションサーバーは、con.getAutoCommit() メソッドと con.getMetaData() メソッドを呼び出して接続を検証します。 auto-commit の検証は、2 つのメソッドを使用して接続を検証します。getAutoCommit() メソッドは auto-commit の現在の状態を取得し、setAutoCommit() は auto-commit の状態を変更します。これにより、データベースへの問い合わせが許可されます。getAutomCommit() がデータベースに問い合わせできるかどうかは、実装に基づきます。実際の物理的な接続は、接続プールなどの別の目的でラップされます。 注 – 多くの JDBC ドライバでは、これらの呼び出しの結果をキャッシュしているので、常に信頼のある検証が行われるとは限りません。呼び出しがキャッシュされるかどうかについて、ドライバベンダーに問い合わせる必要があります。 table - アプリケーションは指定したデータベース表に問い合わせます。表は実在し、アクセス可能である必要がありますが、行は必要ありません。多くの行を持つ既存の表や、すでに頻繁にアクセスされている表を使用しないでください。 |
テーブル名 |
「検証方法」コンボボックスで表を選択した場合は、ここでデータベースのテーブル名を指定します。 |
すべての障害で |
「すべての接続を閉じる」のチェックボックスを選択してある場合、1 つの接続が失敗すると、アプリケーションサーバーはプールに含まれるすべての接続を閉じ、それらを再確立します。そのチェックボックスを選択していない場合は、使用されるときにだけ個々の接続が再確立されます。 |
コンポーネントの呼び出し側以外を許可 |
サーブレットフィルタやライフサイクルモジュールなど、コンポーネント以外の呼び出し側が使用するためのプールを有効にする場合は、このチェックボックスにチェックマークを付けます。 |
トランザクション設定を変更します。
データベースは通常多くのユーザーが同時にアクセスするため、あるトランザクションがデータを読み込もうとするときに別のトランザクションが同じデータを更新する可能性があります。トランザクションの遮断レベルは、更新されるデータがほかのトランザクションに見える度合いを定義します。遮断レベルの詳細については、データベースベンダーのドキュメントを参照してください。
パラメータ |
説明 |
---|---|
非トランザクション接続 |
Application Server がすべての非トランザクション接続を返すようにする場合は、このチェックボックスにチェックマークを付けます。 |
トランザクション遮断 |
プールの接続のトランザクション遮断レベルを選択できるようにします。指定しない場合、接続には JDBC ドライバによって設定されるデフォルトの遮断レベルが適用されます。 |
遮断レベルを保証 |
遮断レベルを指定した場合にだけ適用されます。「保証」チェックボックスを選択すると、プールから取得されるすべての接続が同じ遮断レベルになります。たとえば、最後の使用時に con.setTransactionIsolation を使って接続の遮断レベルをプログラム的に変更した場合、このメカニズムによって状態が指定の遮断レベルに戻されます。 |
プロパティーを変更します。
「追加プロパティー」テーブルで、データベース名 (URL)、ユーザー名、およびパスワードなど、必要なプロパティーを指定できます。データベースベンダーによってプロパティーが異なるため、詳細については、ベンダーのドキュメントを調べてください。
接続リークを診断しやすくし、使い勝手を向上させるため、Application Server 9.1 には接続プールをその作成時点で設定するための新しい属性がいくつか用意されています。
「詳細」タブを開いて、次の属性を指定します。
属性 |
説明 |
名前 |
プロパティーを編集する JDBC 接続プールの名前。ただし、プール名は変更できません。 |
文のタイムアウト |
異常に長い時間実行されているクエリーを終了させるまでの時間 (秒数)。Application Server は、作成された文に対して「QueryTimeout」を設定します。デフォルト値の -1 は、この属性が無効であることを示します。 |
JDBC オブジェクトをラップ |
true に設定すると、アプリケーションは Statement、PreparedStatement、CallableStatement、ResultSet、DatabaseMetaData に対してラップされた JDBC オブジェクトを取得します。デフォルト値は false です。 |
次の表の説明に従って、接続設定を指定します。
属性 |
説明 |
最大で 1 回検証 |
経過するまでに 1 回しか接続が検証されない時間 (秒)。これは、1 つの接続による検証要求の数を減らすのに役立ちます。デフォルト値の 0 は、接続の検証が無効であることを示します。 |
リークタイムアウト |
接続プール内の接続リークを追跡する時間 (秒)。デフォルト値の 0 は、接続リーク追跡が無効であることを示します。接続リーク追跡を有効にすると、「リソースの監視」タブに接続リークの数に関する統計情報が表示されます。このタブを表示するには、「Application Server」->「監視」->「リソース」の順に選択します。 |
リーク再要求 |
このオプションを有効にすると、リーク接続の追跡が完了したあとで、リークした接続がプールにリストアされます。 |
作成再試行回数 |
新しい接続の作成に失敗した場合に行われる試行の回数。デフォルト値の 0 は、接続の再試行が行われないことを示します。 |
再試行間隔 |
接続作成の試行の間隔 (秒数) を指定します。デフォルト値は 10 秒です。この属性は、「作成再試行回数」が 1 以上の場合にのみ使用されます。 |
使用時にのみ接続を登録 |
リソースが実際にメソッドで使用される場合にのみリソースをトランザクションに登録するには、このオプションを有効にします。 |
使用時にのみ関連付け |
接続に対して操作が実行された時点ではじめて接続が関連付けられます。また、トランザクションが完了してコンポーネントメソッドが終了したときに関連付けが解除されるため、物理的な接続を再利用しやすくなります。デフォルト値は false です。 |
スレッドとの関連付け |
接続をスレッドに関連付けるには、このオプションを有効にします。これにより、同じスレッドが接続を必要とするときは、そのスレッドにすでに関連付けられている接続を再利用できるため、プールから接続を取得するオーバーヘッドが発生しません。デフォルト値は false です。 |
接続のマッチング |
プールに対する接続マッチングのオン/オフを切り替えるには、このオプションを使用します。プール内の接続が常に同じ種類であり、プールから選択した接続とリソースアダプタを照合する必要がない場合は、false に設定できます。デフォルト値は false です。 |
最大接続使用数 |
接続をプールで再利用する回数を指定します。指定された回数だけ再利用されると、その接続は閉じられます。これは、たとえば、文リークを回避するのに役立ちます。デフォルト値の 0 は、接続が再利用されないことを示します。 |