C3P0连接池错误,让人头疼啊

eleven027 2009-10-19 12:01:34
使用C3P0连接池时,时常出现下面的问题,真让人头痛啊,有高手能帮忙解决一下不
WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1] (com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask:1814) - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@15b9582 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12519)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4))))
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:404)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1007)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1783)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
java.sql.SQLException: Connections could not be acquired from the underlying database!
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at com.hondent.corecode.db.SMSORCPool.getCPDataSourceConnection(SMSORCPool.java:108)
at com.hondent.corecode.db.ORCDBManager.getConnection(ORCDBManager.java:59)
at com.hondent.corecode.db.ORCDBManager.getConnection(ORCDBManager.java:51)
at com.hondent.struts.AffairUtil.iSendOver(AffairUtil.java:44)
at com.hondent.quartz.QSMSBo.sendwork(QSMSBo.java:307)
at com.hondent.quartz.job.QSMSJob.execute(QSMSJob.java:12)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1307)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:551)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:471)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
... 9 more
java.lang.NullPointerException
at com.hondent.struts.AffairUtil.iSendOver(AffairUtil.java:45)
at com.hondent.quartz.QSMSBo.sendwork(QSMSBo.java:307)
at com.hondent.quartz.job.QSMSJob.execute(QSMSJob.java:12)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)


我的数据池配置为:
cpdataSource.setDriverClass(DriverClass);
cpdataSource.setJdbcUrl(JdbcUrl);
cpdataSource.setUser(DbPoolUser);
cpdataSource.setPassword(DbPoolUserPwd);

cpdataSource.setInitialPoolSize(5);
cpdataSource.setMaxPoolSize(500);
cpdataSource.setMaxIdleTime(60);
cpdataSource.setAcquireIncrement(10);
cpdataSource.setIdleConnectionTestPeriod(60);
cpdataSource.setAutoCommitOnClose(true);
cpdataSource.setTestConnectionOnCheckout(true);
cpdataSource.setTestConnectionOnCheckin(true);
cpdataSource.setAcquireRetryAttempts(30);
cpdataSource.setAcquireRetryDelay(100);
cpdataSource.setBreakAfterAcquireFailure(false);

出错后cpdataSource.getConnection();处出现异常 程序运行阻塞了
该怎么解决呢
...全文
437 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cap_qin 2010-12-19
  • 打赏
  • 举报
回复
头疼 问题一样
swandragon 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eleven027 的回复:]
processes默认为150  我现在都改为300了
[/Quote]

改成300了还不行?
eleven027 2009-10-19
  • 打赏
  • 举报
回复
processes默认为150 我现在都改为300了
swandragon 2009-10-19
  • 打赏
  • 举报
回复
processes值过小
第一种方法:
在 Oracle 企业管理器例程-->会话中可以查看当前连接到数据库的详细信息
第二种方法:
SQLPLUS下运行:alter system set processes=250 scope=spfile;
http://toastvv.blog.sohu.com/80465358.html
zl3450341 2009-10-19
  • 打赏
  • 举报
回复
把tomcat的连接池的连接最大数,改为小于数据库配置的process数.

访问数据结束后调用close的代码,记得关闭连接.
eleven027 2009-10-19
  • 打赏
  • 举报
回复
恩 问题一样了

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧