2

想知道朋友们,当一个jdbc连接失效时,可能是故意关闭了,或者是某个事务使它失效并关闭了,有没有办法知道到底是什么导致连接失效,有没有痕迹留在我可以获取和检查的连接上。

我面临着必须检测已脱机的服务器的情况,我是如何做到的;任何尝试从连接池借用连接的操作,检查该连接是否有效。如果不是,并且它无效的原因是它无法连接到数据库,则触发 propertychange 并通知任何订阅者更改,然后订阅者将弹出一个对话框以阻止所有操作并开始查询数据库每 5 秒检查一次是否返回。希望我把我的情况说清楚

4

2 回答 2

2

Better you could use a connection pooling library that will validate connection on behalf of you. During database operation it will automatically test the connection health and make a new connection if the existing one is invalid.

For C3P0 connection pooling library, please check the following document:

http://www.mchange.com/projects/c3p0/#configuring_connection_testing

于 2013-10-08T20:48:33.330 回答
0

通常,当您尝试使用陈旧的连接时,例如通过发出@PeterLawrey 建议的简单 SQL 语句,将引发 SQLException,其中包含错误的详细信息,如果它们对驱动程序可用的话。捕获异常并分析其getErrorCode()getSQLState()方法返回的内容。请记住,虽然 SQLSTATE 值是标准化的,但它们不是很精细,而供应商错误代码可能会提供更多信息,但在连接到不同的数据库平台时会有所不同。

于 2013-10-08T20:58:23.443 回答