`
neolimeng
  • 浏览: 82580 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SSH整合中could not initialize proxy - no Session问题的OpenSessionInView解决办法

    博客分类:
  • SSH
阅读更多
问题的解决方法主要有两种:
1、将<many-to-one>  & <set> 中设置 lazy="false"。
2、OpenSessionInView解决办法。
后者不需要更改映射文件的配置即可解决这个问题,Neo觉得比较好。具体做法如下:

(第一步)
在web.xml中加入如下内容:

<!-- 实现在Spring管理Hibernate时的延迟加载。如果去掉会导致延迟加载出现问题。 -->
 <!-- org.springframework.orm.hibernate3.support.OpenSessionInViewFilter -->
 <filter>mylistitems
  <filter-name>hibernateFilter</filter-name>
  <filter-class>
   org.nits.util.OpenSessionInViewFilter[color=red](这是我改写之后的类)[/color]
  </filter-class>
 </filter>
 <filter-mapping>
  <filter-name>hibernateFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>


(第二步)
重写OpenSessionInViewFilter类。方法:将Spring源码包中OpenSessionInViewFilter 源代码复制过来,

将private FlushMode flushMode = FlushMode.NEVER;改成private FlushMode flushMode = FlushMode.AUTO;保存即可。


然后将web.xml中的类配置为自己改写后的类名。


参考如下文章:http://xuliangyong.iteye.com/blog/144818
1
0
分享到:
评论
4 楼 neolimeng 2009-10-10  
系统刚刚启动的时候打开了Session,但是当系统使用一次DWR调用之后Session就关闭了。

有人在http://blog.csdn.net/dust_bug/archive/2008/10/28/3163987.aspx中说
然后我添加了如下的一个filter-mapping就ok了。

    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>/dwr/*</url-pattern>
    </filter-mapping>

就可以解决问题,但是我试了没有效果。

我还尝试将filter-mapping改为/*,也没有效果,问题还是无法解决。
3 楼 neolimeng 2009-10-10  
参考http://www.iteye.com/topic/41318发现可能是因为DWR的原因。
引用
主要问题是open session in view的问题,用dwr请求返回的时候并没有session打开在表现层(因为打开session的filter并没有被调用,这是使用xmlhttprequest导致的),所以要不你就用设置fetchmode来一次性把需要的UserPowerTeamModel拿出来,要不就把lazy设置成false(但是不推荐这样做,因为改hbm配置文件会影响全局),还有就是写hsql,用left join fetch来得到UserPowerTeamModel

2 楼 neolimeng 2009-10-10  
只有程序刚启动的时候可以,不会报错。

但是之后就会报错~

苦恼啊!

又没人有人解决了这个问题?

BTW:我的架构是DWR+Struts2+Spring+Hibernate。
1 楼 neolimeng 2009-10-10  
本来以为按照上面的配置应该没有问题了,可是今天又出现了同样的问题。

于是我试着将
private FlushMode flushMode = FlushMode.AUTO;

改成
private FlushMode flushMode = FlushMode.ALWAYS;


结果问题就解决了,呵呵。

如果大家按照上面的配置还出现这个问题,请大家尝试更改一下FlushMode值。

祝好~

相关推荐

Global site tag (gtag.js) - Google Analytics