首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

net.sf.hibernate.HibernateException: Session is

2011-11-15 
session is closed 这个报错把我搞疯了,高手快来帮忙啊!net.sf.hibernate.HibernateException:Sessioniscl

session is closed 这个报错把我搞疯了,高手快来帮忙啊!
net.sf.hibernate.HibernateException:   Session   is   closed
at   net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3283)
at   com.kingstargroup.system.OnLineBean.updateOnLine(OnLineBean.java:197)
at   org.apache.jsp.webui.end_jsp._jspService(end_jsp.java:56)
at   org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
at   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at   org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at   org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at   org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at   org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at   org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at   org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at   org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at   org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at   org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at   org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at   org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at   org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at   org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
at   org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
at   org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at   org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at   java.lang.Thread.run(Thread.java:595)

[解决办法]
你在程序中 关闭了session了
at com.kingstargroup.system.OnLineBean.updateOnLine(OnLineBean.java:197)
看你OnLineBean中updateOnLine()调用的session应该在之前被你关闭了。
[解决办法]
updateOnLine()函数前肯定已经关闭session了
[解决办法]
或许程序进行所用的session 你提前进行了关闭
[解决办法]
在POJO.hbm.xml配制文件中,例如:
<class name= "Table " table= "TABLE " lazy= "false ">
.......
</class>

注意把lazy改成false,你这样再试试看~~~


[解决办法]
试试ls的方法,将你的数据检索策略改成立即加载~
[解决办法]
Session is closed 表示session已经关闭了

你检查一下,在你用到session的时候该session是不是已经被你在哪里关闭了呢
[解决办法]
OpenSessionInView,根本解决之道
[解决办法]
建议最好不要将lazy= "false ",那样如果关系复杂那会把你相关的所有数据拿出来,查询出来的是一个巨大的结果集

在session打开的时候,使用语句Hibernate.initialize()来对你需要延迟加载的数据进行预加载。
[解决办法]
applebomb(袋装苹果) ( ) 信誉:100 2007-07-26 12:50:26 得分: 0

建议最好不要将lazy= "false ",那样如果关系复杂那会把你相关的所有数据拿出来,查询出来的是一个巨大的结果集

在session打开的时候,使用语句Hibernate.initialize()来对你需要延迟加载的数据进行预加载。

---------------------------


你说的是有一点道理,但是我是希望楼主按我的想法改下试试,你看下他的错:
net.sf.hibernate.HibernateException: Session is closed

这显然是数据还没取出来Session就关了,
我想楼主的代码应该是把数据库的数据取出来就放到一个容器中,再马上把Session关了,
如果lazy为true的话显能就是这样的错了.......

你说
"建议最好不要将lazy= "false ",那样如果关系复杂那会把你相关的所有数据拿出来,查询出来的是一个巨大的结果集
"
我认为,取多大的结果因当是你sql语句的问题,如果你的意思是取了多个结果会造成结果的积累,这还有点道理,但是,事情想做到完美是很难的,Java本身不就以牺牲效率为代价的吗???先把功能做到了,再谈优化吧~!!!!!!

[解决办法]
LS 说的有道理
打断跟跟 你的Session在调用之前就关闭了
[解决办法]
仔细检查代码,或则好好debug一下吧。session肯定在调用之前close了
[解决办法]
延迟检索问题。修改配置文件的可以解决
[解决办法]
检查一下事务控制呢,是不是把session交给容器控制了

热点排行