2012-09-16 119 views
9

我們正在使用JPA2.0和Hibernate3.0實現一個Web應用程序。連接池配置在位於META-INF文件夾中的persistence.xml中設置。C3P0配置!在哪裏和如何?


的persistence.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?

歡迎任何幫助。

回答

4

我有這個問題,我放在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> 
+0

Philipi Willemann是對的,如果您添加c3p0 config xml,屬性將被正確讀取。 N.B.如果你添加了一些已經在hibernate.config文件中描述過的配置屬性,hibernate會忽略它們。 僅供參考,你可以在這裏找到更多的信息http://www.mchange.com/projects/c3p0/index.html#configuration_files在「通過c3p0-config.xml覆蓋c3p0默認值」部分 – sataniccrow

1

我有同樣的確切問題,我的問題是,我的web應用程序容器(Tomcat)的是管理我的數據庫連接。我必須將c3p0配置從我的persistence.xml文件移動到Tomcat的context.xml。如果這是您的問題,Domenic D提供的鏈接是一個很好的開始。