SSH框架中的使用OpenSessionInView的問題
阿新 • • 發佈:2018-12-12
觀點一: 今天有一個朋友問了我一個問題,他使用的是Hibernate/Spring/Struts架構,配置使用Spring的 OpenSessionInView Filter,但是發現不生效,lazy的集合屬性在頁面訪問的時候仍然報session已經關閉的錯誤。我和他一起檢查了所有的配置和相關的程式碼,但是 沒有發現任何問題。經過除錯發現,應用程式使用的Session和OpenSessionInView Filter開啟的Session不是同一個,所以OpenSessionInView模式沒有生效,但是為什麼他們不使用同一個Session呢? 檢查了一遍Spring的相關原始碼,發現了問題的根源: 通常在Web應用中初始化Spring的配置,我們會在web.xml裡面配置一個Listener,即:
Xml程式碼
copy
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>