У меня есть приложение Java под Tomcat, подключающееся к базам данных Postgre и MySQL.Каждый раз, когда я обращаюсь к базе данных из Java (через некоторое время), она всегда дает сбой.Я проверил журнал Tomcat и обнаружил следующее:
Последний пакет, успешно отправленный на сервер, был 85,313,128 миллисекунд назад.на
длиннее, чем сконфигурированное сервером значение wait_timeout.Чтобы избежать этой проблемы, следует рассмотреть возможность истечения срока действия и / или проверки допустимости подключения перед использованием в приложении, увеличения значений, настроенных сервером для тайм-аутов клиента, или использования свойства подключения Connector / J 'autoReconnect = true'.
Я проверил этот вопрос , но не совсем понимаю решение (или применимо ли оно к моему делу) или почему это происходит.
Полагаю, проблема в том, чтоБаза данных Postgre / MySQL слишком долго простаивала, но когда я получаю доступ к базе данных с помощью Java, я открываю соединение и всегда закрываю его по окончании, поэтому не понимаю, почему соединение должно оставаться открытым так долго.
У кого-нибудь есть идеи?
ОБНОВЛЕНИЕ:
Я не использую C3PO ... Я подключаюсь с:
Datasource d = context.lookup("....");
Connection c = d.getConnection();
И отключаюсь с:
c.close();
А контекст для MySQL выглядит так:
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="200" maxIdle="15" maxWait="-1" name="jdbc/project" password="...." type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/project" username="..."/>
<ResourceLink global="jdbc/project" name="jdbc/project" type="javax.sql.DataSource"/>