【发布时间】:2014-11-10 23:01:47
【问题描述】:
当我尝试连接到如图所示设置的测试数据库时,我遇到了上述所有错误。
大部分配置取自工作生产环境,但我无法连接到我的测试数据库。
我尝试了各种方法,但都无法正常运行。
我可以通过 PLSQL developer 或 SQLPLUS 等其他方法连接测试数据库。
我遇到的错误是:
org.hibernate.exception.GenericJDBCException: Cannot open connection
....
....
....
Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
....
....
....
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:1422)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:606)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:526)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:756) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:683)
这是我的休眠配置文件:
<session-factory>
<property name="hibernate.connection.url">jdbc:oracle:thin:@ipaddress:1521:dbname</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.username">user</property>
<property name="hibernate.connection.password">password</property>
<property name="connection.autoReconnect">true</property>
<property name="connection.autoReconnectForPools">true</property>
<property name="connection.is-connection-validation-required">true</property>
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">1</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.timeout">50000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.validate">false</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<mapping resource etc>
</session-factory>
谁能帮我解决这个问题?
【问题讨论】:
-
在 WARNING 中检查您的日志以获取有关说服 c3p0 放弃尝试获取连接的(最后)异常的信息。可能是名为
com.mchange.v2.resourcepool.BasicResourcePool的记录器。 -
在 com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1422) 在 com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:606) 在 com.mchange .v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:526) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:756) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection (C3P0PooledConnectionPool.java:683)
-
被截断了。 (也许最好将其编辑到帖子中,而不是将其放在评论中。或者我看到它被截断了,因为我现在在 iphone 应用程序上。)你需要更远的消息和根本原因异常往下走。
-
这是代码中显示的最后一个错误,编辑了主帖。
-
唉,它仍然被截断,下面有一个异常,最后一次尝试获取连接时引发的异常。也许您可以找到一个日志设置以显示更多内容。也许更容易,将
com.mchange.v2.resourcepool.BasicResourcePool的日志控制杆设置为 FINE 或 DEBUG,您将看到为每次获取尝试记录的相关异常。
标签: java oracle hibernate c3p0