在使用hikari处理数据库连接的spring boot中,我想捕获,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数据存储库来访问db。
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调用流中引发的异常。在数据库提交期间REST调用返回后,抛出许多spring-data异常。不可能以这种方式抛出这些异常。处理这些错误的最佳方法是查看日志,将它们推送到类似Splunk的内容并在那里生成警报。