有人可以解释一下如何正确使用 removeAbandoned 属性吗?问题是,我们有在事务中运行的服务方法(应用@Transactional)。例如,主体可以是 1000 个选择语句后跟 1000 个插入。removeAbandoned 属性设置为 60 秒。现在,如果 1000 个插入语句的执行时间超过 60 秒,则会为下一个 db 语句抛出异常“连接已关闭”。为什么会发生这种情况以及如何克服这种情况?如果我删除 removeAbandoned 属性,每件事都运行良好。这是我的 dbcp 配置。
db.initialSize=5
db.maxActive=150
db.minIdle=0
db.maxIdle=8
db.defaultAutoCommit=false
db.defaultTransactionIsolation=-1
db.maxWaitMillis=3000
db.timeBetweenEvictionRunMillis=1000
db.minEvictableIdleTimeMillis=1000
db.testOnBorrow=true
db.testOnReturn=false
db.testWhileIdle=false
db.removeAbandoned=true
db.removeAbandonedTimeout=60
db.poolPreparedStatements=true
db.validationQuery=select 1
通过使用这些属性,我们正在构建一个数据源。如果我在这里做错了什么,请纠正我。我假设在哪里调用此服务,它会打开一个连接并执行 db 语句,但它试图在 removeAbandonedTimeout 之后使用相同的连接?