java - c3p0:检测数据库关闭/打开事件

标签 java mysql c3p0

在重新发明了几次轮子实现自己的数据库连接池之后,我终于决定尝试一下 c3p0。一旦您阅读了文档,它似乎就很容易使用和配置。

我在文档中找不到的一件事是如何通过监听器或其他机制检测数据库何时使用 c3p0 关闭或启动。在我们的应用程序中,我需要告诉客户端数据库已关闭,因此它无法发送需要记录在数据库中的某些订单。我想知道是否有一种标准方法可以使用 c3p0 检测这些更改,或者我必须自己实现一个外部线程,通过执行简单的 select 语句定期查询数据库。

我觉得这个功能在连接池中是必须的,而且一定有办法使用 c3p0 来做到这一点,但我就是找不到它。如果这不存在,我想再次重新发明轮子。

最佳答案

连接池无法知道数据库甚至其连接的状态,直到对它们执行某些操作。至少某些连接池可以配置为在一定时间后重新创建连接,因此池会在此时注意到出现问题。还有其他机制,例如在发出连接之前执行测试查询,以验证连接是否有效。

如果您想跟踪状态,除了自己轮询数据库之外别无选择。

关于java - c3p0:检测数据库关闭/打开事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33516333/

相关文章:

java - 我正在尝试使用 getter 和 setter 从我的 firebase 数据库中检索数据,但收到错误消息说无法转换对象

泛型类中的java泛型转换

php - 使用 $_POST 时服务器响应为空

php - 通过 PHP 将不规则 XML 导入 MySQL

java - C3P0首选测试查询配置

java - c3p0 getConnection 在连接数增加时挂起

java - 调用 Double.valueOf(String s) 和 new Double(String s) 有什么区别?

java - 启动服务——有向无环图

PHP 查询数据库内的 Session_ID

java - 无法将 c3p0 日志记录转至文件