Будьте в спящем режиме Отказ Коммуникационного канала в В спящем режиме Основанное приложение Сервлета Java, приводимое в действие MySQL

Позвольте мне описать свой вопрос -

У меня есть JAVA-приложение - В спящем режиме как слой взаимодействия через интерфейс DB по MySQL. Я получаю ошибку отказа коммуникационного канала в своем приложении. Происшествие этой ошибки является очень конкретным случаем. Я получаю эту ошибку, Когда я оставляю mysql сервер необслуживаемым в течение больше, чем приблизительно 6 часов (т.е. когда нет никаких запросов, выпущенных к MySQL в течение больше, чем приблизительно 6 часов). Я вставляю главное описание уровня 'исключения' ниже и добавляю pastebin ссылку для подробного stacktrace описания.

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:В соединении отказано: подключение

ссылка на pastebin для дальнейшего расследования - http://pastebin.com/4KujAmgD

То, что я понимаю от этих операторов исключения, - то, что MySQL отказывается брать в любых соединениях после периода неактивного действия / нулевого действия. Я читал немного об этом через поиск Google и узнал тот из возможных способов преодолеть, это к установленным значениям для c3p0 свойств, когда c3p0 прибывает связанный, в спящем режиме. А именно, я прочитал отсюда http://www.mchange.com/projects/c3p0/index.html, что, устанавливая два свойства idleConnectionTestPeriod и preferredTestQuery решит это для меня. Но эти значения, кажется, не имели эффект.

Действительно ли это - корректный подход к фиксации этого? В противном случае, что правильный путь состоит в том, чтобы преобладать над этим?

Следующее является связанными вопросами об Отказе Коммуникационного канала по stackoverflow.com, но я не нашел удовлетворительный ответ в их ответах. com.mysql.jdbc.exceptions.jdbc4. Отказ канала CommunicationsException:Communications Как обработать: отказ Коммуникационного канала

Примечание 1 - я не получаю эту ошибку, когда я использую свое приложение continuosly. Примечание 2 - я использую JPA с, в спящем режиме и следовательно мой hibernate.dialect, и т.д. в спящем режиме, свойства находятся в рамках persistence.xml в папке META-INF (который препятствует тому, чтобы c3p0 свойства работали?)

редактирование - c3p0 параметры, которые я испытал, находятся в комментариях

7
задан Community 23 May 2017 в 12:25
поделиться

1 ответ

У меня уже была такая проблема. Похоже, что сервер MySQL таймаутит ваше соединение. По умолчанию таймаут равен 28800, что составляет 8 часов. Пожалуйста, обратитесь к этой ссылке для получения более подробной информации.

http://shengchien.blogspot.com/2009/10/hibernate-c3p0-and-mysql.html

Надеюсь, это будет полезно для вас.

5
ответ дан 7 December 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: