Hibernate 启动问题: A ResourcePool could not acquire a resource from its primary factory or source.

太长不看版:Driver问题导致。


详细版:

Background:

  • 使用Hibernate连接Oracle,需求要The version of Oracle should be upgraded from 12c to 19c. So I have to change the ojdbc to ojdbc8(ver 19.3.0.0).
  • 我的操作是在idea工程中remove原有的dependence中移除ojdbc,然后+从官网下载最新的ojdbc8.
  • 执行单元测试都没有问题,结果在run server的时候报错。
  Caused by: 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 org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:78)
      at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
      ... 36 more
  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:1319)
      at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
      at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
      at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
      ... 39 more

Troubleshooting:

  • 网上搜了很多这个错误的原因,我就不再复制了。有看到说是驱动的问题但是我想UT可以成功不应该是驱动的问题。
  • 思考:
  1. 我的工程因为是用了Hibernate,而且配置都没有改变,不应该是Hibernate的问题。
  2. 于是查看Oracle中的数据也没有发现明显的问题。
  3. 看到异常中存在C3P0的类于是跟了跟代码,看了一个小时没看明白底层逻辑。

最后发现我们的工程是用ANT工具进行build,而我新下载的ojdbc没有放到build.xml中指定的lib。UT可以成功是因为UT只用的IDEA通过javac的build,所以配置在project library中就完全可用。

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值