当前位置: 代码迷 >> Java Web开发 >> org.hibernate.SessionException: Session is closed!解决办法
  详细解决方案

org.hibernate.SessionException: Session is closed!解决办法

热度:801   发布时间:2016-04-16 22:26:16.0
org.hibernate.SessionException: Session is closed!
系统用的SSH框架,F5刷新页面的时候偶尔会报org.hibernate.SessionException: Session is closed! code=html](连续多次按刷新会报错,慢点按刷新又没有问题,报错之后再次刷新也可以刷出页面)

每次操作后session都关闭了的

        session = sessionFactory.getCurrentSession();
        session.beginTransaction();
        ......
        SQLQuery query=session.createSQLQuery(sql);
        session.getTransaction().commit();


org.hibernate.SessionException: Session is closed! 
    org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:72)
    org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1347)
    sun.reflect.GeneratedMethodAccessor416.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
    com.sun.proxy.$Proxy23.beginTransaction(Unknown Source)

这个报错貌似是说session已经关闭,但是我还是有beginTransaction的操作。
------解决方案--------------------
在commit之后应该关闭session

session().clear();
session().flush();
session().close() ;

------解决方案--------------------
你就是在beginTransaction中报的错,说明你getCurrentSession得到的session已经是closed的了。
------解决方案--------------------
配一下struts.xml的OpenSessionInView这个Filter看看可不可以解决。具体写法不知道了,自己google吧。到处都是。
  相关解决方案