我正在回答这个问题,假设您通过使用 、 和 类来使用 Apache DBCPorg.apache.commons.pool.impl.GenericObjectPool
进行org.apache.commons.dbcp.DataSourceConnectionFactory
连接org.apache.commons.dbcp.PoolableConnectionFactory
池org.apache.commons.dbcp.PoolingDataSource
。
- 我想知道那些标准池机制在连接重置期间将执行的逻辑是什么?
如果
GenericObjectPool.testOnBorrow
和设置为 true ,则将使用 in 中的集合GenericObjectPool.testOnReturn
验证连接是否处于活动状态。如果验证失败,则删除 Connection 对象并创建新对象并将其添加到池中validationQuery
PoolableConnectionFactory
- DBConnectionPool 如何知道数据库连接超时?因为我们知道 conn.isClosed() 在这里无济于事。与上述机制相同
- 是否每个数据库连接都会有一个与数据库服务器的 tcp 客户端套接字?是的
- 最后是可取的吗?每当我将连接返回到池时;池应该关闭连接;如果连接存在超过约 10 分钟后创建?[~10 分钟服务器端连接超时变量]如果您认为它不应该产生不必要的网络流量,并且如果您有特殊理由这样做。你能行的。通过设置
minEvictableIdleTimeMillis
以及是否要根据空闲时间GenericObjectPool
删除timeBetweenEvictionRunsMillis