日期:2014-05-17  浏览次数:20788 次

请教一个关于Hibernate无法获取连接池连接的问题
我们公司有一个系统,大约400个人同时在线,不知道为什么Tomcat运行不到2天就要挂,重启就好了,每次去看日志都报这个错:
[org.hibernate.util.JDBCExceptionReporter] [ERROR] - SQLException in StandardPoolDataSource:getConnection exception: java.sql.SQLException: SQLException in StandardPoolDataSource:getConnection no connection available java.lang.Exception: GenericPool:checkOut ERROR impossible to obtain a new object from the pool

因为这个系统涉及到多个数据库(2个SQLserver和一个Oracle),所以用到了分布式事务管理JTA,以下是访问量比较大的那个数据库c3p0配置:
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.c3p0.max_size">1000</prop>
<prop key="hibernate.c3p0.min_size">20</prop>
<prop key="hibernate.c3p0.timeout">120</prop>
<prop key="hibernate.c3p0.max_statements">100</prop>
<prop key="hibernate.c3p0.idle_test_period">120</prop>
<prop key="hibernate.c3p0.acquire_increment">2</prop>

望老师们指教,学生感激涕零~

------解决方案--------------------
池可用连接不够
根据这个配置文件,1000个连接肯定是够用了
那就只有一个可能,你的程序里面有地方占用了连接,但是没有正常释放(归还)到池
检查代码