Problema: cuando mi aplicación Spring se está ejecutando y, mientras tanto, el servidor de la base de datos se detiene / reinicia, la conexión db se pierde y nunca se restaura.

Probé de la siguiente manera:

  • ejecutar consulta: OK
  • servicio mysql stop
  • ejecutar consulta: excepción:

    No se pudo abrir JPA EntityManager para la transacción; La excepción anidada es javax.persistence.PersistenceException:

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

  • servicio mysql start

  • ejecutar consulta: ¡aún excepción!

Pregunta: ¿cómo puedo decirle al resorte DataSource que se vuelva a conectar automáticamente después de que se haya perdido la conexión?

Esta es mi configuración:

spring.datasource.url=jdbc:mysql://localhost/tablename?useSSL=false
spring.datasource.username=root
spring.datasource.password=rootpw
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.tomcat.validation-query-timeout=5000
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.test-on-connect=true
3
membersound 14 nov. 2017 a las 13:16

2 respuestas

La mejor respuesta

Mi mal, tuve una configuración incorrecta. La configuración anterior es todo lo que se necesita para la reconexión automática.

0
membersound 14 nov. 2017 a las 10:48

Estoy usando un grupo de conexiones como HikariCP para volver a conectar automáticamente.

Vea el ejemplo en Stackoverflow: ¿Cómo configuro HikariCP en mi aplicación Spring Boot en mis archivos application.properties?

0
Lara 14 nov. 2017 a las 11:20