用途:可以将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. 这样的异常。