【问题标题】:hibernate not able to reconnect to the mysql DB休眠无法重新连接到 mysql 数据库
【发布时间】:2012-08-04 11:29:02
【问题描述】:

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

【问题讨论】:

标签: java mysql spring hibernate jakarta-ee


【解决方案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/

【讨论】:

    【解决方案2】:

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

    autoReconnect=true
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      相关资源
      最近更新 更多