`
ryan_ncu
  • 浏览: 69880 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

OpenSessionInViewFilter失效问题解决(SSH2)

    博客分类:
  • JAVA
阅读更多

今天在用Hibernate延迟加载时,显示到界面出现如下问题:
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed

原因: 在界面加载数据时, session已经关闭,故报此错. 此前的对象只是代理对象(只有ID值)

故使用Spring 里的 OpenSessionInViewFilter 来解决此问题

在web.xml里配置

<!--Hibernate Open Session in View 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>

 

再测试, 问题依然存在,,, 纳闷....... 后来分析,再google...  终于发现问题出在Struts2上....

现在的web.xml里,我是把OpenSessionInViewFilter的配置放在Struts2后面的.

更改下前后顺序, 神奇的解决了:)   正确的配置顺序如下:

 

<!--Hibernate Open Session in View Filter 注意要放在Struts2配置前面-->
<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>

<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> 

 

 

 

 

 

分享到:
评论
3 楼 无与伦比12580 2013-01-04  
感谢lz分享,问题真的就这样解决了
2 楼 tiyi 2008-12-12  
WorkingHard?! 写道

为什么需要调整顺序呢?

顺序代表过滤器优先级
1 楼 WorkingHard?! 2008-10-16  
为什么需要调整顺序呢?

相关推荐

    关于OpenSessionInViewFilter的学习

    OpenSessionInViewFilter是Spring框架中一个非常重要的组件,主要用于解决数据访问层(DAO)与视图层(View)之间的事务管理问题。在Web应用中,由于HTTP请求的无状态性,一次请求通常由多个Servlet过滤器、控制器和...

    OpenSessionInViewFilter

    OpenSessionInViewFilter个人学习总结

    SSH框架整合模版,非常详细实用

    在`web.xml`中,`OpenSessionInViewFilter`是一个用于解决懒加载异常的关键配置,它确保在用户请求的整个生命周期内,Hibernate Session保持打开状态。`sessionFactoryBeanName`参数关联到Spring配置中的...

    ssh2开发步骤与项目实践宝典

    2. **Hibernate配置**:使用`OpenSessionInViewFilter`过滤器,该过滤器使得Hibernate在HTTP请求的生命周期内保持一个数据库会话,解决了懒加载(Lazy Loading)时可能出现的错误。`hibernateFilter`将这个过滤器...

    dwr+ssh项目

    在web.xml中,可以配置`OpenSessionInViewFilter`来解决懒加载问题,保持一个Session贯穿整个请求过程。 3. **Spring** - 提供依赖注入和管理服务,可以将Action和DAO注入到DWR的配置中。同时,Spring也负责配置...

    SSH框架ajax获取的json格式数据处理过程

    SSH 框架 Ajax 获取的 JSON 格式数据处理过程 在本文中,我们将详细讲解如何使用 SSH 框架中的 Ajax 获取的 JSON 格式数据处理过程,并且实现菜单联动下拉框的功能。 一、Ajax 中 response 返回的数据是一个二维...

    搭建SSH框架步骤

    - 添加OpenSessionInViewFilter,解决在视图层处理时可能出现的懒加载异常。 10. **编写Action类**: - 创建Action类,它们通常对应于特定的业务操作,如增、删、改、查。 11. **更新struts.xml**: - 在`...

    SSH全注解环境搭建

    SSH框架是指Struts2、Spring、Hibernate这三种技术的组合,常被用于Java Web开发中。全注解配置相较于XML配置更加简洁,易于维护,因此在现代Web项目开发中越来越受到青睐。本文将详细介绍如何搭建一个基于全注解...

    SSH整合的简单操作

    SSH整合是指将Spring、Hibernate和Struts2这三大开源框架集成在一起,用于构建高效、模块化的Java Web应用程序。这些框架分别负责不同的职责:Spring作为IoC(Inversion of Control)容器,提供依赖注入和AOP(面向...

    ssh配置总结

    SSH框架是Java Web开发领域内非常流行的一种组合框架,分别由Struts2、Spring和Hibernate三个技术组成。其中Struts2负责处理Web层逻辑;Spring则主要作为业务逻辑层的容器;Hibernate则承担了持久化层的角色。本文将...

    SSH整合文档

    SSH整合是Java开发中一种常见的框架集成方式,主要包括Spring、Struts2和Hibernate三个部分。这些框架的结合能够提供一个强大的、松耦合的MVC(Model-View-Controller)架构,便于开发复杂的Web应用程序。 **Spring...

    SSH整合环境 配置

    - `OpenSessionInViewFilter` 是Spring提供的一个过滤器,用于解决数据访问层(DAO)在Web请求结束时无法关闭Session的问题,防止出现Session过早关闭导致的事务问题。`sessionFactoryBeanName`参数指定了...

    ssh框架的搭建的例子

    - 另外,为了在每个HTTP请求处理完后关闭Session,可以在`web.xml`中配置`OpenSessionInViewFilter`,避免Session失效问题。 6. **事务管理**: - 配置Spring的事务管理器,例如`HibernateTransactionManager`,...

    ssh+flex配置

    SSH分别代表Struts2(一个MVC框架)、Hibernate(一个对象关系映射框架)和Spring(一个全面的企业级应用框架)。Flex是Adobe开发的富互联网应用程序(RIA)框架,主要用于创建动态、交互式的用户界面。 在SSH+Flex...

    SSH项目整合示例【OpenSessionInView】所用到的jar包

    OpenSessionInView(OSIV)模式是SSH整合中常见的一种优化策略,它在用户的一次HTTP请求过程中保持Hibernate Session,避免了多次打开和关闭Session,减少了N+1查询问题,提高了性能。 **Spring** 是一个全面的企业...

    javaSSH框架搭建配置

    这三个框架各自解决不同的问题:Spring主要负责业务逻辑层的管理与控制;Struts则侧重于MVC模式中的控制器部分,用于处理用户的请求;而Hibernate则是对象关系映射工具,用来简化数据库操作。本文将详细介绍如何在...

Global site tag (gtag.js) - Google Analytics