【问题标题】:Existing code throws this error [Hibernate + c3p0 + Oracle11g]: a resourcepool could not acquire a resource from its primary factory or source现有代码抛出此错误 [Hibernate + c3p0 + Oracle11g]:资源池无法从其主工厂或源获取资源
【发布时间】: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.j‌​ava:1422)
  at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResour‌​cePool.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(C3P0P‌​ooledConnectionPool.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


【解决方案1】:

它发生的原因有很多,比如

您输入的数据库配置详细信息不正确或已更改,例如Confluence 数据库的数据库名称或数据库用户名/密码。

1) 数据库的 URL 不正确。

2) 数据库服务器没有运行。如果您的数据库服务器已关闭,请重新启动它并检查日志以查看它失败或停止的原因。

3) 网络已关闭(或 confluence 和正在干扰的数据库服务器之间有防火墙)并且无法建立与数据库的连接。

4)您的数据库密码已过期。

5) 检查您的驱动程序,是否存在于您的类路径中。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2011-03-28
  • 2018-11-09
  • 2017-01-01
  • 2012-10-14
  • 2014-03-30
  • 2015-03-02
相关资源
最近更新 更多