Если вы используете hibernate в jboss, вы можете настроить его в файле * -ds.xml в каталоге deploy для выполнения некоторого запроса перед установлением соединения из пула соединений:
Например:
<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
Если вы используете свой собственный пул соединений, вы можете написать что-то вроде этого:
Connection getConnectionFromPool() {
try {
//get connection from pool
//execute some simple uery that should always work
} catch (SocketException s) {
//close broken connection and get a new one
}
return connection;
}
Или, может быть, есть механизм для этого в спящем режиме, но я не знаю об этом.
РЕДАКТИРОВАТЬ: хорошо, читая ваш вопрос, я пропустил, что вы используете пул соединений Hibernate. Поэтому проигнорируйте мой ответ и посмотрите здесь: Восстановить соединение Hibernate