Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java c3p0:检测db下降/上升事件_Java_Mysql_C3p0 - Fatal编程技术网

Java c3p0:检测db下降/上升事件

Java c3p0:检测db下降/上升事件,java,mysql,c3p0,Java,Mysql,C3p0,在重新发明了几次轮子来实现自己的db连接池之后,我终于决定尝试一下c3p0。在阅读文档之后,它似乎很容易使用和配置 我在文档中找不到的一件事是如何通过侦听器或其他机制,使用c3p0检测数据库何时关闭或打开。在我们的应用程序中,我需要告诉客户端数据库已关闭,因此它无法发送需要记录在数据库中的某些订单。我想知道是否有一种使用c3p0检测这些更改的标准方法,或者我必须自己实现一个外部线程,通过执行一个简单的select语句定期查询db 我觉得这个功能在连接池中是必须的,必须有一种使用c3p0的方法,但

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

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


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

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


如果你想跟踪状态,你没有别的选择,只能自己轮询数据库。

你也应该试试。它没有javadoc或API文档,或者至少我找不到。在我看来这并不严重,这是一个专业的项目。它将在构建时创建文档…嗯。。。这将是一个很好的功能。一个侦听器,用于指示数据库是向上还是向下。如果数据库关闭了,IMO,最好将数据库请求排队,并在知道数据库已启动时执行它们,而不是试图执行它们以捕获异常并一次又一次地重试执行。这就是监视系统的用途。他们轮询不同的服务器以查看它们是否正常工作。将请求排队并在数据库再次启动时执行它们也绝对不是一个好主意。虽然这可能在非常简单的情况下起作用,但在现实世界中,它会搞乱事务并损坏数据。我从设备接收到一些数据测量值,它们必须全部存储在历史数据库中。如果应用程序已收到度量值,则不会丢失度量值。唯一的方法是在数据库关闭时对插入进行排队,然后在数据库再次打开时执行插入。请告诉我你是否能想出一个更好的方法。我刚才说它在像你这样的简单情况下会起作用。它在高度并发的多事务情况下不起作用。因此,这不是一个普遍的解决方案。