spring-boot - 检查数据库健康时收到 "RecoverableDataAccessException"是什么原因?

标签 spring-boot tomcat-jdbc

我正在使用 spring-boot 和 oracle 数据库。

关于访问 http://localhost:8888/health健康终点,我得到以下回应:

{"status":"DOWN","error":"org.springframework.dao.RecoverableDataAccessException: ConnectionCallback; SQL []; Closed Connection; nested exception is java.sql.SQLRecoverableException: Closed Connection"}

在搜索上述问题的详细信息时,我找到了这个链接 https://github.com/spring-projects/spring-boot/issues/1303 .它详细描述了问题,但它非常简短地提到了解决方案部分。

正如我们在上述来源中看到的那样,这是新状态下的问题。一旦我观察到即使响应返回此异常,应用程序仍继续将记录插入数据库。

我们如何解决上述异常及其对正在运行的启动应用程序的影响?

最佳答案

您需要配置Tomcat JDBC 连接池来测试连接。这应该可以防止数据库运行状况指示器因连接断开而卡住。

您可以通过向 application.properties 添加一些配置来实现。例如:

spring.datasource.test-on-borrow: true
spring.datasource.validation-query: SELECT 1 FROM DUAL
spring.datasource.log-validation-errors: true

关于spring-boot - 检查数据库健康时收到 "RecoverableDataAccessException"是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27058614/

相关文章:

java - 使用 Tomcat JDBC 池作为 Hibernate 连接池

java - Tomcat 数据源 - 最大 Activity 连接数

java - 如何为 postgres 连接设置 application_name?

java - 在微服务之间共享用户 ID 的最佳实践是什么?

spring - 如果使用 spring 平台 bom,是否应该使用父级?

spring - Spring boot 中特定包的自定义日志文件

java - 在这个 Spring Boot\MVC Controller 中处理 REST 样式映射的正确方法是什么?

spring - 从 Spring boot 1.2 升级到 1.5.2 后,Tomcat 8.5 启动期间出现 FileNotFoundException