自动重新连接数据库连接

时间:2010-03-30 19:41:14

标签: database tomcat jdbc db2 apache-commons-dbcp

我在Tomcat中有一个DBCP连接池。问题是当连接短暂丢失时,应用程序被破坏,因为DBCP在连接时不会再尝试重新连接。我可以让DBCP自动重新连接吗?

2 个答案:

答案 0 :(得分:5)

有两种方法可以“解决”这个问题,但两者都存在一些问题:

  1. 你可以使用“validationQuery”(见下文)在你去之前运行一个测试查询(通常类似于'select one from dual',用于在你获得/给出之前/之后测试连接它们到池中。这会从池中为每个连接请求添加额外的调用。请参阅:http://wiki.apache.org/commons/DBCP

  2. 您可以让idleEvictorThread通过设置testWhileIdle而不是每个查询执行此操作,但在某些版本中,该线程可能会在高负载下导致死锁。有关该选项和其他选项的更多详细信息,请参阅:http://commons.apache.org/dbcp/configuration.html

答案 1 :(得分:1)

不要认为DBCP会这样做,但可以将BoneCP(http://jolbox.com)配置为在数据库或网络出现故障时自动重播任何事务。它对您的应用程序完全透明。