2017-12-07 12 views
0

IBMのドキュメントに従って: パージポリシー 古い接続または致命的な接続エラーが検出された場合に接続をパージする方法を指定します。 有効な値はEntirePoolおよびFailingConnectionOnlyです。どのようにしてサーバーが接続が失効したことを知ることができますか?

質問: どのようにサーバーが接続が失効したことを知ることができますか?すべての接続が古くなったり、時間が経過するとすぐに(すぐに)プールをパージしますか?

リープ時間が180秒であると言ってください。刈り取りスレッドが最後に3:05 PMに実行され、接続が午後3:06に古くなったとすると、サーバーは3:06 PMそのプールをパージしますか、パージは午後3時08分にのみ行われますか? 3:06と3:08の間にクライアントが接続された接続オブジェクトを取得する危険性はありますか?

私が参照してるIBM文書は次のとおりです。 https://www.ibm.com/support/knowledgecenter/en/ssw_i5_54/rzamy/50/admin/help/udat_conpoolset.html

答えて

1

失効した接続は、次の方法で識別されます

  1. JDBC操作がSQLRecoverableExceptionまたはSQLNonTransientConnectionException、または一般のSQLExceptionと上げることを行っていますアプリケーションサーバに組み込まれているSQL状態またはエラーコード。 SQLの状態とエラーコードの特定のリストについては、DatabaseHelperのSQLStateマッピングとそのデータベースごとのさまざまなサブクラスを参照してください。
  2. JDBCドライバのConnectionEventListener.connectionErrorOccurredは、接続が悪化したことをアプリケーションサーバーに通知します。

アプリケーションサーバーは、接続が正常に行われなかったことを認識すると、その接続をプールに戻しません。共有スコープ外の後続の要求では、同じ接続が確立されることはありません。

パージポリシーは、古い接続が発生したときにプール内にある他の接続でアプリケーションサーバーが実行する内容を決定します。アプリケーションサーバーは、プール(EntirePoolオプション)からすべての接続を積極的にパージすることも、他の接続を残すこともできます(FailingConnectionOnlyオプション)。プール内のすべての接続を確認してから渡すことができます(ValidateAllConnectionsオプション)。

上記のプロパティー値は、WebSphere Application Server Libertyのものです。従来型を使用している場合、ValidateAllConnectionsはFailingConectionOnlyとdefaultPretestOptimizationOverride = trueの組み合わせとして実行されます。

関連する問題