Обновление MySQL Connector / J до 8.0.X - Изменения интерфейса ExceptionInterceptor - PullRequest
0 голосов
/ 05 июля 2019

В настоящее время в нашем проекте используется новейшая библиотека v5.1 mysql-connector-java (5.1.47), и мы планируем обновить ее до последней стабильной версии v8.0 (8.0.16).

У нас есть пользовательская реализация интерфейса com.mysql.jdbc.ExceptionInterceptor, которая для определенного кода ошибки не только распространяет исключение, но и force закрывает само нарушающее соединение.

Это делается путем реализации методов:

SQLException interceptException(SQLException sqlEx, Connection conn);

void init(Connection conn, Properties props) throws SQLException;

Эта реализация полезна, поскольку нашей базой данных является AWS Aurora (MySQL 5.7), в которой имеется механизм переключения при отказе между двумя экземплярами (master и slave). При переключении с одного экземпляра на другой возникает исключение SQLException с кодом ошибки 1290 ( Сервер MySQL работает с параметром --read-only, поэтому он не может выполнить этот оператор ). Принудительное закрытие соединения гарантирует, что после сбоя соединение сможет безопасно снова подключиться прозрачно к приложению Java.

В v8.0 кроме того факта, что имя перехватчика было изменено на com.mysql.cj.exceptions.ExceptionInterceptor, сигнатуры методов теперь изменены и не имеют соединения в качестве аргумента:

Exception interceptException(Exception sqlEx);

ExceptionInterceptor init(Properties props, Log log);

Есть ли способ получить доступ к нарушающему соединению с новым интерфейсом?

...