【问题标题】:Java DBCP2 Connection pooling is creating connection agian after max connection closedJava DBCP2 连接池在关闭最大连接后再次创建连接
【发布时间】:2017-07-23 13:44:06
【问题描述】:

我正在尝试通过 apache dbcp2 使用连接池。

我的 maxTotal 连接数是 5。我将在使用后关闭每个连接。

但在从连接池关闭 5 个连接后,我仍然获得连接。

关闭 5 个连接后是否会 ping 数据库以获取连接?否则它会从连接池本身获取而不去分贝。

下面是我的示例代码 sn-p。请纠正我对连接池的理解。

BasicDataSource bds = getBasicDataSource();

System.out.println (bds.getMaxTotal()); // Prints - 5

for (int i=0; i<10; i++) {
    conn = bds.getConnection();
    System.out.println("Conn "+conn); // conn object printing different values for all 10 connections
    conn.close();
}

【问题讨论】:

    标签: java connection-pooling apache-commons-dbcp


    【解决方案1】:

    客户端从池中获得的连接并不是真正的 java.sql.Connection,它是定制某些方法行为的 java.sql.Connection 的包装器(代理)。 close() 方法就是其中之一,它不会关闭 Connection 实例而是将其返回到池中。

    尝试使用C3PO,在我看来它比DBCP更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 2011-11-13
      相关资源
      最近更新 更多