2

jdbc接続が無効になった場合、意図的に閉じられた可能性があります。または、何らかのトランザクションが無効にして閉じた可能性があります。接続を無効にした原因を正確に知る方法はありますか?痕跡はありますか?取得して確認できる接続に残しました。

オフラインになったサーバーを検出する必要がある状況に直面しています。これを行う方法は次のとおりです。接続プールから接続を借用しようとする操作の場合、その接続が有効かどうかを確認してください。そうでない場合、および有効でない理由がデータベースへの接続に失敗した場合、propertychange を起動し、サブスクライバーに変更を通知すると、サブスクライバーはダイアログをポップアップしてすべての操作をブロックし、クエリを開始します。 5 秒ごとにデータベースにアクセスして、データベースが戻っているかどうかを確認します。自分の状況を明確にしたことを願っています

4

2 に答える 2

2

あなたに代わって接続を検証する接続プーリングライブラリを使用することをお勧めします。データベースの操作中に、接続の状態を自動的にテストし、既存の接続が無効な場合は新しい接続を作成します。

C3P0 接続プーリング ライブラリについては、次のドキュメントを確認してください。

http://www.mchange.com/projects/c3p0/#configuring_connection_testing

于 2013-10-08T20:48:33.330 に答える
0

通常、@PeterLawrey が提案する単純な SQL ステートメントを発行するなどして、古い接続を使用しようとすると、問題の詳細を含む SQLException がスローされます。例外をキャッチし、そのメソッドgetErrorCode()getSQLState()メソッドによって返されるものを分析します。SQLSTATE 値は標準化されていますが、それほど細かくはありません。ベンダー エラー コードは詳細情報を提供する場合がありますが、異なるデータベース プラットフォームに接続すると異なることに注意してください。

于 2013-10-08T20:58:23.443 に答える