У меня есть машина, на которой запущено приложение java, которое разговаривает с экземпляром mysql, работающим на том же экземпляре. приложение
использует драйверы jdbc4 от mysql. Я продолжаю получать com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
в случайное время.
Вот и все сообщение.
Не удалось открыть соединение JDBC для транзакции; вложенное исключение
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was25899 milliseconds ago.The last packet sent successfully to the server was 25899 milliseconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
Для mysql значение global 'wait_timeout' и 'interactive_timeout' установлено на 3600 секунд, а 'connect_timeout' установлено на 60 секунд. значение времени ожидания намного выше, чем 26 секунд (25899 мсек). упоминается в следе исключения.
Я использую dbcp для пула соединений, и вот конфигурация bean-компонента Spring для источника данных.
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db"/>
<property name="username" value="xxx"/>
<property name="password" value="xxx" />
<property name="poolPreparedStatements" value="false" />
<property name="maxActive" value="3" />
<property name="maxIdle" value="3" />
</bean>
Есть идеи, почему это может происходить? Решит ли проблема использование c3p0?