关闭后,为什么JDBC连接保持打开状态?

时间:2012-06-25 18:55:40

标签: jquery jdbc

我在Tomcat 7上运行了一个Java Web应用程序,它使用JDBC连接到Oracle 11g数据库。该应用程序包含一个JSP,它使用JQuery向一个将数据插入数据库的servlet发出Ajax请求(使用.post函数)。当系统处于轻负载状态时,我开始在数据库中看到空闲连接。我通过在SQL Developer中检查v $ session来观察它们。当我们运行性能测试时,它在大约2分钟内用150个连接最大化数据库服务器。我多次使用我的代码,并且我总是在finally块中关闭所有ResultSet,Statements和Connections。当JSP同时提交多个Ajax请求时会出现问题,这让我觉得它可能是一个多线程问题,但同样,我已经完成了我的代码,并且没有跨线程共享数据。从数据源获取连接并关闭连接的代码位于所有DAO类继承的抽象基类中。有谁知道可能导致这种情况的原因是什么?由于涉及很多课程,我不确定要发布什么源代码;如果你想看到任何一个,请告诉我。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

尝试将maxWait设置为10000并观察超时。这表明Web应用程序的某些组件没有关闭数据库连接。

另外,尝试将maxActive限制为15,并查看它如何影响您的应用程序和Oracle中同时打开的连接数。