java - Hibernate 和 C3p0 池的问题

标签 java hibernate c3p0

我正在使用 hibernate 4.3.0 和 c3p0 池测试 Web 应用程序,有时在重新加载上下文后我会收到此错误:

 INFO: Reloading Context with name [/AppName] is completed
    янв 07, 2015 12:07:14 AM org.apache.catalina.loader.WebappClassLoader loadClass
    INFO: Illegal access: this web application instance has been stopped already.  Could not load com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
    java.lang.IllegalStateException
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at com.mchange.v2.resourcepool.BasicResourcePool.checkIdleResources(BasicResourcePool.java:1584)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$2000(BasicResourcePool.java:44)
        at com.mchange.v2.resourcepool.BasicResourcePool$CheckIdleResourcesTask.run(BasicResourcePool.java:2116)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)

Exception in thread "C3P0PooledConnectionPoolManager[identityToken->1hge136961hmilhm17ylc97|17d425e]-AdminTaskTimer" java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$AsyncTestIdleResourceTask
    at com.mchange.v2.resourcepool.BasicResourcePool.checkIdleResources(BasicResourcePool.java:1584)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$2000(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$CheckIdleResourcesTask.run(BasicResourcePool.java:2116)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    ... 5 more

依赖项——也许 hibernate-c3p0 依赖项就足够了?

<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.2.1</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>4.3.0.Final</version>
</dependency>

hibernate 设置

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.timeout">3000</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.idle_test_period">300</property>

该错误的原因是什么,急于修复它? 所有与 hibernate-c3p0 相关的依赖项都在类路径中。

最佳答案

请引用我添加为评论的链接。在重新部署类被卸载期间,如果您无法关闭 Hibernate 的 sessionFactory,那么您将收到这些 ClassNotFound 错误。其中一个答案建议您可以添加自定义 ServletContextListener 来处理 contextDestroyed 事件。

关于java - Hibernate 和 C3p0 池的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808193/

相关文章:

mysql - Hibernate、C3P0、Mysql 连接池

java - 如何配置 C3P0 或 BoneCP 数据源以承受数据库故障转移/中断

java - Node java : Install error: "fatal error LNK1181 cannot open input file DelayImp.lib"

java - 静态变量、模式和 Android 性能

java - 关于用于关闭流的 close 方法()

java - 如何避免 Java 中的大型 if-else 语句

hibernate - 如何使字符串主键进入 hibernate 状态。 @GeneratedValue策略

java - JPA混合继承策略

java - 如何避免创建多余的实体?

spring - 需要帮助理解 Tomcat 线程池和 JDBC 连接池