用途:可以将session的作用域扩大用于ssh整合中。如hibernate中使用load()方法时在struts中session已经关闭 则会引起错误
<!-- 将session的生命周期托管给自定义的filter管理,以延长其生命周期 -->
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
使用时注意
(1)在web.xml 中配置时需要配置在struts2的filter的前面。因为filter有先后顺序。
(2)若配置了openSessionInView这个filter,则需要在spring中添加声明式的事物管理。否则只能进行读操作,在进行写操作时则会产生
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition. 这样的异常。
本文介绍如何在Struts2框架中通过配置OpenSessionInViewFilter来延长session生命周期,解决Hibernate中使用load()方法时session关闭导致的错误。重点包括web.xml配置顺序和声明式事物管理的重要性。

4644

被折叠的 条评论
为什么被折叠?



