一种解决方法是在连接池中实现连接的健康检查。可以编写一个程序,定期执行SQL查询语句并根据结果确认是否连接成功。如果检查失败,则从连接池中删除该连接并重新创建一个新的连接。
以下是一个使用Hikari连接池的示例程序,它使用SQL查询来检查连接是否健康:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost/test");
config.setUsername("username");
config.setPassword("password");
config.setDriverClassName("com.mysql.jdbc.Driver");
// 设置健康检查
config.setConnectionTestQuery("SELECT 1");
HikariDataSource dataSource = new HikariDataSource(config);
在上面的代码示例中,使用了Hikari连接池,并设置了健康检查。设置连接测试查询为"SELECT 1",这个查询语句几乎适用于所有的数据库,如果查询到结果,则说明连接正常,否则表示连接失败。
参考文献:https://stackoverflow.com/questions/40560217/activemq-artemis-container-not-failing-on-failed-jdbc-connection