You are browsing the archive for hibernate.

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