У меня есть Java-приложение, которое выполняет непрерывные непрерывные быстрые вставки в базу данных MySQL с помощью Spring JDBCTemplate. Через несколько минут, очевидно, что-то происходит с базой данных, которая разрывает соединение с БД, и я получаю исключение
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Я могу перехватить исключение SQLException в коде, поэтому на этом этапе я хотел бы восстановить соединение с базой данных, выйти из блока catch и продолжить.
Как это сделать?
РЕДАКТИРОВАТЬ: вот метод, где ловится исключение:
public int insertRecord(final String sql,final Object[] paramArray, KeyHolder keyHolder) {
Integer retStatus = jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) {
String[] keyColNames=new String[1];
PreparedStatement ps = null;
try {
ps=con.prepareStatement(sql,keyColNames);
if(paramArray!=null){
int size=paramArray.length;
for(int i=0;i<size;i++){
ps.setObject(i+1, paramArray[i]);
}
}
} catch (CannotGetJdbcConnectionException e) {
logger.debug("caught SQLexception, now what should I do?");
con.reconnectToDatabase(); // this method doesnt exist but is what I need!
}
return ps;
}
}, keyHolder);
return retStatus;
}