Pessoal,
Estou com um problema que vem ocorrendo a algum tempo mas não consigo resolver. Depois de algum tempo sem chamar nenhuma conexão do datasource o erro a abaixo é lançado.
Erro:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 75.136.730 milliseconds ago. The last packet sent successfully to the server was 75.136.731 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.
Já tentei resolver das seguintes formas, mas o problema persiste:
- Coloquei o wait_timeout como -1
- Testei com outra versão do driver jdbc
- Conferi todas as minhas consultas e todas estão sendo abertas e fechadas corretamente, tanto que se eu não ficar muito tempo sem usar ele continua funcionando perfeitamente. Mas depois de algumas horas sem uso o erro ocorre.
- Coloquei o autoReconnect como true
- Coloquei o autoReconnectForPools como true
- Coloquei o testConnectionOnCheckout="true"
Segue meu context.xml. Não estou usando nenhum framework de persistencia, todas as consultas estão sendo feitas com JDBC puro.
<?xml version=“1.0” encoding=“UTF-8”?>
<Context reloadable=“true”>
<Resource
name=“jdbc/hotspot”
auth=“Container”
type=“javax.sql.DataSource”
url=“jdbc:mysql://192.168.0.2/hotspotcentral?autoReconnect=true&zeroDateTimeBehavior=convertToNull&autoReconnectForPools=true”
driverClassName=“com.mysql.jdbc.Driver”
username=“usuario”
password=“password”
maxActive=“100”
maxIdle=“30”
maxWait="-1"
testConnectionOnCheckout=“true”
preferredTestQuery=“select 1” />
</Context>
Enfim, já tentei várias coisas e não consegui resolver o problema, será que alguém poderia me ajudar!?