私は時々クエリを実行するときにmysqlサーバがハングアップする問題があります。私は春のJdbcTemplateを使用してそれに接続しています。 JdbcTemplateにsetTimeoutメソッドがあるのが分かりましたが、タイムアウトが発生したかどうかを確認する方法がわかりません。JdbcTemplate.setQueryTimeoutのタイムアウトのケースをキャプチャする必要があります
try {
JdbcTemplate template = new JdbcTemplate(dataSource);
template.setQueryTimeout(3);
SqlRowSet rs = template.queryForRowSet(sql);
} catch (DataAccessException e) {
String msg = "Can't connect to database.";
response.addError(msg + " " + e);
logger.error(msg, e);
return response;
}
が、私は、データベースがダウンした場合、これは正常に動作していることを知っているが、私は場合、クエリは、タイムアウトの結果として停止したかどうかをテストする、またはするかどうかはわかりません。私はこのようにそれを呼んでいますクエリは正常に実行され、レコードは返されませんでした。
私の問題に加えて、実際にサーバーが掛かっている状態を実際に再現することができないため、私自身は実験できません。チェックしなければならない特定のタイプの例外があるか、DataAccessExceptionがスローされますか?あるいは、SqlRowSetでチェックできるものがありますか?
QueryTimeoutExceptionはDataAccessExceptionを拡張しているので、何もする必要はありません。ありがとう! – Zip184