Cannot get a connection, pool exhausted

问题说明:

工程运行的时候偶尔会抛出Cannot get a connection, pool exhausted这个异常

看这个提示信息比较明确了,无法获取数据库连接,连接池耗尽

 

问题分析:

首先看看tomcat的配置,是不是最大连接数过少:

<Resource name="DBSERVER_DS" type="javax.sql.DataSource"
        maxWait="5000"
        maxActive="100"
        maxIdle="40"
        username="123"
        password="123"
        url="jdbc:oracle:thin:@1.2.3.4:1521:123"
        driverClassName="oracle.jdbc.driver.OracleDriver"
>

应该没问题,并发也不会超过100

数据库也可以手动连接上,也不是数据库最大连接限制的问题

上网查了下,发现查询连接未释放会出现这个问题,由于连接未释放,设置的最大并发数又比较小(100),很快连接就会被耗尽

public List<Object[]> getQueryList(String sql) throws DAOException{
	Session session = this.getSession();
	SQLQuery query = session.createSQLQuery(sql);
	List<Object[]> result = new ArrayList<Object[]>();
	result = query.list();
	return result;
}

还真没释放。。。

 

解决方式:

try{
         ...
}catch(Exception e){
         ...
}finally{
         if(null != session){
                  session.close();
         }
}

 

转载于:https://www.cnblogs.com/sean-zou/archive/2013/05/13/3710063.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值