将MySQL Connector / J升级到8.0.X-ExceptionInterceptor接口更改

时间:2019-07-05 15:02:31

标签: java mysql connector-j

我们当前在项目(5.1.47)中使用最新的v5.1 mysql-connector-java库,并正在考虑将其升级到最新的v8.0稳定版本(8.0.16)。

我们有一个接口 com.mysql.jdbc.ExceptionInterceptor 的自定义实现,对于特定的错误代码,该接口不仅传播异常,而且强制关闭违规行为连接本身。

这是通过实现以下方法完成的:

SQLException interceptException(SQLException sqlEx, Connection conn);

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

此实现非常有用,因为我们的数据库是AWS Aurora(MySQL 5.7),它在两个实例(主实例和从实例)之间具有故障转移机制。在从一个实例到另一个实例的故障转移期间,将引发错误代码为1290的SQLException( MySQL服务器正在使用--read-only选项运行,因此它无法执行此语句)。强制关闭连接可确保在完成故障转移后,该连接可以安全地再次透明重新连接到Java应用程序。

在v8.0中,除了将侦听器的名称更改为 com.mysql.cj.exceptions.ExceptionInterceptor 之外,方法签名现已更改,并且不将Connection作为参数:

Exception interceptException(Exception sqlEx);

ExceptionInterceptor init(Properties props, Log log);

是否可以使用新界面访问有问题的连接?

0 个答案:

没有答案