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

时间:2011-03-29 13:10:07

标签: java database jndi commit pooling

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

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

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

此致 晴天。

1 个答案:

答案 0 :(得分:3)

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

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

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