java - C3P0 配置!在哪里以及如何?

标签 java hibernate jpa-2.0 connection-pooling c3p0

我们正在使用 JPA2.0 和 Hibernate3.0 实现一个 Web 应用程序。连接池配置在位于 META-INF 文件夹中的 persistence.xml 中设置。


持久性.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="MyPU" transaction-type="RESOURCE_LOCAL">
        <!-- Entity Classes-->
        <properties>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="bytecode.provider"   value="org.hibernate.bytecode.javassist.BytecodeProviderImpl"/>
            <property name="hibernate.connection.username" value="{username}"/>
            <property name="hibernate.connection.password" value="{password}"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.connection.url" value="{jdbc url}"/>

            <property name="hibernate.c3p0.min_size" value="1"/>
            <property name="hibernate.c3p0.timeout" value="1000"/>
            <property name="hibernate.c3p0.acquire_increment" value="1"/>
            <property name="hibernate.c3p0.idle_test_periods" value="600"/>
            <property name="hibernate.c3p0.testConnectionOnCheckin" value="true"/>
            <property name="hibernate.c3p0.preferredTestQuery" value="SELECT 1;"/>
       </properties>
    </persistence-unit>
</persistence>

我们在连接池配置方面遇到了问题。似乎配置没有效果,连接将在 8 小时后断开。 我们是否需要另一个配置文件,如 hibernate.cfg.xml 或 hibernate.properties?

最佳答案

我在 persistence.xml 中设置的属性也有同样的问题,但不会影响 c3p0。

调查http://www.mchange.com/projects/c3p0/index.html#configuration_files我尝试将一个名为 c3p0-config.xml 的 xml 文件放入 WEB-INF/classes 中,它运行良好。

这是一个 c3p0-config.xml 文件的例子:

<c3p0-config>
  <default-config>
    <property name="automaticTestTable">con_test</property>
    <property name="checkoutTimeout">30000</property>
    <property name="idleConnectionTestPeriod">30</property>
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
    <property name="maxStatements">200</property>

    <user-overrides user="test-user">
      <property name="maxPoolSize">10</property>
      <property name="minPoolSize">1</property>
      <property name="maxStatements">0</property>
    </user-overrides>

  </default-config>
</c3p0-config>

关于java - C3P0 配置!在哪里以及如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446266/

相关文章:

java - JASPIC Wildfly 9 validateRequest with session

java - 依赖项问题 - Eclipse Java 项目

java - 在 Maven 中指定 Apache Tomcat "lib"文件夹

java - 如何解决 java.lang.ClassCastException : hibernate

java - JPA OneToOne,外键在 Spring Boot 上获取 null

java - JPA 2 + Criteria API + 获取子查询中最旧的元素

java - 具有完全限定类名的 HQL

java - 字节数组与整数数组

java - 在 JPA 中的各个列上使用 DISTINCT 关键字

json - 如何解决由Many TO Many hibernate双向映射引起的json序列化器中的循环引用?