古い「デュアルから1つ選択」のトリックを使用できますが、これの欠点は、プールから接続を借用するたびに追加のクエリを発行することです。大量の場合、これは無駄です。
JBossは、Oracleで使用する必要がある特別な接続バリデーターを提供します:
<valid-connection-checker-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>
これは、Oracle JDBC Connectionクラスの独自のping()メソッドを利用し、ドライバの基盤となるネットワーキングコードを使用して、接続がまだ有効であるかどうかを判断します。
ただし、接続を借用するたびにこれを実行するのはまだ無駄なので、バックグラウンドスレッドがプール内の接続をチェックし、デッド接続をサイレントに破棄する機能を使用することをお勧めします。これははるかに効率的ですが、接続が 死んでしまうと、バックグラウンドスレッドがチェックを実行する前にそれらを使用しようとすると失敗します。
バックグラウンドチェックを構成する方法については、wikiドキュメントを参照してください(background-validation-millis
を探してください) 。