如何在 Spring 中自动重新连接 DataSource 连接?
How to automatically reconnect a DataSource connection in Spring?
问题:当我的 spring 应用程序是 运行,同时数据库服务器是 stopped/restarted,然后数据库连接丢失并且 永远不会 已恢复。
我测试如下:
- 执行查询:OK
- 服务mysql停止
执行查询:异常:
无法为事务打开 JPA EntityManager;嵌套异常是 javax.persistence.PersistenceException:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 连接关闭后不允许操作。
服务mysql开始
- 执行查询:仍然异常!
问题:如何让springDataSource
在连接丢失后自动重新连接?
这是我的配置:
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
糟糕,我的配置有误。上面的配置是自动重新连接所需的全部。
我正在使用像 HikariCP 这样的连接池来自动重新连接。
查看 Whosebug 上的示例:How do I configure HikariCP in my Spring Boot app in my application.properties files?
问题:当我的 spring 应用程序是 运行,同时数据库服务器是 stopped/restarted,然后数据库连接丢失并且 永远不会 已恢复。
我测试如下:
- 执行查询:OK
- 服务mysql停止
执行查询:异常:
无法为事务打开 JPA EntityManager;嵌套异常是 javax.persistence.PersistenceException:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 连接关闭后不允许操作。
服务mysql开始
- 执行查询:仍然异常!
问题:如何让springDataSource
在连接丢失后自动重新连接?
这是我的配置:
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
糟糕,我的配置有误。上面的配置是自动重新连接所需的全部。
我正在使用像 HikariCP 这样的连接池来自动重新连接。
查看 Whosebug 上的示例:How do I configure HikariCP in my Spring Boot app in my application.properties files?