2011-03-29 123 views
4

我已经在websphere服务器上托管了一个数据源,并且希望通过我的应用程序客户端使用该数据源。从JNDI连接池中检索数据库连接设置

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

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

问候, 阳光明媚。

回答

3

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

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

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