c3p0:检测数据库向下/向上事件

c3p0: detecting db down / up events

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

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

我觉得这个功能在连接池中是必须的,并且必须有一种方法可以使用 c3p0 来实现,但我就是找不到它。如果这不存在,我想重新发明轮子。

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

如果您想跟踪状态,您别无选择,只能自己轮询数据库。