我需要一个计时器来定期检查ComboPooledDataSource中的连接状态。当连接检查失败(并且再次出现)时,是否可以读取其状态或“监听”?
我曾考虑过实现连接测试器(see documentation),但是由于它是在内部实例化的(设置连接测试器的方法是through its qualified name):
...
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setConnectionTesterClassName("some.qualified.connection.tester");
...
我看到的唯一解决方案是它相应地设置一些静态变量。我想出了一个计时器,尝试获取连接(getConnection())并捕获异常:
try {
cpds.getConnection();
//it is up
} catch (SQLException e) {
//it is down
}
有什么更好的方法可以做到这一点?