重新发明几次实现我自己的数据库连接池之后,我终于决定试试c3p0了。一旦您阅读完文档,它似乎很容易使用和配置。
我在文档中找不到的一件事是如何通过侦听器或其他机制检测db何时使用c3p0关闭或关闭。在我们的应用程序中,我需要告诉客户端db已关闭,因此它无法发送需要在db中记录的某些订单。我想知道是否有一种使用c3p0检测这些更改的标准方法,或者我必须自己实现一个外部线程,通过执行一个简单的select语句定期查询db。
我觉得这个功能在连接池中是必须的,必须有一种方法可以使用c3p0,但我找不到它。如果这不存在,我想再次重新发明轮子。
答案 0 :(得分:2)
在对它们执行某些操作之前,连接池无法知道DB的状态甚至连接。至少有一些连接池可以配置为在一定时间后重新创建连接,因此池将在那时注意到有问题。还有其他机制,例如在发出连接之前将执行的测试查询,以验证连接是否有效。
如果您想跟踪状态,除了自己轮询数据库之外别无选择。