1

データベース接続でタイムアウトが発生していたので、主にDBCPを使用することにしました。理論的には、「検証クエリ」を定義すると、DBCP はデフォルトで、接続を使用する前にそのクエリを実行するため、接続が正常であることが常にわかります。

2週間前にセットアップしましたが、うまくいったようです。ただし、昨夜、接続でタイムアウト例外が発生しました。

私の開発マシンでは、コードは MySQL の再起動後も問題なく存続するため、DBCP何かを行っていると思います。

これを調査するにはどうすればよいですか?この目的で DBCP を使用しますか?

(質問を読みやすくするために、50行程度の詳細を削除しました。重要な情報が欠落している場合はお知らせください)。

編集:始める前にこの質問を読むべきだったと思います...

4

1 に答える 1

1

これは常に正しいとは限りません。私も同様の問題を経験しましたが、DBCP のデフォルトの動作は十分に文書化されていないことが判明しました。

アイドル状態の接続を消去するには、エビクションの実行間隔を設定する必要があります。これは、setTimeBetweenEvictionRunsMillis を呼び出して、SharedPoolDataSource オブジェクトで設定できます。これが設定されていない場合、デフォルト値は負になり、スレッドは実行されません!

于 2009-08-18T06:32:28.173 に答える