DBCP连接验证问题

时间:2009-07-21 05:51:49

标签: spring timeout database-connection apache-commons-dbcp

我决定使用DBCP主要是因为我的数据库连接超时。理论上,一旦定义了“验证查询”,DBCP默认会在使用之前在连接上运行该查询,因此您始终知道连接正常。

我在两周前设置它似乎工作。但是,昨晚我在连接上遇到超时异常。

在我的开发机器上,代码在没有问题的情况下重启MySQL,所以我猜DBCP 正在做某事。

我该如何进行调查呢?你是否为此目的使用DBCP?

(刚刚删除50行左右的更多细节,试图让问题保持可读性。如果缺少一些关键信息,请告诉我。)

编辑:猜猜我在开始之前应该阅读this question ...

1 个答案:

答案 0 :(得分:1)

这并非总是如此。我遇到了类似的问题,但结果证明DBCP的默认行为没有很好的记录。

您必须设置逐出运行之间的时间以清除空闲连接。这可以通过调用setTimeBetweenEvictionRunsMillis在SharedPoolDataSource对象上设置。如果从未设置过,则默认值为负,并且线程永远不会运行!