`

懒加载异常web.xml中OpenSessionInViewFilter与struts2,谁前谁后?

阅读更多

##注意hibernateFilter过滤器和struts2过滤器在映射时的先后顺序,如果hibernateFilter与struts2的filter倒置,就会抛懒加载异常:org.hibernate.LazyInitializationException: failed to lazily initialize

##找了一下午错误,这种细节谨记! 记下忘记看看。。。

   

 <!-- spring 加载配置文件 -->
    <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath*:applicationContext-*.xml</param-value>
 </context-param>
 <listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>
   
    <!-- spring OpenSessionInViewFilter -->
    <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>
   
    <!-- struts2配置 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常。而Spring为我们提供的OpenSessionInViewFilter过滤器为我们很好的解决了这个问题。OpenSessionInViewFilter的主要功能是使每个请求过程绑定一个 Hibernate Session,即使最初的事务已经完成了,也可以在 Web 层进行延迟加载的操作。OpenSessionInViewFilter 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到。所以 OpenSessionInViewFilter 适用于 Service 层使用HibernateTransactionManager 或 JtaTransactionManager 进行事务管理的环境,也可以用于非事务只读的数据操作中。
request-->open session-->打开连接、开始事务-->持久操作-->渲染(关闭连接、session)-->response 其中一些过程省略了,不是很关心。

参考出处:http://blog.csdn.net/fhwbj/archive/2009/03/25/4022805.aspx

分享到:
评论

相关推荐

    struts2 spring hibernate整合要点、注意点

    2. **Struts2配置Spring插件**:在`struts.xml`中配置Spring插件,并通过该插件实现Struts2与Spring之间的集成。 3. **Action类注入Service层**:在Struts2的Action类中,通过Spring的依赖注入机制注入Service层接口...

    ssh基本配置过程,是struts2的

    在`web.xml`中配置Spring监听器以初始化Spring容器,并添加`OpenSessionInViewFilter`以解决懒加载问题: ```xml &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;filter-name&gt;...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    解决这个问题的方法有两种:一种是在 web.xml 中使用 Spring 提供的 OpenSessionInViewFilter,另一种是在 application.xml 中配置 OpenSessionInViewFilter。前者通用,后者只能用于 SpringMVC 结构中。 最后,...

    搭建SSH框架步骤

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

    struts+spring+hibernate全面整合

    将 Action 的类型更改为 `org.springframework.web.struts.DelegatingActionProxy`,这使得 Struts 可以通过 Spring 来管理和实例化 Action 类。 5. **Spring 注入 Action**: 在 Spring 的配置文件中,定义 ...

    Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00

    为了实现Struts1.x与Spring2.x的无缝集成,首先需要在项目的`web.xml`文件中进行必要的配置。具体步骤如下: - **配置Spring ContextLoaderListener**:通过`ContextLoaderListener`来加载Spring的应用上下文。 `...

    S2SH的配置

    本次讨论将围绕给定的`web.xml`和`struts.xml`配置文件进行深入解析,并结合这些配置文件中的具体内容来阐述相关的知识点。 ## 二、`web.xml`配置分析 ### 2.1 Spring配置 在`web.xml`文件中,首先定义了Spring的...

    SSH框架整合

    在Struts2的配置文件`struts.xml`中,配置Spring对象工厂以便Struts2能够利用Spring管理的Bean,同时设置编码集和其他开发相关的配置: ```xml &lt;!-- 集成spring --&gt; &lt;constant name="struts.objectFactory" value=...

    ssh+flex配置

    `struts.xml`是Struts2的核心配置文件,定义了Action类和结果页面的映射。`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素在`web.xml`中设置Struts2过滤器,确保所有请求都通过Struts2处理。 2. **Hibernate**:Hibernate是ORM...

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

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

    S2SH xml配置文件

    S2SH,即Struts2 + Spring + Hibernate,是Java Web开发中一个经典的三层架构框架组合。本文将深入解析一个典型的S2SH项目的XML配置文件内容,帮助初学者更好地理解和掌握S2SH框架的核心配置与工作原理。 #### 二、...

    搭建SSH框架步骤.pdf

    - 在`struts.xml`中,为每个Action配置名称、执行类、方法和结果页面。例如,`add`动作指向`addBean`类的`add`方法,成功后跳转到`add_suc.jsp`。 12. **调整Spring配置**: - 根据Action类的需求,可能需要在`...

    struts2.1+spring3.0+hibernate3.3整合

    3. **整合Spring与Struts2**:通过设置`struts.objectFactory`参数为`spring`,使得Struts2能够利用Spring容器管理Action实例。 #### 三、为项目添加Spring支持 1. **依赖引入**:确保项目中包含了Spring框架的...

    struts_hibernate_spring集成

    在IT领域,特别是Java企业级应用开发中,Struts、Hibernate和Spring的集成是一个非常重要的主题,这三者的结合能够构建出稳定、高效且可扩展的Web应用程序。下面,我们将详细探讨如何在项目中实现Struts、Hibernate...

    spring+struts+hibernate的配置文档

    `web.xml` 是一个 XML 文件,它定义了 Web 应用的基本配置,包括 Servlet 容器如何加载和初始化 Web 应用。下面是几个重要的配置项: - **Spring 上下文初始化**:通过 `&lt;context-param&gt;` 和 `&lt;listener&gt;` 元素配置...

    SSH整合的配置文件详解

    &lt;controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/&gt; ``` 这里定义了一个路径为“/pet”的Action,名为“petForm”,参数为“operate”,作用域为“request”。 #### 3....

    Struts+Hibernate+Spring的整合方法

    - 修改Struts配置:将Action的type属性设置为`org.springframework.web.struts.DelegatingActionProxy`,指示Struts使用Spring来管理Action实例。 - 配置web.xml:指定Spring的上下文加载监听器`org.spring...

    SSH整合的简单操作

    - 在`web.xml`中配置Struts2 Filter(`&lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt;`),确保在HTTP请求的生命周期内保持Hibernate Session,防止 ...

    ssh配置文件

    在给定的文件信息中,虽然标题和描述指向了“SSH配置文件”,但【部分内容】却涉及到了Struts2、Spring、Hibernate这三个框架在Web项目中的集成与配置。因此,以下将围绕这部分内容进行深入解析,详细介绍如何在Web...

    dwr+ssh项目

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

Global site tag (gtag.js) - Google Analytics