1

信頼性が高く効率的な方法で、JDBC を使用して切断された接続をどのように検出しますか? 現在、Vertica JDBC ドライバーを使用しています。どのノードに接続しているかを常に制御する必要があるため、接続プールを使用できるとは思いません。これまでに考えたこと:

  1. SQLException が失われた接続であると想定します。信頼できないようです。
  2. ex.getCause を確認し、ソケット例外を探します。原因を確認することが良い習慣であるかどうかはわかりません。
  3. 接続が失われた場合であることがわかっているエラーコードを確認してください。また、少し信頼できないようです。

編集: isValid と isClosed を試しました。isValid は例外をスローし、isClosed は関係なく常に false を返します。

4

1 に答える 1

1

バージョン 1.6 から、理論的にはConnection.isValidメソッドを使用できますが、すべてのベンダーがサポートしているかどうかはわかりません。もう 1 つの方法は、接続を管理する接続プールを使用することです。それらから接続を取得し、不要になったら解放します。接続プールは、接続を維持する責任を負い、常に有効な接続を提供します。

于 2013-09-26T17:20:37.513 に答える