2012-08-07 127 views
2

在我的spring-hibernate應用程序中,我們使用org.apache.tomcat.jdbc.pool.DataSource進行連接池。當我們啓動服務器時,我們能夠看到與數據庫的連接已建立,並且在服務停止後,服務器開始拋出錯誤,指出連接已丟失。當mysql服務再次啓動時,我們是否應該重新啓動服務器以重新建立到數據庫的連接? Cuz甚至在提供autoReconnect = true參數後,應用程序無法建立與數據庫的連接。休眠不能重新連接到mysql數據庫

+1

檢查這個http://stackoverflow.com/questions/4726512/recover-hibernate-connection – NPKR 2012-08-07 12:42:13

回答

0

我試過使用dbcp和c3p0。我在dbcp中發現了一些問題,但c3p0工作正常。

autoReconnect=true 

現在我的應用程序能夠自動重新連接到MySQL數據庫。

1

嘗試添加下列參數:

validationQuery="SELECT 1" 
testOnBorrow="true" 

工作原理:連接池試圖返回連接之前運行validationQuery。如果validationQuesry失敗,dbcp將放棄連接,創建一個新連接並將其返回。

下面是一個例子:

<Resource name="jdbc/cooldatabase" 
      description="Strandls.com license database" 
      auth="Container" 
      type="javax.sql.DataSource" 
      factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
      driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://localhost:3306/cooldatabase?autoReconnect=true" 
      username="cooluser" 
      password="coolpassword" 
      initialSize="0" 
      maxActive="20" 
      maxIdle="10" 
      minIdle="0" 
      maxWait="-1" 
      validationQuery="SELECT 1" 
      testOnBorrow="true" 
      poolPreparedStatements="true" 
      removeAbandoned="true" 
      removeAbandonedTimeout="60" 
      logAbandoned="true"/> 

完整細節:http://amitcodes.com/2008/07/26/16/