【问题标题】:Flushing JDBC connection pools刷新 JDBC 连接池
【发布时间】:2009-01-08 22:02:45
【问题描述】:

有谁知道刷新 JDBC 连接池的最佳(或任何)方法?我在文档中找不到任何明显的东西。连接池似乎永远不会被删除。

我目前的想法是从我们存储它们的哈希中删除所有数据源,这将触发我们的代码生成新的。但是,我的第一次尝试抛出了 ConcurrentModificationException。

【问题讨论】:

    标签: jdbc connection-pooling flush


    【解决方案1】:

    您不应该编写连接池。即使您想自己管理池(而不是让容器来管理),您也应该为此使用库(例如 Commons DBCP)。

    如果你想从哈希中删除所有内容,你应该使用 hash.clear()。

    如果要避免 ConcurrentModificationException,则需要添加同步。

    如果您删除对 Connections 的引用(您确定您是指 DataSources 吗?),请务必先 close() 它们。

    【讨论】:

      【解决方案2】:

      你为什么要删除,而不是一开始就创建它。

      它应该基于您的应用服务器,可能是一些 JNDI 编程可以解决问题。

      【讨论】:

        【解决方案3】:

        您不应该编写连接池。这由 Java EE 应用服务器处理。

        【讨论】:

        • 我的代码似乎占用了越来越多的 JDBC 连接,即使连接总是被关闭。还有什么可以从连接池中删除活动连接?还是应该将“关闭”的活动连接留在池中?
        • 我必须知道更多:哪个池、部署机制、你的代码。是的,它应该使您的代码看起来有很多连接。您检查它们、使用它们并归还它们。
        猜你喜欢
        • 2016-07-06
        • 2011-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        • 2014-07-25
        • 2012-02-29
        相关资源
        最近更新 更多