hibernate无法重新连接到mysql DB

时间:2012-08-07 12:35:54

标签: java mysql spring hibernate java-ee

在我的spring-hibernate应用程序中,我们使用org.apache.tomcat.jdbc.pool.DataSource进行连接池。当我们启动服务器时,我们可以看到建立了与DB的连接,并且在mysql服务停止后,服务器开始抛出错误,说明连接丢失了。当mysql服务再次启动时,我们是否应该重新启动服务器以重新建立与DB的连接?即使在提供autoReconnect = true参数后,应用程序也无法建立与DB的连接。

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

我尝试使用dbcp和c3p0。我发现dbcp中存在某些问题,但c3p0工作正常。

autoReconnect=true

现在我的应用程序能够自动重新连接到MySQL DB。