12.9. データベース接続の検証
データベースのメンテナンス、ネットワークの問題、またはその他の障害により、JBoss EAP からデータベースへの接続が失われることがあります。このような状況から回復するために、データソースのデータベース接続検証を有効にすることができます。
データベース接続の検証を設定するには、検証発生時を定義する検証タイミングメソッド、検証の実行方法を決定する検証メカニズム、および例外の処理方法を定義する例外ソーターを指定します。
検証タイミングメソッドを 1 つ選択します。
- validate-on-match
validate-on-match
メソッドがtrue
に設定されている場合は、データ接続が、次の手順で指定された検証メカニズムを使用して接続プールからチェックアウトされるたびに検証されます。接続が有効でない場合は、警告がログに書き込まれ、プール内の次の接続が取得されます。このプロセスは、有効な接続が見つかるまで続行します。プール内の各接続を繰り返し処理しない場合は、
use-fast-fail
オプションを使用できます。有効な接続がプールにない場合は、新しい接続が作成されます。接続の作成に失敗すると、例外が要求元アプリケーションに返されます。- background-validation
background-validation
メソッドをtrue
に設定すると、使用前にバックグラウンドスレッドで接続が周期的に検証されます。検証の頻度はbackground-validation-millis
プロパティーによって指定されます。background-validation-millis
のデフォルト値は0
で、無効になっています。以下を考慮して
background-validation-millis
プロパティーの値を決定してください。-
この値は
idle-timeout-minutes
設定とは違う値に設定してください。 - 値が小さいほどプールの検証頻度が高くなり、より迅速に無効な接続がプールから削除されます。
- 値が小さいほど使用されるデータベースリソースが多くなります。値が大きいほど接続検証チェックの頻度が低くなり、データベースリソースの使用量が減りますが、無効な接続が検出されない期間が長くなります。
-
この値は
注記次の例に示すように、これらの検証方法は同時に使用できません。
-
validate-on-match
がtrue
に設定されている場合には、background-validation
をfalse
に設定する必要があります。 -
background-validation
がtrue
に設定されている場合は、validate-on-match
をfalse
に設定する必要があります。
これらの検証方法の比較マトリックスについては 検証タイミング方法の比較 を参照してください。
検証メカニズムを 1 つ選択します。
- valid-connection-checker-class-name
検証メカニズムとして
valid-connection-checker-class-name
を使用することが推奨されます。これは、使用中のデータベースの接続を検証するために使用される接続チェッカークラスを指定します。JBoss EAP は以下の接続チェッカーを提供します。-
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
check-valid-connection-sql
を使用して、接続の検証に使用する SQL ステートメントを提供します。以下は、Oracle の接続を検証するために使用する SQL ステートメントの例になります。
select 1 from dual
以下は、MySQL または PostgreSQL の接続を検証するために使用する SQL ステートメントの例になります。
select 1
例外ソータークラス名を設定します。
例外が致命的とマークされた場合、接続はトランザクションに参加していてもすぐに閉じられます。致命的な接続例外を適切に検出およびクリーンアップするには、例外ソータークラスオプションを使用します。データソースタイプに適切な JBoss EAP 例外ソーターを選択します。
-
org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter
-
org.jboss.jca.adapters.jdbc.extensions.informix.InformixExceptionSorter
-
org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter
-
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
-