首页 > 解决方案 > DBCP2 借用超时

问题描述

有什么方法可以配置org.apache.commons.dbcp2.BasicDataSource为借用连接设置超时以强制它们回滚并返回池?

我知道这些参数,但它们不符合我的需要:

removeAbandonedTimeout:如果连接的使用时间超过 removeAbandonedTimeout,则从池中删除连接。

maxConnLifetimeMillis:在 maxConnLifeTime 之后从池中删除连接

标签: javadatasource

解决方案


其实解决方法很简单。我发现 Apache 文档对此并不清楚,但设置这些值将达成交易:

removeAbandonedOnMaintenance(或removeAbandonedOnBorrow) + removeAbandonedTimeout+timeBetweenEvictionRunsMillis

以下是有关废弃连接的文档说明:

如果连接的使用时间超过 removeAbandonedTimeout,则该连接被视为已放弃并符合删除条件。

但是通过查看他们应该编写的代码:

如果连接的使用时间超过 removeAbandonedTimeout并且其当前状态为 ALLOCATED,则该连接被视为已放弃并有资格删除。

这完全符合删除借来的废弃连接的需要。


推荐阅读