wang08meng08 2017-06-24 05:32 采纳率: 50%
浏览 1180

hibernate项目运行一段时间后,JDBC报错

type Exception report

message JDBC commit failed

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.hibernate.TransactionException: JDBC commit failed
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:161)
filter.TestFilter.doFilter(TestFilter.java:34)

root cause

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during commit(). Transaction resolution unknown.
sun.reflect.GeneratedConstructorAccessor21.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:526)
com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
com.mysql.jdbc.Util.getInstance(Util.java:408)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1559)
org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:170)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:146)
filter.TestFilter.doFilter(TestFilter.java:34)

项目使用的是hibernate+struts2+Mysql;项目不是跑起来就报错,是运行一段时间后就报错。服务器重启就可以了,但一段时间后又报错。mysql驱动用3.0的时候也是这个情况,不过抱错是No operations allowed after connection closed;现在换成最新的5.o就报这个个错误。求高手解决。。。

事务我直接用了个过滤器
public class TestFilter implements Filter {

@Override
public void destroy() {
    // TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest requ, ServletResponse respo,
        FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request=(HttpServletRequest)requ;
    request.setCharacterEncoding("utf-8");
    Session session=HibernateSessionFactory.getSession();
    Transaction tr=session.beginTransaction();
    chain.doFilter(request, respo);

    tr.commit();------报错在这行,34行

    HibernateSessionFactory.closeSession();

}
@Override
public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub
}

}

  • 写回答

3条回答

  • wang08meng08 2017-06-24 05:36
    关注

    hibernate的xml

    <session-factory>
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        <property name="connection.url">
            jdbc:mysql://localhost:3306/test
        </property>
        <property name="connection.username">afda</property>
        <property name="connection.password">3456sdf</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
            <!-- 当数据库连接异常中断时,是否自动重新连接 -->
    <property name="connection.autoReconnect">true</property>
        <property name="myeclipse.connection.profile">
            mqsqllink
        </property>
        <mapping resource="entity/Tet.hbm.xml" />
        <mapping resource="entity/UserInfo.hbm.xml" />
    
    </session-factory>
    

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料