れる方法はありましては、JBossの接続プールの再接続にOracleの場合の接続ちたいと思います。?

StackOverflow https://stackoverflow.com/questions/128527

質問

当社JBoss ーラアミューズメントパークが別のサーバーついにあることが課題とJBoss.方法を教えてくださいJBossの再接続にOracleの場合、接続が悪いない図の接続落とされるのでしょうか。

役に立ちましたか?

解決

ありが通常の設定オプションをプールするための検証のクエリを実行するには?場合は、検証のクエリを実行が成功すると、プールを返します。場合、クエリが実行されないため、プール新規作成となります。

JBoss Wiki 書類の様々な属性のプールがあります。

<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>

のように思われています。

他のヒント

も古い"を選択し1からデュアル"トリック、下振れのことに関係のある仕事をしている、別のクエリ一時借入からの接続にプールがあります。高量は無駄が多いのです。

JBossを提供す特別な接続方法バリデータを用いるべきであるOracle:

<valid-connection-checker-class-name>
    org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>

この独自のping()メソッドはOracle JDBC接続のクラスを使用してドライバの基礎となるネットワークコードするかどうかを判断する接続。

しかし、まだまだ無駄な実行このひと時間を接続する際には、借入いただいた方がよいと思いますの使用の施設を背景にスレッドチェックの接続にプール、黙々としては死んでした。このほうがずっと効率的な手段とした場合には、接続 く、解決しようとする問題に最適な使用の前に背景のスレッド動を行ってチェックに失敗します。

を参照 wiki docs 設定の仕方については、背景の確認を探す background-validation-millis).

なrep、コメントを、この形式の答えです。の 'Select 1 from dual' とskaffmanの org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker 方法等は、接続をチェックが提供するような言えます。また逆コンパイルをoracle jdbcドライバーのためのブ運動、Oracle社の内部実装にpingを実行す 'Select 'x' from dual'.Natch.

JBossには、2つの方法を検証す接続方法:-Pingや -クエリベー

利用できなどに必要です。この予定は、別々のスレッドとして期間定義されたデータソース設定ファイルを指定します。

<background-validation>true</background-validation> <background-validation-minutes>1</background-validation-minutes>

時間の場合は右oracleドライバーでJbossはありませんが、できればclasscast又は関連するエラーが接続可能なドロップアウトからの接続にプールがあります。の作成を行うことができ独自のConnectionValidatorクラスの実施により org.jboss.resource.adapter.jdbc.ValidConnectionChecker インタフェース。このインタフェースからコミュニケーション法"isValidConnection()"と期待'NULL"を返すために有効な接続します。

Ex:

public class OracleValidConnectionChecker implements ValidConnectionChecker, Serializable {

   private Method ping;

   // The timeout (apparently the timeout is ignored?)
   private static Object[] params = new Object[] { new Integer(5000) };

   public SQLException isValidConnection(Connection c) {

       try {
           Integer status = (Integer) ping.invoke(c, params);

           if (status.intValue() < 0) {
               return new SQLException("pingDatabase failed status=" + status);
           }

       }
       catch (Exception e) {
           log.warn("Unexpected error in pingDatabase", e);
       }

       // OK
       return null;
   }
}

まっており、最近では、変動要求の取扱い障害による孤児oracle DBMS_LOCK セッションロックが保有を無期限にクライアント側の接続プールがあります。

これらのシングソリューション軍セッション有効期限は30分のものに影響しませんアプリの操作

<check-valid-connection-sql>select case when 30/60/24 > sysdate-LOGON_TIME then 1 else 1/0 end 
from V$SESSION where AUDSID = userenv('SESSIONID')</check-valid-connection-sql>

このような場の一部で遅くなって取得プロセスからプールがあります。必ず試験す。

少し更新@skaffmanの答えです。にJBoss7使"クラス名"属性を設定する場合に有効な接続のチェッカーパッケージもは異なる:

<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker" />

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top