Hibernate теряет соединение с базой данных через несколько минут и отправляет такую ошибку:
org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN:
Ошибка SQL: 0, SQLState: 08S01 paź 18, 2018 23:17:40 PM
org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ОШИБКА:
Последний пакет успешно получен с серверабыло 363 452 миллисекунды назад.Последний пакет, успешно отправленный на сервер, был 363 493 миллисекунды назад.длиннее, чем сконфигурированное сервером значение 'interactive_timeout'.Чтобы избежать этой проблемы, следует рассмотреть возможность истечения срока действия и / или проверки допустимости соединения перед использованием в приложении, увеличения значений, настроенных сервером для тайм-аутов клиента, или использования свойства соединения Connector / J 'autoReconnect = true'.
Я добавил autoreconnect = true, но он не работал, и ошибка все еще произошла.
Затем я создал DatabaseConnectionController, который имеет следующую функцию:
public static EntityManagerFactory getEntityManagerFactory() {
if (entityManagerFactory != null && entityManagerFactory.isOpen()) {
return entityManagerFactory;
} else {
return requestNewConnection();
}
}
Проблема все еще возникла, и яначал искать ответы в гугле, я добавил несколько строк в файл persistance.xml:
<property name="hibernate.dbcp.validationQuery" value="SELECT 1" />
<property name="hibernate.dbcp.testOnBorrow" value="true" />
<property name="hibernate.dbcp.validationInterval" value="60000" />
<property name="hibernate.dbcp.testOnReturn" value="true" />
Это также не решило мою проблему.
Hibernate не переподключается к базе данных автоматическив первый раз он просто отправляет сообщение об ошибке, но при отправке второй запрос автоматически переподключается к базе данных.
Как настроить автоматическое переподключение после отключения или как перехватить эту ошибку и повторить запрос вкод?