[英]Hibernate JDBCConnectionException - C3p0 connection pooling
我們正在使用HibernateORM為mysql數據庫使用C3p0連接池。
以下是hibernate.cfg.xml中的設置
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">300</property>
<property name="hibernate.c3p0.maxConnectionAge">3600</property>
<property name="hibernate.c3p0.timeout">120</property>
<property name="hibernate.c3p0.max_size">300</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.preferredTestQuery">select 1;</property>
為了在28800秒后重新連接到數據庫,我們設置了參數-
c3p0.testConnectionOnCheckout=true
但是我們正面臨休眠異常。
因此,如果現在立即調用數據庫並等待8個小時(或設置my.cnf的變量wait_timeout的時間長短),那么如果再次調用該數據庫,則會出現該異常。 堆棧跟蹤 -
org.hibernate.exception.JDBCConnectionException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2536)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
為了快速解決此問題,我們每天早晨重新啟動應用程序服務器。
任何幫助,將不勝感激
- 謝謝
如果您的配置是您的實際想法,則這些異常絕不會來自過時的連接,這些連接在閑置並在池中超時后被檢出。 一個小時后的連接無論如何都會過期,它們永遠不會閑置超過五分鍾,並且會在結帳時進行測試。
發生兩件事之一:
1)您沒有想要的配置,配置和它打算配置的c3p0數據源之間的中間出問題了。
幸運的是,c3p0數據源在初始化時以INFO級別轉儲其配置。 檢查您的日志,並驗證您的池是否具有您想要的配置。
2)也許您的應用程序將Connections保留在池外,而不是將它們檢查一小段時間並關閉()將它們關閉,以便c3p0 ca可以進行所有測試,到期等操作,如果您的應用程序長時間持有Connections他們超時了,c3p0對此無能為力。 c3p0可以幫助您測試這是否正在發生。 嘗試使用配置參數unreturnedConnectionTimeout和debugUnreturnedConnectionStackTraces。 一起使用。 看到
http://www.mchange.com/projects/c3p0/#configuring_to_debug_and_workaround_broken_clients
http://www.mchange.com/projects/c3p0/index.html#unreturnedConnectionTimeout
http://www.mchange.com/projects/c3p0/index.html#debugUnreturnedConnectionStackTraces
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.