2010-05-26 17 views
7

讓我描述我的問題 -Hibernate的通信鏈路故障在Hibernate中基於Java Servlet應用供電由MySQL

我有一個Java應用程序 - Hibernate作爲對MySQL數據庫接口層。我的應用程序中出現通信鏈接失敗錯誤。這個錯誤的發生是一個非常特殊的情況。我得到這個錯誤,當我離開MySQL服務器無人看管的時間超過大約6個小時(即,當沒有向MySQL發出超過約6小時的查詢時)。我在下面粘貼一個頂級「例外」級別描述,併爲詳細的堆棧跟蹤描述添加一個pastebin鏈接。

javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: 無法打開連接 - 致:org.hibernate.exception.JDBCConnectionException: 無法打開連接 - 產生的原因:com.mysql .jdbc.exceptions.jdbc4.CommunicationsException: 通信鏈路故障 - 從服務器成功接收的最後一個數據包是 1,274,868,181,212毫秒前。 成功發送到 服務器的最後一個數據包是0毫秒前。 - 引起:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException異常: 通信鏈路故障 - 從服務器成功收到的最後一個數據包是 1,274,868,181,212毫秒前。 成功發送到 服務器的最後一個數據包是0毫秒前。 - 致:java.net.ConnectException:連接 被拒絕:連接

的鏈接引擎收錄作進一步調查 - http://pastebin.com/4KujAmgD

我從這些異常陳述明白的是,MySQL是拒絕參加在閒置/無活動期之後的任何連接中。我一直在通過谷歌搜索閱讀這篇文章,並且知道解決這個問題的可能方法之一是爲c3p0屬性設置值,因爲c3p0與Hibernate捆綁在一起。具體來說,我從這裏閱讀http://www.mchange.com/projects/c3p0/index.html設置兩個屬性idleConnectionTestPeriod和preferredTestQuery將爲我解決這個問題。但是這些價值似乎並沒有產生影響。

這是解決此問題的正確方法嗎?如果沒有,解決這個問題的正確方法是什麼?

以下是相關的通信鏈接失敗問題在stackoverflow.com,但我還沒有找到他們的答案令人滿意的答案。 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure How to handle: Communication link failure

注1 - 我不,當我用我的申請時間可持續得到這個錯誤。 注2 - (是否不存在阻止工作C3P0屬性)我使用JPA與Hibernate,因此我hibernate.dialect等Hibernate屬性駐留在META-INF文件夾中的persistence.xml內

編輯 - 的我試過的c3p0參數在評論中

+1

請更新您的問題包括完整的Hibernate c3p0配置。 – BalusC 2010-05-26 12:13:43

+1

這裏,他們是 - <屬性名= 「hibernate.c3p0.idle_test_period」 值= 「14400」/> \t <屬性名= 「hibernate.c3p0.timeout」 值= 「25200」/> \t <屬性名= 「hibernate.c3p0.preferredTestQuery」> select 1; \t 2 Vatsala 2010-05-26 17:40:21

回答

1

即使我遇到這個錯誤,我把它解決了只有在C3P0配置使autoReconnect的=真後

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ex_app?autoReconnect=true</property> 
相關問題