У нас есть веб-приложение со стеком Spring, Hibernate, C3P0, Oracle DB Driver (за которым стоит Oracle DB).
Время от времени мы сталкиваемся с блокировками блокировок в течение более длительного периода времени, которые затем уничтожаются на конце БД. (мы знаем, что это вызвано плохим дизайном приложения, и мы это исправим, но не в этом вопросе).
После того как сеанс БД был уничтожен БД, кажется, что пул соединений повторно использует разорванное соединение, что приводит к ошибке:
A PooledConnection that has already signalled a Connection error is still in use!
Another error has occurred [ java.sql.SQLRecoverableException: Closed Connection ] which will not be reported to listeners!
В источнике данных мы настроили
dataSource.setTestConnectionOnCheckin(true);
dataSource.setTestConnectionOnCheckout(true);
Но это не помогло. Мы ожидали, что соединения не пройдут эти тесты, а затем обновятся. Но этого не происходит.
Есть ли у нас какие-либо советы, как воссоздать разорванные связи?