c3p0 连接池库与 Hibernate 3.2.6/JPA - 无法打开连接

如何解决c3p0 连接池库与 Hibernate 3.2.6/JPA - 无法打开连接

我的应用程序有两个石英作业同时从 Oracle DB 读取两个不同的表。 我正在尝试使用带有 Hibernate 和 Oracle 的 c3p0 从池中获取连接。当 Tomcat 7 启动时,C3P0 似乎已初始化:

2021-02-15 18:47:26,271 [信息] Hibernate EntityManager 3.2.1.GA
2021-02-15 18:47:26,290 [信息] Hibernate 注释 3.2.1.GA
2021-02-15 18:47:26,299 [信息] Hibernate 3.2.6
...
2021-02-15 18:47:27,473 [INFO] 初始化 c3p0-0.9.1 [建于 2007 年 1 月 16 日 14:46:42;调试?真的;跟踪:10]
2021-02-15 18:47:27,621 [信息] 正在初始化 c3p0 池... com.mchange.v2.c3p0.PoolBackedDataSource@add8f7b3 [ 连接池数据源 -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@e6d03554 [ acquireIncrement -> 1,acquireRetryAttempts -> 30,acquireRetryDelay -> 1000,autoCommitOnClose -> false,automaticTestTable -> null,... ]

2021-02-15 18:47:28,240 [INFO] RDBMS:Oracle,版本:Oracle 数据库 11g 版本 11.1.0.0.0 - 生产
2021-02-15 18:47:28,241 [INFO] JDBC 驱动:Oracle JDBC 驱动,版本:10.2.0.4.0
2021-02-15 18:47:28,280 [信息] 使用方言: org.hibernate.dialect.Oracle10gDialect

但是过了几行还是显示Hibernate内置连接池,不知道是不是应该这样? :

2021-02-15 18:47:37,726 [INFO] 使用 Hibernate 内置连接 池(不用于生产!)
2021-02-15 18:47:37,726 [INFO] Hibernate 连接池大小:20

无论如何,在第一个作业成功从 Oracle DB 获取数据后,第二个作业无法从池中获取连接,因为它已关闭

2021-02-15 18:48:38,923 [WARN] sql 错误:0,sqlState:空
2021-02-15 18:48:38,923 [错误] com.mchange.v2.c3p0.PoolBackedDataSource@add8f7b3 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@e6d03554 [ acquireIncrement -> 1,acquireRetryAttempts -> 30,acquireRetryDelay -> 1000,autoCommitOnClose -> false,automaticTestTable -> null,breakAfteracquireFailure -> false,checkoutTimeout -> 0, connectionCustomizerClassName -> null,connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false,factoryClassLocation -> null,forceIgnoreUnresolvedTransactions -> false,identityToken -> 2zgg5baf1aa5t7d1frz5fs|700f6fc5,idleConnectionTestPeriod -> 3000,initialPoolSize -> 10,maxAdministrativeTasktime -> 0, maxConnectionAge -> 0,maxIdleTime -> 300, maxIdleTimeExcessConnections -> 0,maxPoolSize -> 20,maxStatements -> 50,maxStatementsPerConnection -> 0,minPoolSize -> 10,嵌套数据源 -> com.mchange.v2.c3p0.DriverManagerDataSource@2f7ccb64 [描述 -> null,driverClass -> null,factoryClassLocation -> null,identityToken -> 2zgg5baf1aa5t7d1frz5fs|6a16a596,jdbcUrl -> jdbc:oracle:thin:@10.129.12.158:1520:orcl,属性 -> {user=,密码=,autocommit=true,release_mode=auto} ],优选TestQuery -> null,propertyCycle -> 0, testConnectionOnCheckin -> 假,testConnectionOnCheckout -> 假, unreturnedConnectionTimeout -> 0,usesTraditionalReflectiveProxies -> 错误的; userOverrides: {} ],dataSourceName -> null,factoryClassLocation -> null,identityToken -> 2zgg5baf1aa5t7d1frz5fs|63308385,numHelperThreads -> 3 ] 已经 closed() -- 你不能再使用它了。
2021-02-15 18:48:38,923 [DEBUG] [docadmin] ccmwsWebQuartz::GenerateDocumentTypeOfRequestJob.generateDocumentTypeOfRequest() - errororg.hibernate.exception.GenericJDBCException:无法打开连接
2021-02-15 18:48:38,923 [DEBUG] ccmwsWebQuartz::GenerateDocumentTypeOfRequestJob.generateRequest():异常:org.hibernate.exception.GenericJDBCException:无法打开连接 1613411318923 毫秒。 javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:无法打开连接 在 org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629) 在 org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:73) 在 com.ct.contentintegration.scheduler.GenerateDocumentTypeOfRequestJob.generateDocumentTypeOfRequest(GenerateDocumentTypeOfRequestJob.java:165) 在 com.ct.contentintegration.scheduler.GenerateDocumentTypeOfRequestJob.generateRequest(GenerateDocumentTypeOfRequestJob.java:89) 在 com.ct.contentintegration.scheduler.GenerateDocumentTypeOfRequestScheduler.execute(GenerateDocumentTypeOfRequestScheduler.java:23) 在 org.quartz.core.JobRunShell.run(JobRunShell.java:202) 在 org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
引起:org.hibernate.exception.GenericJDBCException:无法打开连接

配置文件如下所示: persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    
    <persistence-unit name="jpaCcmwsWebJob">

        <provider>org.hibernate.ejb.HibernatePersistence</provider>

<!--                        RAZVOJ                               -->

        <properties>

            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@10.129.12.158:1520:orcl" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />

            <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver" />

            <property name="hibernate.connection.password" value="docadmin2010" />

            <property name="hibernate.connection.username" value="docadmin" />

            <property name="hibernate.show_sql" value="false" />
            

            
            <property name="hibernate.c3p0.acquire_increment" value="1" />
            <property name="hibernate.c3p0.min_size" value="10" />
          <property name="hibernate.c3p0.max_size" value="20" />
          <property name="hibernate.c3p0.timeout" value="300" />
          <property name="hibernate.c3p0.max_statements" value="50" />
          <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider" />
          <property name="hibernate.c3p0.idle_test_period" value="3000" />

        </properties>

    </persistence-unit>

</persistence>

Oracle 连接类型为基本

知道我做错了什么吗?

解决方法

这是一个旧的休眠版本。

您对 hibernate-c3p0 和 c3p0 的依赖项是什么?

从另一个帖子检查,似乎 c3p0 的连接提供程序类是 org.hibernate.connection.C3P0,但后来在 org.hibernate.connection.C3P0ConnectionProvider 中被弃用。

也许根据您的休眠版本,您应该尝试使用较旧的连接提供程序类。

hibernate connection pool

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?