c3p0连接池连接Oracle报ORA-12519
一月 15, 2009 in Java开源
在使用Spring集成Hibernate开发Web应用时,数据库持久层采用Hibernate,我在开发过程中为了测试的方便,
就在本机安装了Oracle Express 10g数据库,然后在hibernate.cfg.xml配置文件中添加c3p0作为连接池,
但是在开发过程中,频繁的进行测试,会发现经常爆出如下的错误信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | java.sql.SQLException: Listener refused the connection with the following error: ORA-12519, TNS:no appropriate service handler found The Connection descriptor used by the client was: localhost:1521:xe at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387) at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:420) at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:81) at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:96) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.acquireResource(C3P0PooledConnectionPool.java:89) at com.mchange.v2.resourcepool.BasicResourcePool.acquireUntil(BasicResourcePool.java:665) at com.mchange.v2.resourcepool.BasicResourcePool.access$500(BasicResourcePool.java:32) at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1204) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:368) |
上面的错误是由于Oracle Express 10g的默认配置连接数只有20,而在hibernate.cfg.xml配置使用c3p0连接池的最大连接数远远超过了这个数据库允许
的数量,因此但频繁的去连接数据库的时候,无法获得连接,数据库Listner就直接拒绝连接的请求,因此只要修改c3p0连接池最大最小连接数为
合适的值即可,如下的配置:
1 2 | 5 10 |
–