Перехват JDBCConnectionExceptions в загрузке Spring - PullRequest
0 голосов
/ 15 марта 2019

Весной при загрузке с помощью hikari, обрабатывающей соединения с базой данных, я хочу поймать, JDBCConnectionException исключения или любые другие исключения уровня гибернации, чтобы я мог генерировать уведомления, когда это происходит. У меня настроен один @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.

1 Ответ

1 голос
/ 15 марта 2019

Пример кода, который вы дали, будет перехватывать только те исключения, которые выбрасываются в поток вызова REST. Многие из исключений пружинных данных генерируются после возврата вызовов REST во время фиксации базы данных. Невозможно выбросить эти исключения таким способом. Лучший способ справиться с этими ошибками - посмотреть журналы, выдвинуть их в нечто вроде Splunk и генерировать там оповещения.

...