情况:我们有一个在tomcat上运行的Web服务访问AS400上的DB2数据库,我们正在使用JTOPEN驱动程序来处理tomcat处理的JNDI连接。为了处理事务和访问数据库,我们使用Spring。
对于每个选择系统从JNDI(即从连接池)获取JDBC连接,进行选择,最后它按顺序关闭ResultSet,Statement并释放Connection。通过罚款,表上的共享锁消失了。
当我们想要以相同的方式更新select(在ResultSet对象上的异常,我们在这种情况下没有一个),在释放表上的连接到JNDI锁之后。
如果我们为JNDI配置中的连接数设置maxIdle = 0,则此问题消失,但这会降低性能,我们在该服务上有cca 100个在线用户,我们需要很少的连接才能在池中存活。
你有什么建议?
答案 0 :(得分:1)
听起来好像默认情况下禁用了自动提交,并且代码没有在任何地方调用connection.commit()
。要解决此问题,请配置连接池,使其仅返回autoCommit = true
的连接,或更改在try
块结束时提交事务的JDBC代码,其中已执行SQL操作
答案 1 :(得分:0)
看看this。
在同样的情况下帮助了我。