假设某段代码从池中获取了一个连接并且没有将它返回池中。
我想知道在自由中是否存在任何设置,如果在一些空闲时间后连接上没有识别出活动,则会强制连接回池,可能是10秒。
我正在使用自由8.5.5.9
答案 0 :(得分:5)
Websphere Liberty没有任何机制会在一段时间后强制使用连接回到池中。
与此行为最接近的是"事务超时" (默认值为120s),在达到超时后将超时全局事务,并清除全局事务中的所有资源。
但是,默认情况下,WebSphere将始终在事务范围结束后清除泄漏的连接(无论是本地事务包含还是全局事务)。
例如,如果我在servlet中执行以下操作:
Connection conn = ds.getConnection();
// conn never closed!
当servlet请求结束时,连接将自动关闭并返回到连接池。
如果你在全球交易中做了类似的事情:
tx.begin();
Connection conn = ds.getConnection();
// conn never closed!
// tx never ended!
全局交易将结束,资源将被回滚。
因此,只要您没有长时间运行的服务请求,默认的清理行为就会为您提供所需的行为。如果您确实有长时间运行的服务请求,那么您可能需要考虑调整事务超时。