Could not open Hibernate Session for transaction

最近做一個項目,布暑後出現"Could not open Hibernate Session for transaction",大意是數據庫連接超時,需要設置重連.在這裏轉一個網上找的解決方案:

 

spring2.x+hibernate3+struts2 在首次登陸系統時拋出的異常,再登陸就正常。

 

異常:

javax.servlet.ServletException: org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:

 

root cause

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:

 

 

解決方案:

1.

給jdbc url 增加 autoReconnect=true 一定能解決你的問題,可以定期觀察一下 show processlist
改進方法如下:
<property name="url" value="jdbc:mysql://localhost/數據庫實例名稱?&useUnicode=true&characterEncoding=utf-8&autoReconnect=true"/>

 

2.

尋找支持重連的連接池。
           注意:c3p0連接池支持重連;重連參數是:
               idleConnectionTestPeriod   設置空閒連接測試周期
               preferredTestQuery : 設置一查詢語句,用於重連測試
              testConnectionOnCheckin設置爲true
              testConnectionOnCheckout設置爲true

 

在sessionFactory裏配置:

<property name="hibernateProperties">
   <props>

        <prop key="hibernate.autoReconnect">true</prop>

  </props>
</property>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章