我有一个线程试图连接到使用JdbcTemplate的一个数据库,如下所示重新连接到数据库x次:如何让一个线程尝试使用的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次,然后放弃。我怎样才能做到这一点?另外,如果在执行期间数据库关闭并再次出现,我如何确保我的程序从此恢复并继续运行而不是抛出异常并退出?
在此先感谢。
我会推荐使用Spring Retry模板而不是重试自定义代码。 – 2017-09-12 20:23:04