首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-10-30 
解决hibernate 设置为lazy“true”的集合,通过struts1 访问的时候报session已经关闭的问题在使用struts1 +

解决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?

??

热点排行