Вы должны проверить соединение.
Если вы используете Oracle, вполне вероятно, что вы используете Универсальный пул соединений Oracle . Следующее предполагает, что вы делаете это.
Самый простой способ проверить соединение - это сообщить Oracle, что соединение должно быть проверено при его заимствовании. Это можно сделать с помощью
pool.setValidateConnectionOnBorrow(true);
Но это работает, только если вы удерживаете соединение в течение короткого периода. Если вы заимствуете соединение на более длительное время, вполне вероятно, что соединение будет разорвано, пока вы удерживаете его. В этом случае вы должны явно проверить соединение с помощью
if (connection == null || !((ValidConnection) connection).isValid())
Подробнее см. В документации Oracle .