jdbc4 CommunicationsException

Eu tenho uma máquina executando um aplicativo java falando com uma instância mysql em execução na mesma instância. o aplicativo usa drivers jdbc4 do mysql. Eu continuo recebendo com.mysql.jdbc.exceptions.jdbc4.CommunicationsException em momentos aleatórios.

Aqui está toda a mensagem.

Não foi possível abrir a conexão JDBC para transação; exceção aninhada é

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.

Para o mysql, o valor de global 'wait_timeout' e 'interactive_timeout' é configurado para 3600 segundos e 'connect_timeout' é ajustado para 60 segundos. o valor do tempo limite de espera é muito maior do que os 26 segundos (25899 ms). mencionado no traço de exceção.

Eu uso o dbcp para o pool de conexão e aqui está a configuração do bean de origem para a origem de dados.

   <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>

Alguma idéia de por que isso pode estar acontecendo? O uso do c3p0 resolverá o problema?

questionAnswers(4)

yourAnswerToTheQuestion