Tengo la siguiente configuración: JSP / Servlet => Capa de presentación. Hibernate y OpenJPA => Capa de acceso a datos.

Para conectarme a la base de datos, estoy agregando la información de configuración en un archivo "persistence.xml". Aquí están las entradas para el archivo "persistence.xml":

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.connection.url" value="jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/test?autoReconnect=true"/>
<property name="hibernate.connection.username" value="xxx"/>
<property name="hibernate.connection.password" value="xxx"/>
<property name="hibernate.generate_statistics" value="true"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.OSCacheProvider"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.c3p0.min_size" value="5"/>
<property name="hibernate.c3p0.max_size" value="20"/>
<property name="hibernate.c3p0.timeout" value="1800"/>
<property name="hibernate.c3p0.max_statements" value="50"/>
<property name="hibernate.c3p0.idle_test_period" value="1800"/>
<property name="c3p0.idleConnectionTestPeriod" value="1810"/>

Recibo el error org.hibernate.exception.JDBCConnectionException: could not execute query. Después de 13 horas o más de inactividad. Este error no se reproduce de forma coherente. No puedo reproducir el error en mi configuración de prueba, pero este error viene en el servidor de producción.

He buscado en el foro, hay alguna entrada que es similar a la mía pero no responden a mi pregunta. Los enlaces son:

Obteniendo org.hibernate.exception.JDBCConnectionException: no se pudo ejecutar la consulta incluso a través de JNDI

Sigue obteniendo org.hibernate.exception.JDBCConnectionException: no se pudo ejecutar la consulta

¿Me estoy perdiendo alguna configuración o estoy haciendo algo mal?

0
Natraj 16 ene. 2012 a las 10:00
¿Por qué tiene OpenJPA etiquetado para esta pregunta?
 – 
Rick
16 ene. 2012 a las 18:29
¿Cuál es la consulta que está ejecutando? ¿Cuántos datos devuelve la consulta cuando se ejecuta en producción?
 – 
Rick
17 ene. 2012 a las 18:07
@Rick Recibo este error al iniciar sesión en la aplicación. La consulta que estoy ejecutando es SELECT * from user WHERE userid=x AND password=xxx Esta consulta solo devuelve un registro.
 – 
Natraj
18 ene. 2012 a las 10:46
¿Sucede esto con OpenJPA o simplemente con Hibernate? ¿Puede ejecutar otras consultas?
 – 
Rick
18 ene. 2012 a las 19:12
Como esta es la primera consulta para iniciar sesión en el sistema, no había verificado si se ejecuta alguna otra consulta o no. Pero cuando vuelvo a intentar iniciar sesión, se realiza correctamente, ya que hay un parámetro ?autoReconnect=true
 – 
Natraj
15 feb. 2012 a las 09:08

1 respuesta

La mejor respuesta

Para mí fue un problema de la versión c3p0. Al usar la última versión de c3p0, no se observó el problema. Además, algunas conexiones se filtran cuando se lanza una excepción. Agregue el código de liberación de conexión en el bloque finalmente funcionó.

0
Natraj 26 nov. 2014 a las 09:19