Tomcat回收连接

最近公司一个JDK1.4的老项目升级了JDK1.6后BUG不断,最可恶的连接池被占满。

因为是使用tomcat的连接池所以在config下中添加

<Resource name="jdbc/****" auth="Container" 
type="javax.sql.DataSource" 
username="****" 
password="*****" 
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
url="jdbc:sqlserver://*******" 
maxActive="200" 
maxIdle="50" 
maxWait="600000"

logAbandoned="true"
removeAbandoned="true" 
removeAbandonedTimeout="600"

/>

这样tomcat会打印出未关闭的数据库连接的代码块。

logAbandoned="true"
是开启打印回收连接日志
removeAbandonedTimeout="600"
是设置连接超时时间,注意单位是秒
removeAbandoned="true" 
是数据库连接不够用回收超时的连接

通过tomcat打印的日志可以找到未关闭连接的代码块
org.apache.tomcat.dbcp.dbcp.AbandonedTrace$AbandonedObjectException: DBCP object
 created 2016-10-10 11:01:47 by the following code was never closed:
        at org.apache.tomcat.dbcp.dbcp.AbandonedTrace.init(AbandonedTrace.java:9
0)
        at org.apache.tomcat.dbcp.dbcp.AbandonedTrace.<init>(AbandonedTrace.java
:73)
        at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.<init>(DelegatingResu
ltSet.java:81)
        at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.wrapResultSet(Delegat
ingResultSet.java:104)
        at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(Delegati
ngStatement.java:208)
        at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(Delegati
ngStatement.java:208)
        at org.apache.jsp.*****************.appformlist_jsp._jspService(ap
pformlist_jsp.java:1317)

 从上可以看到appformlist_jsp的1317行没有关闭

 利用反编译工具找到tomcat的work目录下的appformlist_jsp.class

关闭这位置数据库连接。

posted on 2016-12-29 14:44 Gavin_Yi 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/gavin2016/p/6232945.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值