通常,池中的连接是用 AS 特定的实现来包装的,这可以解决客户端的过度侵入问题。当在连接上调用特定方法时,它被认为是“脏”的,并且可能不会返回到池中,而是关闭并重新创建,或者如果可能的话重置为原始状态。通常有关于如何处理这些情况的设置,例如在 Weblogic 中删除受感染的连接。
不过,这些自清洁的效果也可能取决于驾驶员。因此我建议你用1个连接池做一个简单的测试。将连接设置为 autocommit=false,不要关闭它,退出并尝试从另一个客户端使用它,并通过测试检查 autocommit 属性的实际状态。
另一件需要考虑的事情是 AS 包装器中的 Connection.close() 不会关闭连接,而是将其放入池中。因此,如果您的客户端在调用 close() 之前断开连接(并在此之前设置自动提交),则该连接可能对其他池客户端不可用,从而造成连接泄漏。