java - 在 Spring boot 中捕获 JDBCConnectionException

标签 java spring-boot spring-data-jpa spring-data hikaricp

在使用 hikari 处理数据库连接的 Spring 启动中,我想捕获 JDBCConnectionException 异常或任何其他 hibernate 级别异常,以便我可以在发生这种情况时生成通知。我配置了一个 @ControllerAdvice,但是似乎它没有达到该级别,但已提前处理。

@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class ExceptionTranslator {

    @ExceptionHandler(JDBCConnectionException.class)
    public void handleJdbcConnectionException(JDBCConnectionException ex, HttpServletResponse response) throws IOException {
        response.sendError(HttpStatus.INTERNAL_SERVER_ERROR.value(), ex.getMessage());
    }

我正在使用 spring 数据存储库来访问数据库。

WARN |PoolBase                      |2d33dd4e-46d6-11e9-9d35-2f44d962868c|conf-hikari-pool - Failed to validate connection ConnectionID:1 ClientConnectionId: 1f1135cd-94bf-4543-bfe8-687e10a40797 (The connection is closed.). Possibly consider using a shorter maxLifetime value.
WARN |PoolBase                      |2d33dd4e-46d6-11e9-9d35-2f44d962868c|conf-hikari-pool - Failed to validate connection ConnectionID:2 ClientConnectionId: 28890cd1-16ad-43f9-b240-a9ae3aa2d45f (The connection is closed.). Possibly consider using a shorter maxLifetime value.
WARN |SqlExceptionHelper            |2d33dd4e-46d6-11e9-9d35-2f44d962868c|SQL Error: 0, SQLState: null
ERROR|SqlExceptionHelper            |2d33dd4e-46d6-11e9-9d35-2f44d962868c|conf-hikari-pool - Connection is not available, request timed out after 6010ms.
ERROR|SqlExceptionHelper            |2d33dd4e-46d6-11e9-9d35-2f44d962868c|The connection is closed.

最佳答案

您给出的代码示例将仅捕获 REST 调用流中引发的异常。许多 spring-data 异常是在数据库提交期间 REST 调用返回后引发的。不可能以这种方式抛出这些异常。处理这些错误的最佳方法是查看日志,将它们推送到 Splunk 之类的地方并在那里生成警报。

关于java - 在 Spring boot 中捕获 JDBCConnectionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55175512/

相关文章:

spring-boot - 使用Spring Boot自定义Jetty的HttpConfiguration

java - 如何使用 Spring Boot 处理仅包含可选查询参数的 REST API?

java - Spring一对多总是空的

java - 是否可以在 Selenium 网格中注册自定义 Webdriver?

java - 使用 Apache Beam 和 Dataflow 的数据存储性能不佳

java - 如何在mysql中插入NULL,尤其是INT dataType

java - 如何从 Controller 访问 REST API 的所有可用路由?

Java : How to 20x20 2D-Array with a specific amount of elements

spring - 如何使用 HTML5 WebSocket API 创建 Spring WebSocket 应用程序?

java - 出现错误考虑在配置中定义类型为 'com.sam.cmsshoppingcart.models.PageRepository' 的 bean