【发布时间】:2010-03-19 10:29:23
【问题描述】:
情况:我们有一个运行在 tomcat 上的 Web 服务访问 AS400 上的 DB2 数据库,我们使用 JTOPEN 驱动程序来处理由 tomcat 处理的 JNDI 连接。为了处理事务和访问数据库,我们使用 Spring。
对于每个 select 系统从 JNDI(即来自连接池)获取 JDBC 连接,进行选择,最后它关闭 ResultSet、Statement 并按此顺序释放 Connection。这很好,表上的共享锁消失了。
当我们想以与 select 相同的方式进行更新时(ResultSet 对象上的异常,在这种情况下我们没有),在释放 Connection to JNDI lock on table 之后。
如果我们在 JNDI 配置中将 maxIdle=0 设置为连接数,这个问题就会消失,但这会降低性能,我们在该服务上有 cca 100 个在线用户,我们需要很少的连接才能在池中存活。
你有什么建议?
【问题讨论】:
-
这个问题好像和db2有关,其实是一个特性:archive.midrange.com/java400-l/201003/msg00028.html
标签: java jdbc db2 transactions jndi