从 JNDI 连接池检索的数据库连接设置

Dun*_*ter 5 java jndi commit jdbc pooling

我在 Websphere 服务器上托管了一个数据源,并且希望通过我的应用程序客户端使用该数据源。

从 JNDI 数据源检索数据库连接后,我将连接的提交设置更改为 false。之后,我将使用这个连接,并在任务完成后关闭该连接。

如果我忘记在关闭之前更改连接的提交设置(我的意思是将连接返回到池中),会发生什么情况。如果任何其他客户端访问此数据源并且它们获得相同的连接,则提交设置是否仍然保留,或者服务器是否会重置这些连接设置。

Vla*_*hev 4

通常,池中的连接是用 AS 特定的实现来包装的,这可以解决客户端的过度侵入问题。当在连接上调用特定方法时,它被认为是“脏”的,并且可能不会返回到池中,而是关闭并重新创建,或者如果可能的话重置为原始状态。通常有关于如何处理这些情况的设置,例如在 Weblogic 中删除受感染的连接

不过,这些自清洁的效果也可能取决于驾驶员。因此我建议你用1个连接池做一个简单的测试。将连接设置为 autocommit=false,不要关闭它,退出并尝试从另一个客户端使用它,并通过测试检查 autocommit 属性的实际状态。

另一件需要考虑的事情是 AS 包装器中的 Connection.close() 不会关闭连接,而是将其放入池中。因此,如果您的客户端在调用 close() 之前断开连接(并在此之前设置自动提交),则该连接可能对其他池客户端不可用,从而造成连接泄漏。