【问题标题】:Auto Reconnect of Database Connection自动重新连接数据库连接
【发布时间】:2011-02-02 15:18:27
【问题描述】:

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

【问题讨论】:

  • 可以肯定的是,您是否在获得try 块的finally 块中调用connection.close()?到处? 真的吗? 是吗?

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


【解决方案1】:

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

【讨论】:

  • 查看 transactionReplay 功能。不过不要在 Hibernate 中使用它(它们有错误)
【解决方案2】:

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

  1. 您可以使用“validationQuery”(见下文)在您离开之前运行测试查询(通常类似于“从 Dual 中选择 1”,这将用于在您获取/提供连接之前/之后测试连接到池。这会为池中的每个连接请求添加一个额外的调用。请参阅:http://wiki.apache.org/commons/DBCP

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

【讨论】:

    猜你喜欢
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2015-03-12
    • 2010-12-06
    • 2017-02-15
    相关资源
    最近更新 更多