6.6. データベース接続の検証
6.6.1. データベース接続検証設定の指定
概要
データベースメンテナンス、ネットワーク問題、または他の停止イベントにより、JBoss EAP 6 がデータベースへの接続を失うことがあります。データベース接続の検証は、サーバー設定ファイルの <datasource>
セクション内の <validation>
要素を使用して有効にします。以下の手順に従い、JBoss EAP 6 でデータベース接続検証を有効にするデータソース設定を指定してください。
手順6.10 データベース接続検証設定の指定
検証方法の選択
以下のいずれかの検証方法を選択します。<validate-on-match>true</validate-on-match>
<validate-on-match>
オプションがtrue
に設定されている場合は、データ接続が、次の手順で指定された検証メカニズムを使用して接続プールからチェックアウトされるたびに検証されます。接続が有効でない場合は、警告がログに書き込まれ、プール内の次の接続が取得されます。このプロセスは、有効な接続が見つかるまで続行します。プール内の各接続を繰り返し処理しない場合は、<use-fast-fail>
オプションを使用できます。有効な接続がプールにない場合は、新しい接続が作成されます。接続の作成に失敗すると、例外が要求元アプリケーションに返されます。この設定により、最も早いリカバリーが実現されますが、データベースへの負荷が最も大きくなります。ただし、これは、パフォーマンスを気にする必要がない場合は最も安全な方法です。<background-validation>true</background-validation>
<background-validation>
オプションがtrue
に設定されている場合は、<background-validation-millis>
値とともに使用され、バックグラウンド検証実行の頻度を決定します。<background-validation-millis>
パラメーターのデフォルト値は 0 ミリ秒であり、デフォルトで無効になります。この値は<idle-timeout-minutes>
設定と同じ値に設定しないでください。特定のシステムの<background-validation-millis>
値を決定するには注意が必要です。値が小さいと、プールの検証頻度が多くなり、無効な接続がプールからすぐに削除されます。 ただし、値が小さいと、より多くのデータベースリソースが使用されます。値が大きい場合は、接続検証チェックの頻度が少なくなり、より少ないデータベースリソースが使用されますが、デッド接続は長時間検出されません。
注記
<validate-on-match>
オプションがtrue
に設定されている場合は、<background-validation>
オプションをfalse
に設定する必要があります。それとは逆に、<background-validation>
オプションがtrue
に設定されている場合は、<validate-on-match>
オプションをfalse
に設定する必要があります。検証メカニズムの選択
以下のいずれかの検証メカニズムを選択します。<valid-connection-checker> クラス名の指定
これは、使用中の特定の RDBMS に対して最適化されるため、推奨されるメカニズムです。JBoss EAP 6 は、以下の接続チェッカーを提供します。- org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLReplicationValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.novendor.JDBC4ValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker
<check-valid-connection-sql> 用 SQL の指定
接続を検証するために使用する SQL ステートメントを提供します。以下は、Oracle 用接続を検証するために SQL ステートメントをどのように指定するかの例です。<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
MySQL または PostgreSQL の場合は、以下の SQL ステートメントを指定する必要があります。<check-valid-connection-sql>select 1</check-valid-connection-sql>
<exception-sorter> クラス名の設定
例外が致命的とマークされた場合、接続はトランザクションに参加していてもすぐに閉じられます。致命的な接続例外を適切に検出およびクリーンアップするには、例外ソータークラスオプションを使用します。JBoss EAP 6 は、以下の例外ソーターを提供します。- org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.informix.InformixExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter