O Tomcat JDBC Conencton Pool + MySQL fornece problemas de "tubulação quebrada", mesmo com validação de conexão

Estou lutando com a configuração do Tomcat JDBC Connection Pool para obter confiabilidade. A questão atual é que, no ambiente de teste, tenho esse scanerio no webapp:

dia 1: tudo funciona bemdia 2: o webapp não pode se comunicar com o MySQL por várias horas, muitos "tubos quebrados" nos logsdia 3: surpreendentemente, tudo funciona bem novamente (sem ingerência ou reinício)

Eu configureivalidationInterval, validationQuery, validationTimeout. Esta é a minha configuração de fonte de dados:

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
    destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="username" value="${dbUser}" />
    <property name="password" value="${dbPass}" />
    <property name="url" value="${dbUrl}" />
    <property name="defaultAutoCommit" value="false" />
    <property name="defaultTransactionIsolation">
    <util:constant static-field="java.sql.Connection.TRANSACTION_SERIALIZABLE" />
    </property>

    <property name="maxActive" value="300" />
    <property name="maxIdle" value="25" />
    <property name="initialSize" value="5" />

    <property name="validationInterval" value="5000" />
    <property name="validationQuery" value="SELECT 1"/>
    <property name="validationQueryTimeout" value="3" />

    <property name="minIdle" value="5" />
    <property name="initSQL" value="SET time_zone = '+00:00';" />
</bean>

Eu não tenhoautoReconnect=true parâmetro no URL de conexão, apenas codificação UTF8.

O erro exato é:

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
The last packet successfully received from the server was 38,700,615
milliseconds ago.  The last packet sent successfully to the server was
38,700,615 milliseconds ago. 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.
Caused by: java.net.SocketException: Broken pipe

questionAnswers(2)

yourAnswerToTheQuestion