Algo está mal con el agrupador de conexiones Hibernate DB c3p0

Desde la última publicación, hice todos los cambios sugeridos, pero este problema todavía me persigue. Aquí está el error que recibo:

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 44,499,102 milliseconds ago. 

Aquí está mi hibernate.cfg.xml

     org.hibernate.connection.C3P0ConnectionProvider com.mysql.jdbc.Driver  true true true 5 150 0 10 100  30  jdbc:mysql://!secret!autoReconnect=true !secret! !secret! <!-- 10 --> true org.hibernate.dialect.MySQLDialect update thread     

y c3p0.properties

 c3p0.preferredTestQuery=select 1 from dual c3p0.maxConnectionAge=3600 c3p0.testConnectionOnCheckin=true c3p0.testConnectionOnCheckout=true c3p0.acquireRetryDelay=1000 c3p0.acquireRetryAttempts=30 c3p0.breakAfterAcquireFailure=false c3p0.idleConnectionTestPeriod=100 

En cuanto a mí, estás configurado incorrectamente c3p0.

Las propiedades como c3p0.preferredTestQuery deben ubicarse en el archivo c3p0.properties de su classpath (por ejemplo, WEB-INF / classes).

A continuación se muestra mi ejemplo de archivo c3p0.properties que funciona bien para Oracle:

 c3p0.preferredTestQuery=SELECT 1 from dual c3p0.maxConnectionAge=3600 c3p0.testConnectionOnCheckout=true c3p0.acquireRetryDelay=1000 c3p0.acquireRetryAttempts=30 c3p0.breakAfterAcquireFailure=false 

Véase también el documento oficial para c3p0 aquí .

Y, por favor, preste atención a la versión de c3p0 que está usando. Tuvieron un problema al restaurar la conexión en las primeras versiones de c3p0 0.9.

Parece que la conexión a la base de datos ha caducado y ha sido terminada por el servidor de la base de datos. ¿Debería boost el tiempo que el servidor puede esperar o agregar? AutoReconnect = true a su cadena de conexión jdbc.

Creo que esta publicación podría ayudar. Si es así, boost el valor de wait_timeout solo pospone la ocurrencia más tiempo, en lugar de resolver el problema.

El problema podría estar relacionado con esto:

  • Abres una sesión de hibernación
  • Haga algunas cosas que requieran más tiempo que el valor de wait_timeout de su base de datos.
  • Intenta utilizar esta sesión de hibernación. Aparecerá el mensaje que comentas aquí.

He documentado un caso aquí si está interesado.

Ingrese la siguiente línea (1) en el archivo c3po.properties en su directorio raíz. (Debe usar hibenate-c3po 3.6.10 final.jar) Y en la parte Hibeanate.cfg.xml usada agregue (2).

  1. c3p0.testConnectionOnCheckout = true

  2. 100 30 10 10 1800 true