我已经开发了一个Web应用程序并使用Tomcat连接池,Java代码正在触发对DB2服务器的查询,有时它运行良好并返回结果,但有时会挂起,即查询将连续运行而没有任何线索。然后,我必须重新启动可解决问题的Tomcat服务器并从数据库中成功提供数据,我正在使用JNDI并已在tomcat server(6.x)的server.xml中配置了参数。
在应用程序的war文件的web.xml中进行配置:-<resource-ref> <description>DB Connection Pool </description> <res-ref-name>jdbc/abcd</res-ref-name> <res-type>javax.sql.DataSource </res-type> <res-auth>Container </res-auth> </resource-ref>
在context.xml中配置Apache Tomcat服务器:<ResourceLink global="jdbc/abcd" name="jdbc/abcd" type="javax.sql.DataSource" />
在server.xml中进行配置:-<Resource name="jdbc/abcd" auth="Container" type="javax.sql.DataSource" username="zzzzz" password="zzzzz" driverClassName="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://IP:50000/MYDB" />
我尚未配置任何其他参数,例如minIdle,maxIdle,maxWait和maxActive。
请让我知道正确的配置过程,我必须更改哪个参数才能正确处理连接。
最佳答案
我不确定“正确处理连接”是什么意思。如果需要的话,可以将commandTimeout数据源属性设置为在一段时间后终止查询。但是,我觉得问题出在数据库大小上。例如,您遭受锁冲突,并且数据库中的locktimeout
参数设置为infinity,这将导致某些连接永远等待。您可能需要与您的DBA交谈。
关于java - 使用Java代码中的tomcat连接池将数据库查询挂接到DB2服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18391021/