检查数据库健康状况时收到"RecoverableDataAccessException"的原因是什么?

Ana*_*dey 5 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"}
Run Code Online (Sandbox Code Playgroud)

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

正如我们在上面提到的消息来源所看到的那样,它是新状态下的一个问题.一旦我发现即使在响应中返回了此异常,应用程序仍继续将记录插入数据库.

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

And*_*son 8

您需要配置Tomcat JDBC连接池以测试连接.这应该可以防止DB健康指示器因连接断开而卡住.

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

spring.datasource.test-on-borrow: true
spring.datasource.validation-query: SELECT 1 FROM DUAL
spring.datasource.log-validation-errors: true
Run Code Online (Sandbox Code Playgroud)