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