• Hibernate连接池断开自动重连


    异常:

    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>

  • 相关阅读:
    线程
    unix架构
    Unix命令
    可重入函数reentrant function
    Eclipse 中 program arguments 与 VM arguments 的区别
    Java中Generics的使用
    Java的Reflection机制
    Java按值传递、按引用传递
    Java label
    LeetCode Merge Intervals
  • 原文地址:https://www.cnblogs.com/jxrichar/p/4741929.html
Copyright © 2020-2023  润新知