次のように、JDBCTemplate を使用してデータベースに接続しようとしている単一のスレッドがあります。
JDBCTemplate jdbcTemplate = new JdbcTemplate(dataSource);
try{
jdbcTemplate.execute(new CallableStatementCreator() {
@Override
public CallableStatement createCallableStatement(Connection con)
throws SQLException {
return con.prepareCall(query);
}
}, new CallableStatementCallback() {
@Override
public Object doInCallableStatement(CallableStatement cs)
throws SQLException {
cs.setString(1, subscriberID);
cs.execute();
return null;
}
});
} catch (DataAccessException dae) {
throw new CougarFrameworkException(
"Problem removing subscriber from events queue: "
+ subscriberID, dae);
}
上記のコードが DataAccessException または SQLException をスローした場合、スレッドが数秒間待機して再接続を試み、さらに 5 回試行してから断念するようにしたいと考えています。どうすればこれを達成できますか?また、実行中にデータベースがダウンして再び起動した場合、例外をスローして終了するのではなく、プログラムがこれから回復して実行を継続できるようにするにはどうすればよいですか?
前もって感謝します。