读书人

解决hibernate 设置为lazy=“true”的

发布时间: 2012-10-30 16:13:36 作者: rapoo

解决hibernate 设置为lazy=“true”的集合,通过struts1 访问的时候报session已经关闭的问题

在使用struts1 + hibernate(Struts2没有这问题)过程中,经常要访问lazy="true"的集合类型属性,可是这时候报session已经关闭的现象。

要解决这个问题我们要分析OpenSessionInViewFilter这个类。?OpenSessionInViewFilter是按照WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE这个key去获取spring配置信息的! 所以,我们在使用过程中配置OpenSessionInViewFilter就不起作用。

解决方法:?修改ContextLoaderPlugIn代码,在getServletContext().setAttribute(attrName, wac);这个地方加上一行代码: ?getServletContext().setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); ?
?或者

修改OpenSessionInViewFilter,让它按照attrName去取得spring配置。?

我们按照第一种方法来配置

1.重写struts的插件继承自spring的ContextLoaderPlugIn?的类。

?3.更改struts-config.xml?

??

读书人网 >软件架构设计

热点推荐