2012-05-11 221 views
0

我正在使用spring/hibernate應用程序並配置了c3p0連接池。啓用c3p0連接池。我驗證了我的日誌。c3p0連接池屬性沒有設置?

10 May 2012 14:55:56 INFO AbstractPoolBackedDataSource:462 - Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource 

但問題是,編程我得到配置數據源,並試圖查看其屬性,但什麼都性能我的配置文件中設置,它們不是集合。請在下面找到配置和調試值。

<prop key="hibernate.connection.pool.size">20</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.format_sql">true</prop> 
       <prop key="hibernate.use_sql_comments">true</prop> 
       <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> 
       <prop key="hibernate.c3p0.min_size">5</prop> 
       <prop key="hibernate.c3p0.max_size">20</prop> 
       <prop key="hibernate.c3p0.timeout">300</prop> 
       <prop key="hibernate.c3p0.max_statements">50</prop> 
       <prop key="hibernate.c3p0.idle_test_period">3000</prop> 
       <prop key="hibernate.jdbc.batch_size">50</prop> 
       <prop key="hibernate.c3p0.preferredTestQuery">SELECT GETDATE()</prop> 
       <prop key="hibernate.c3p0.testConnectionOnCheckout">true</prop> 

調試值:

enter image description here

我一樣得到如下數據源。

WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); 
.......getBean("datasourceId"); 
.................. 

在屬性中我設置了首選測試查詢。這在圖像中也是空的。

我錯過了這裏的任何東西。謝謝!

+0

你可以檢查是否在nexstedDataSource中設置了這些屬性 – rascio

+0

我驗證過那裏也沒有。 – user1016403

回答

0

我用它如下

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="pooledConn"/> 
    <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect" >${HIBERNATE.DIALECT}</prop> 
     <!-- <prop key="hibernate.show_sql">${HIBERNATE.SHOW_SQL}</prop> --> 
      <prop key="hibernate.show_sql">true</prop> 
     <prop key="hibernate.hbm2ddl.auto">${HIBERNATE.hBM2DDL.AUTO}</prop> 
     </props> 
    </property> 

和它的作品絕對適合我,請你貼上你的配置以獲得更多幫助

0

嘗試將以下內容添加到您的配置文件中:

<prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop> 
0

我遇到了同樣的問題,需要時間才能找出解決方案。

我使用Hibernate 4.0.1和mysql 5.1(沒有彈簧框架),我正面臨着這個問題。首先確保您正確配置了c3p0罐子,這是必不可少的。

我在hibernate.cfg.xml

<property name="hibernate.c3p0.validate">true</property> 
<property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property> 
<property name="hibernate.c3p0.min_size">5</property> 
<property name="hibernate.c3p0.max_size">20</property> 
<property name="hibernate.c3p0.max_statements">50</property> 
<property name="hibernate.c3p0.preferredTestQuery">SELECT 1;</property> 
<property name="hibernate.c3p0.testConnectionOnCheckout">true</property> 
<property name="hibernate.c3p0.idle_test_period">10</property> 
<property name="hibernate.c3p0.acquireRetryAttempts">5</property> 
<property name="hibernate.c3p0.acquireRetryDelay">200</property> 
<property name="hibernate.c3p0.timeout">40</property> 

使用這些屬性,但它是沒有用的「事業C3P0依然在採取默認屬性不是我在hibernate.cfg.xml設置的屬性,你可以在日誌中檢查它。所以,我搜索了很多網站的正確解決方案,最後我想出了這個。刪除cfg.xml中的C3p0屬性,並在根路徑(以及cfg.xml)中創建c3p0-config.xml並設置屬性,如下所示。

<c3p0-config> 
<default-config> 
<property name="automaticTestTable">con_test</property> 
<property name="checkoutTimeout">40</property> 
<property name="idleConnectionTestPeriod">10</property> 
<property name="initialPoolSize">10</property> 
<property name="maxPoolSize">20</property> 
<property name="minPoolSize">5</property> 
<property name="maxStatements">50</property> 
<property name="preferredTestQuery">SELECT 1;</property> 
<property name="acquireRetryAttempts">5</property> 
<property name="acquireRetryDelay">200</property> 
<property name="maxIdleTime">30</property> 
</default-config> 
</c3p0-config> 

你要是跑不過,ORM採用JDBC連接而不是C3P0連接池,因爲我們要在hibernate.cfg.xml中添加這些屬性

<property name="hibernate.c3p0.validate">true</property> 

<property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property> 

現在一切正常(至少它爲我工作得很好),問題解決了。

檢查以下參考。

http://www.mchange.com/projects/c3p0/index.html#configuring_connection_testing

https://community.jboss.org/wiki/HowToConfigureTheC3P0ConnectionPool

我希望這能解決你的問題。