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
}

}

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>

事务我直接写在了个过滤器

import javax.servlet.Filter;
public class TestFilter implements Filter {
@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();

}

true