could not initialize proxy - the owning Session was closed

开发环境:
Struts 2 + Spring 2.0 + Hibernate 3.2

异常如下:

2009-3-21 17:59:05 org.hibernate.LazyInitializationException <init>
严重: could not initialize proxy - the owning Session was closed
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closedat org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:60)at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:172)at com.kindion.blog.ArticleType$$EnhancerByCGLIB$$40d67a28.toString(<generated>)at java.lang.String.valueOf(Unknown Source)at java.io.PrintStream.print(Unknown Source)at java.io.PrintStream.println(Unknown Source)at com.kindion.service.impl.ArticleServiceImplTest.testQueryAll(ArticleServiceImplTest.java:35)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at junit.framework.TestCase.runTest(TestCase.java:154)at junit.framework.TestCase.runBare(TestCase.java:127)at junit.framework.TestResult$1.protect(TestResult.java:106)at junit.framework.TestResult.runProtected(TestResult.java:124)at junit.framework.TestResult.run(TestResult.java:109)at junit.framework.TestCase.run(TestCase.java:118)at junit.framework.TestSuite.runTest(TestSuite.java:208)at junit.framework.TestSuite.run(TestSuite.java:203)at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

分析原因:
Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个Session 范围之内进行。如果Service 层返回一个启用了延迟加载功能的领域对象给Web层,当Web层访问到那些需要延迟加载的数据时,由于加载领域对象的Session已经关闭,这些导致了延迟加载数据的访问异常!

Spring 为此提供了一个OpenSessionInViewFilter过滤器,它的主要功能是使每个请求过程绑定一个Session,即使最初的事务已经完成了,也可以在Web层进行延迟加载的操作。

解决方法:(经过查询相关资料,虽然找到这个解决办法,但是我的问题还是没有解决,在此帖出来,希望有人用得着)

在web.xml中配置filter来解决。

< filter > < filter-name > hibernateFilter </ filter-name > < filter-class >    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</ filter-class > </ filter > < filter-mapping > < filter-name > hibernateFilter </ filter-name > < url-pattern > *.action </ url-pattern > </ filter-mapping > 

==================================================================

我的问题解决了,我的问题出现在 web.xml 配置文件下 多个Filter 顺序 的问题

如果你有用到其他的过滤器(Filter),你就把OpenSessionInViewFilter这个过滤器放到你其他过滤器的前面。

<!--============SrpingOpenSessionInViewFilter============= -->
<!--把它放在其他Filter的前面--><filter><filter-name>hibernateFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
<!-- ============Sturts 2 Filter============= --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

the owning Session was closed相关推荐

  1. the vm session was closed before any attempt to power it on

    今天启动VBOX出现这个问题"the vm session was closed before any attempt to power it on" 1.找到一个解决方法:到存储 ...

  2. Hibernate中发生Session is closed 的另一种可能!

    Hibernate中发生"Session is closed" 的另一种可能! 文章分类:Java编程 关键字: hibernate session is closed Hiber ...

  3. Hibernate中发生Session is closed 的另一种可能

    Hibernate中发生"Session is closed" 的另一种可能:没有commit的Transaction. 关键字:"Session is closed&q ...

  4. hibernate 延迟加载问题探讨

    延迟初始化错误是运用Hibernate开发项目时最常见的错误.如果对一个类或者集合配置了延迟检索策略,那么必须当代理类实例或代理集合处于持久化状态(即处于Session范围内)时,才能初始化它.如果在 ...

  5. object references an unsaved transient instance - save the transient instance before flushing .

    http://blog.csdn.net/zdwzzu2006/article/details/7552234 异常1:not-null property references a null or t ...

  6. Hibernate常见错误

    Hibernate常见错误 1.错误:object references an unsaved transient instance - save the transient instance bef ...

  7. hibernate 报错大全

    日志    使用JDK的自定义Comparator对Cllections进行排序 oracle数据库拼音排序及NLS_SORT配置 Hibernate常见错误合集 2012-05-23 19:04:0 ...

  8. IT忍者神龟之hibernate 延迟加载问题探讨

    关于   lazy   机制: 延迟初始化错误是运用   Hibernate   开发项目时最常见的错误.如果对一个类或者集合配置了延迟检索策略,那么必须当代理类实例或代理集合处于持久化状态(即处于S ...

  9. open session and Hibernate事务处理机制

    相关文章: Hibernate入门 - Transaction 使用OpenSessionInView模式时的一个异常问题解决方法 推荐圈子: 青岛javaeye 更多相关推荐 在没有使用Spring ...

  10. 【kafka】Kafka Fetch Session 剖析

    1.概述 转载:https://www.cnblogs.com/smartloli/p/14352489.html 1.概述 最近有同学留言在使用Kafka的过程中遇到一些问题,比如在拉取的Topic ...

最新文章

  1. 知乎宣布完成4.34亿美元F轮融资,快手领投,融资额刷新此前记录
  2. 个人副业在家可做大学生首选小程序创业项目
  3. OpenCASCADE:Modeling Data之3D几何
  4. Scrapy爬虫基本使用
  5. 系统开发基础:UML中图的相关知识笔记(下)
  6. Azure SQL的DTU和eDTU到底是个什么鬼
  7. 在EditPlus中配置PHP调试
  8. Linux下squid代理缓存服务环境部署
  9. 思科被发现使用华为代码,解释:忘了删
  10. atitit.React   优缺点 相比angular react是最靠谱的web ui组件化方案了
  11. 联想IBM服务器装系统教程,联想thinkpad系统安装攻略 每一个步骤都有
  12. 【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)
  13. python itchat教程_Python itchat.run方法代码示例
  14. 时钟屏保fliqlo
  15. 【MySQL】不建议使用分区表
  16. RAW数据格式的图片转换--常用于相机开发和图片旋转
  17. 软件工程导论第九到十二章章节复习总结附思维导图
  18. 【数据结构】---堆排序+TOP-K问题(了解游戏排行底层原理)
  19. java xtend_Java加上Xtend,满足你对C#语法的所有想象
  20. 动手制作智能化家居“魔镜”

热门文章

  1. Codeforces 417D Cunning Gena(状态压缩dp)
  2. Unity导航小地图制作
  3. keepalived的主备模式下,优先访问了从机的资源,原因尚未知
  4. Flutter中的ISOlate
  5. 文件流方式导出EXcle
  6. excel怎么把两个表格合成一个
  7. 第54件事 引爆流行的3个条件
  8. 服务器和交换机物理连接_交换机发生网络通信故障怎么解决?
  9. 数字化转型的必要性和意义
  10. SpringMVC Controller接收普通类型参数 postman配置