org.hibernate.LazyInitializationException问题的解决2008-07-26 11:18今日在struts2+spring+hibernate的环境中写个demo.在页面输出${parent.name}的时候报org.hibernate.LazyInitializationException: could not initialize proxy - no Session错误.
查了网上的解决方案,大都说需要在<many-to-one>里设置lazy="false".可是我设了以后问题还是没有解决.
web.xml中也加了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>
最后发现是web.xml中配置的顺序问题造成的.这也可能是初学者常犯的一个错误.
在web.xml中我们应该将struts2的配置文件放在spring的配置后面.理解应该是让spring 在struts2的前面启动.才能管理到struts2.
我的web.xml详细配置如下:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<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>
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
这些过滤器各有用途,例如`TilesFilter`用于处理Struts2的Tiles视图定义,`OpenSessionInViewFilter`则在请求结束时确保数据库会话关闭,防止长时间打开的连接导致资源浪费。 在实际项目中,过滤器可以组合使用,...
2. **Struts2配置Spring插件**:在`struts.xml`中配置Spring插件,并通过该插件实现Struts2与Spring之间的集成。 3. **Action类注入Service层**:在Struts2的Action类中,通过Spring的依赖注入机制注入Service层接口...
当使用其他框架(如Struts2)时,需要注意`OpenSessionInViewFilter`与这些框架中过滤器的顺序。例如,在上面的例子中,`OpenSessionInViewFilter`被配置在`webwork`过滤器之前,这是为了确保在处理Struts2相关的...
- **修改`web.xml`**:配置Struts2所需的过滤器,例如`StrutsPrepareAndExecuteFilter`。 - **引入依赖**:确保项目中包含了Struts2和Spring的相关jar包。 - **配置`struts.xml`**:这是Struts2的核心配置文件,...
- 修改`web.xml`,添加Struts2的过滤器配置: ```xml <filter-name>struts2 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter <filter-name>struts2 ...
Struts2、Hibernate与Spring(通常简称为SSH)是Java Web开发中的三个流行框架。它们的结合可以极大地提高Web应用的开发效率和可维护性。具体来说: - **Struts2**:用于构建MVC架构的应用程序,它负责处理用户的...
- **Struts2标签支持**:如果JSP页面中需要使用Struts2标签,则需要在`web.xml`中配置相应的过滤器。 综上所述,通过细致地配置Struts2、Spring与Hibernate之间的关系,可以有效地构建出高效稳定的Java Web应用系统...
- 在`web.xml`中配置`OpenSessionInViewFilter`过滤器,自动管理事务。 #### 三、总结 通过以上步骤,我们不仅可以让Spring有效地管理Struts,实现更灵活的业务逻辑控制,还可以利用Spring的强大功能管理...
2. **Hibernate配置**:使用`OpenSessionInViewFilter`过滤器,该过滤器使得Hibernate在HTTP请求的生命周期内保持一个数据库会话,解决了懒加载(Lazy Loading)时可能出现的错误。`hibernateFilter`将这个过滤器...
总的来说,这个配置说明涵盖了Struts2、Spring和Hibernate的集成过程,包括版本选择、库文件下载、关键类的替换以及Web应用的过滤器配置。开发者需要对这三个框架有深入理解,才能顺利完成这样的集成工作。同时,...
- `StrutsPrepareAndExecuteFilter` 是Struts2的核心过滤器,它拦截所有请求并执行Struts2的处理流程。这个过滤器的配置使得Struts2能够解析和执行Action,处理用户请求。 4. **编码过滤器**: - `...
对于Struts2框架,`web.xml`中也配置了一个过滤器: ```xml <filter-name>struts <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter <filter-name>struts ...
添加两个过滤器,一个是 `CharacterEncodingFilter` 用于设置请求和响应的编码,另一个是 `OpenSessionInViewFilter`,它在视图层保持 Hibernate Session,以解决数据持久化的问题。 3. **配置事务管理**: 在 ...
`OpenSessionInViewFilter`必须在`struts2`过滤器之前,以确保在处理请求时能正确地开启和关闭Hibernate Session。 10. **部署描述符** (`web.xml`):这是Java Web应用程序的核心配置文件,定义了过滤器、监听器、...
这个过滤器确保Session在请求结束时才关闭,从而能正确处理延迟加载的对象。 集成这三个框架后,你可以享受到它们各自的优势:Struts处理用户交互,Spring管理业务逻辑和依赖,Hibernate处理持久化操作。这样的架构...
4. **配置过滤器**:在`web.xml`中配置Struts2过滤器和`OpenSessionInViewFilter`,确保请求处理流程正确。 5. **测试**:编写JUnit测试用例来验证各组件的正确集成和工作流程。 在实际项目中,SSH框架的整合不仅...
同时,配置`OpenSessionInViewFilter`(懒加载过滤器)以处理Hibernate的懒加载问题。接着,配置Struts2的FilterDispatcher,确保所有请求都被Struts2拦截和处理。 最后,`applicationContext.xml`是Spring的核心...
- **字符集过滤器**:为了确保请求的编码正确,应在`web.xml`中配置字符集过滤器。 #### 二、Spring2.x与Hibernate3.x的整合 **2.1 Hibernate配置文件** Hibernate的配置文件(`hibernate.cfg.xml`)用于配置...
- **字符集过滤器**:通过 `<filter>` 和 `<filter-mapping>` 元素配置了一个字符集过滤器 `EnconfigFilter`,该过滤器用于设置请求的编码格式为 GBK,作用于所有的 URL 请求路径。 - **Hibernate 会话管理**:同样...
8. **处理Hibernate延迟加载**:使用`OpenSessionInViewFilter`过滤器,确保Session在整个HTTP请求期间保持打开状态,解决懒加载问题。配置过滤器映射到所有.do请求。 9. **处理只读模式异常**:由于...