数据库查询挂起到DB2服务器,在java代码中使用tomcat连接池

数据库查询挂起到DB2服务器,在java代码中使用tomcat连接池,java,tomcat,db2,jndi,connection-pooling,Java,Tomcat,Db2,Jndi,Connection Pooling,我开发了一个web应用程序,使用Tomcat连接池,Java代码触发对DB2服务器的查询,有时运行良好并返回结果,但有时挂起,即查询将在没有任何线索的情况下连续运行。然后我必须重新启动Tomcat服务器来解决问题并从数据库中成功地提供数据,我正在使用JNDI并在Tomcat服务器(6.x)的server.xml中配置了参数 在web.xml中配置应用程序的war文件:- 数据库连接池 jdbc/abcd javax.sql.DataSource 容器 context.xml apache t

我开发了一个web应用程序,使用Tomcat连接池,Java代码触发对DB2服务器的查询,有时运行良好并返回结果,但有时挂起,即查询将在没有任何线索的情况下连续运行。然后我必须重新启动Tomcat服务器来解决问题并从数据库中成功地提供数据,我正在使用JNDI并在Tomcat服务器(6.x)的server.xml中配置了参数

在web.xml中配置应用程序的war文件:-

数据库连接池
jdbc/abcd
javax.sql.DataSource
容器

context.xml apache tomcat服务器中的配置:-

server.xml中的配置:-

我没有配置任何其他参数,如minIdle、maxIdle、maxWait和maxActive


请让我知道正确的配置过程,我必须更改哪些参数才能正确处理连接。

我不确定“正确处理连接”是什么意思。如果需要,可以设置commandTimeout数据源属性,在一段时间后终止查询。但是,我觉得问题出在数据库大小上。例如,您遇到锁冲突,数据库中的
locktimeout
参数被设置为无穷大,这会导致某些连接永远等待。您可能需要与DBA谈谈。

谢谢Mustaccio,但是如果它与数据库有关,那么tomcat重启如何解决这个问题呢。问题是,在创建连接对象和语句对象之后,在stmt.executeQuery(“查询”)上,我们遇到了一个异常;代码崩溃并转到catch block,不幸的是,错误时我没有关闭连接对象(con.close();),之后,如果应用程序试图第二次连接到数据库,那么它会等待很长时间而不去捕捉block。它可能是这样的:连接A持有锁。连接B想要更新锁定的记录并永远等待。重新启动Tomcat。两个连接都被终止,事务回滚,锁被释放。下一次,连接B首先到达,由于没有锁定,因此会更新记录。DBA告诉他们没有遇到任何锁定事件`