Could not open Hibernate Session for transaction

來源:互聯網
上載者:User

最近做一個項目,布暑後出現"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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.