OpenSession InView Filter失効問題解決(SSH 2)


今日はHybernateで遅延してロードする時、インターフェースに次のような問題が現れました.org.hibernate.LazyInitialization Exception:could not initiaze proxy-the owning Session was closed原因:インターフェイスでデータをロードする時、sessionはすでにオフしました.このエラーを報告しました.これまでの対象は代理対象です.だからSpringのOpenSession InViewelterを使ってこの問題を解決して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>
 
再テストでは、問題は依然として存在しています.  やっと問題がStruts 2に出てきました.
今のweb.xmlでは、OpenSession InViewelterの配置をStruts 2の後ろに置いています.
前後の順序を変更して、不思議な解決ができました.)   正しい配置手順は以下の通りです.
 
<!--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>