SSH框架,Linux环境里项目问题解决: Could not roll back Hibernate transaction;TransactionException: JDBC rollback

来源:互联网 发布:医学英文数据库 编辑:程序博客网 时间:2024/05/24 03:23



介绍:

      ssh开发的项目,放到Linux上如果8个小时不进行任何操作,则会出现以下问题:

 

解决办法:

1.如果mysql是5以下的可以在hibernate.cfg.xml配置--autoReconnect= true

<property name="connection.url">jdbc:mysql://localhost:3306/yeb?useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true</property>

2.如果mysql是5或者5以上的则上述方法没效果

  修改inux环境的etc/my.cnf (在Window下的为my.ini)

  在此文件末尾添加wait_timeout=31536000(1年)

3.用了第二种方法,但是第二天再访问出现了新的问题:

解决方法:用数据连接池来解决

这里用C3P0

步骤如下:

步骤一:

导入C3P0.jar.

步骤二:

在hibernate.cfg.xml中添加C3P0的配置:

[html]
  1. <!-- 配置连接池 -->  
  2.         <property name="hibernate.connection.provider_class">  
  3.                org.hibernate.connection.C3P0ConnectionProvider  
  4.             </property>  
  5.             <property name="c3p0.acquire_increment">1</property>  
  6.             <property name="c3p0.idle_test_period">300</property>  
  7.             <property name="c3p0.max_size">20</property>  
  8.            <property name="c3p0.max_statements">100</property>  
  9.             <property name="c3p0.min_size">5</property>  
  10.             <property name="c3p0.timeout">90</property>  
  11.             <property name="c3p0.preferredTestQuery ">select 1 from user where id=1</property>  
  12.             <property name="c3p0.idleConnectionTestPeriod ">18000</property>             
  13.            <property name="c3p0.maxIdleTime">25000</property>           
  14.            <property name="c3p0.testConnectionOnCheckout">true</property>  


hibernate.cfg.xml文件:


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 配置事务实现方式 -->
        <property name="transaction.factory_class">
            org.hibernate.transaction.JDBCTransactionFactory
        </property>
        <!-- 配置JDBC里batch的大小 -->
        <property name="jdbc.batch_size">50</property>
        <property name="cache.use_second_level_cache">false</property>
        <!-- 配置线程安全的session -->
        <property name="current_session_context_class">thread</property>
        <!-- 显示SQL -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <!-- 配置数据库方言 -->
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        <!-- 配置数据库连接 -->
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="connection.username">root</property>
        <property name="connection.password">Passwd001</property>
        <property name="connection.url">
            jdbc:mysql://localhost:3306/yeb?useUnicode=true&amp;characterEncoding=utf-8</property>
        <!-- 配置连接池 -->
        <property name="hibernate.connection.provider_class">
            org.hibernate.connection.C3P0ConnectionProvider
        </property>
        <property name="c3p0.acquire_increment">1</property>
        <property name="c3p0.idle_test_period">300</property>
        <property name="c3p0.max_size">20</property>
        <property name="c3p0.max_statements">100</property>
        <property name="c3p0.min_size">5</property>
        <property name="c3p0.timeout">90</property>
        <property name="c3p0.preferredTestQuery ">select 1 from user where id=1</property>
        <property name="c3p0.idleConnectionTestPeriod ">18000</property>
        <property name="c3p0.maxIdleTime">25000</property>
        <property name="c3p0.testConnectionOnCheckout">true</property>
        <mapping class="com.hjc.entity.TokenEntity"/>
        <mapping class="com.hjc.entity.CardIdEntity"/>
        <mapping class="com.hjc.entity.SysSetEntity"/>
        <mapping class="com.hjc.entity.TradeRecordEntity"/>
        <mapping class="com.hjc.entity.UserInfoEntity"/>
        <mapping class="com.hjc.entity.AdminInfoEntity"/>
    </session-factory>
</hibernate-configuration>




阅读全文
1 0
原创粉丝点击