sql >> Base de Datos >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:no se permiten operaciones después de cerrar la conexión

Como señaló @swanliu, se debe a una mala conexión.
Sin embargo, antes de ajustar el tiempo del servidor y el tiempo de espera del cliente, primero intentaría usar una mejor estrategia de agrupación de conexiones.

Agrupación de conexiones

Hibernate mismo admite que su estrategia de agrupación de conexiones es mínima

Yo personalmente uso C3P0 . sin embargo, hay otras alternativas disponibles, incluyendo DBCP .
Echa un vistazo

A continuación se muestra una configuración mínima de C3P0 utilizada en mi aplicación:

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.acquire_increment">1</property> 
<property name="c3p0.idle_test_period">100</property> <!-- seconds --> 
<property name="c3p0.max_size">100</property> 
<property name="c3p0.max_statements">0</property> 
<property name="c3p0.min_size">10</property> 
<property name="c3p0.timeout">1800</property> <!-- seconds --> 

Editar:
Actualicé el archivo de configuración (Referencia ), ya que acababa de copiar y pegar el de mi proyecto anterior. Idealmente, el tiempo de espera debería resolver el problema. Si eso no funciona para usted, hay una solución costosa que creo que podrías echarle un vistazo:

Cree un archivo "c3p0.properties" que debe estar en la raíz de classpath (es decir, no hay forma de anularlo para partes particulares de la aplicación). (Referencia )

# c3p0.properties
c3p0.testConnectionOnCheckout=true

Con esta configuración, cada conexión se prueba antes de ser utilizada. Sin embargo, podría afectar el rendimiento del sitio.