Позвольте мне описать мой вопрос -
У меня есть приложение Java - Hibernate как уровень взаимодействия с БД поверх MySQL. Я получаю ошибку сбоя линии связи в моем приложении. Возникновение этой ошибки - очень специфический случай. Я получаю эту ошибку, когда я оставляю MySQL-сервер без присмотра более чем на 6 часов (то есть, когда MySQL не отправляет запросы более чем на 6 часов). Я вставляю описание верхнего уровня исключений ниже и добавляю ссылку на вставку для подробного описания трассировки стека.
javax.persistence.PersistenceException:
org.hibernate.exception.JDBCConnectionException:
Не удается открыть соединение
- вызвано: org.hibernate.exception.JDBCConnectionException:
Не удается открыть соединение
- Вызывается: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Ошибка связи
- Последний пакет, успешно полученный от сервера, был
1,274,868,181,212 миллисекунд назад.
Последний пакет успешно отправлен
сервер был 0 миллисекунд назад.
- Вызывается: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Ошибка связи
- Последний пакет, успешно полученный от сервера, был
1,274,868,181,212 миллисекунд назад.
Последний пакет успешно отправлен
сервер был 0 миллисекунд назад.
- Вызвано: java.net.ConnectException: соединение
отказался: подключиться
ссылка на пастин для дальнейшего исследования - http://pastebin.com/4KujAmgD
Что я понимаю из этих исключений, так это то, что MySQL отказывается принимать любые соединения после периода простоя / отсутствия активности. Я немного прочитал об этом через поиск в Google и узнал, что одним из возможных способов преодоления этого является установка значений для свойств c3p0, поскольку c3p0 поставляется в комплекте с Hibernate. В частности, я прочитал здесь http://www.mchange.com/projects/c3p0/index.html, что установка двух свойств idleConnectionTestPeriod и favouriteTestQuery решит эту проблему для меня. Но эти значения, похоже, не оказали влияния.
Это правильный подход к исправлению? Если нет, как правильно это преодолеть?
Ниже приведены вопросы, связанные с ошибкой канала связи, на stackoverflow.com, но я не нашел удовлетворительного ответа в их ответах.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи
Как обращаться: сбой линии связи
Примечание 1 - я не получаю эту ошибку при непрерывном использовании приложения.
Примечание 2 - Я использую JPA с Hibernate, и, следовательно, мои свойства hibernate.dialect и т. Д. Hibernate находятся в файле persistence.xml в папке META-INF (препятствует ли работе свойства c3p0?)
изменить -
параметры c3p0, которые я опробовал, находятся в комментариях