Java DBCP2连接池在最大连接关闭后创建连接agian

时间:2017-03-03 12:34:23

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

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

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

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

在5个连接关闭后,它会ping数据库以获得连接吗?或者它将从连接池本身获得而不进行db。

以下是我的示例代码段。请更正我对连接池的理解。

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();
}

1 个答案:

答案 0 :(得分:0)

客户端从池中获取的连接实际上不是java.sql.Connection,它是java.sql.Connection的包装器(代理),用于自定义某些方法的行为。 close()方法是其中之一,不会关闭Connection实例,而是将其返回到池中。

尝试使用C3PO,从我的角度来看,它比DBCP更好。