1

假设某段代码从池中获取了一个连接,但没有将其返回到池中。

我想知道是否有任何自由设置将强制连接回池,如果在一段空闲时间后没有识别到​​连接上的活动,可能是 10 秒。

我正在使用自由 8.5.5.9

4

1 回答 1

5

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!

全局事务将结束,资源将回滚。

因此,只要您没有长时间运行的服务请求,默认的清理行为应该会为您提供您正在寻找的行为。如果您确实有长时间运行的服务请求,那么您可能需要考虑调整事务超时。

于 2017-03-21T15:54:11.817 回答