我开发了一个 Web 应用程序并使用 Tomcat 连接池,Java 代码触发对 DB2 服务器的查询,有时它运行良好并返回结果,但有时它挂起,即查询将连续运行而没有任何线索。然后我必须重新启动解决问题的 Tomcat 服务器并从数据库提供成功的数据,我正在使用 JNDI 并在 tomcat 服务器(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
参数被设置为无穷大,导致某些连接永远等待。您可能需要与您的 DBA 交谈。
关于java - 数据库查询挂到 DB2 服务器,在 java 代码中使用 tomcat 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391021/