Java DBCP2 连接池在最大连接关闭后再次创建连接
Java DBCP2 Connection pooling is creating connection agian after max connection closed
我正在尝试通过 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();
}
客户端从池中获得的连接并不是真正的 java.sql.Connection,它是 java.sql.Connection 的包装器(代理),用于自定义某些方法的行为。 close() 方法就是其中之一,它不会关闭 Connection 实例,而是 returns 将其关闭到池中。
尝试使用C3PO,在我看来它比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();
}
客户端从池中获得的连接并不是真正的 java.sql.Connection,它是 java.sql.Connection 的包装器(代理),用于自定义某些方法的行为。 close() 方法就是其中之一,它不会关闭 Connection 实例,而是 returns 将其关闭到池中。
尝试使用C3PO,在我看来它比DBCP好。