db2 jdbc驱动程序不释放表锁

时间:2010-03-19 10:29:24

标签: java jdbc db2 transactions jndi

情况:我们有一个在tomcat上运行的Web服务访问AS400上的DB2数据库,我们正在使用JTOPEN驱动程序来处理tomcat处理的JNDI连接。为了处理事务和访问数据库,我们使用Spring。

对于每个选择系统从JNDI(即从连接池)获取JDBC连接,进行选择,最后它按顺序关闭ResultSet,Statement并释放Connection。通过罚款,表上的共享锁消失了。

当我们想要以相同的方式更新select(在ResultSet对象上的异常,我们在这种情况下没有一个),在释放表上的连接到JNDI锁之后。

如果我们为JNDI配置中的连接数设置maxIdle = 0,则此问题消失,但这会降低性能,我们在该服务上有cca 100个在线用户,我们需要很少的连接才能在池中存活。

你有什么建议?

2 个答案:

答案 0 :(得分:1)

听起来好像默认情况下禁用了自动提交,并且代码没有在任何地方调用connection.commit()。要解决此问题,请配置连接池,使其仅返回autoCommit = true的连接,或更改在try块结束时提交事务的JDBC代码,其中已执行SQL操作

答案 1 :(得分:0)

看看this

在同样的情况下帮助了我。