我在 Tomcat 中有一个 DBCP 连接池。问题是,当连接短暂丢失时,应用程序会中断,因为 DBCP 稍后在有连接时不会尝试再次重新连接。我可以让 DBCP 自动重新连接吗?
问问题
13464 次
2 回答
5
有两种方法可以“解决”这个问题,尽管两者都有一些问题:
您可以使用“validationQuery”(见下文)在您出发之前运行测试查询(通常类似于“从双重选择 1”,它将用于在您将连接获取/提供给池之前/之后测试连接。这个从池中为每个连接请求添加一个额外的调用。见:http ://wiki.apache.org/commons/DBCP
您可以通过设置 testWhileIdle 来让 idleEvictorThread 执行此操作,而不是针对每个查询执行此操作,但在某些版本中,该线程可能会在高负载下导致死锁。有关该选项和其他选项的更多详细信息,请参见:http ://commons.apache.org/dbcp/configuration.html
于 2010-03-31T23:00:37.767 回答
1
不要认为 DBCP 会那样做,但是可以将 BoneCP ( http://jolbox.com ) 配置为在数据库或网络出现故障时自动重播任何事务。它对您的应用程序完全透明。
于 2010-06-23T10:17:52.247 回答