`
neolimeng
  • 浏览: 83698 次
  • 性别: 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值。

祝好~

相关推荐

    集成spring的hibernate懒加载

    在Java的Web开发中,Spring框架与Hibernate的整合是常见的数据访问层实现方式。Spring提供了强大的依赖注入(DI)和AOP(面向切面编程)功能,而Hibernate则是一个优秀的对象关系映射(ORM)框架,它使得Java开发者...

    Plsql 12连接Oracle时出现Could not initialize oci.dll解决方案 oracle 客户端

    以下是一些解决“Could not initialize oci.dll”问题的步骤: 1. **下载Oracle Instant Client**: 首先,你需要从Oracle官方网站下载适合你的操作系统的Oracle Instant Client版本。在这个案例中,我们看到的...

    Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

    标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...

    S2S3H3整合以及泛型Dao与Service封装

    本程序整合了struts-2.2.3.1+spring-framework-3.1.0+hibernate-distribution-3.6.8+JSON+MySQL+Annotation,并且对Dao和Service进行了封装,内含.jar包,并且解决了一对多双向关联的could not initialize proxy - ...

    Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案

    在使用PL/SQL Developer这款强大的Oracle数据库管理工具时,有时可能会遇到“Could not initialize oci.dll”的错误提示,这通常是由于应用程序与Oracle客户端组件之间的兼容性问题导致的。本文将详细介绍如何解决这...

    oracle_plsql连服务端时 Initialization error could initialize错误处理方法

    解决:oracle_plsql连服务端时 Initialization error could initialize错误处理方法

    基于SSH框架的BBS论坛JavaEE项目源码

    7.注册如果发送邮件激活的方式出错(返回页面错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session) 8.禁止用户后不允许登录、发帖、回帖等 9.后台会员搜索中文名搜索乱码 ...

    解决hbase client在windows环境下报NoClassDefFound问题

    解决hbase client在windows环境下报Could not initialize class org.fusesource.jansi.internal.Kernel32的问题,把jar包放入hbase client的lib包下,重新运行hbase.cmd shell即可

    java串口所需依赖dll文件合集

    监听COM口启动程序报错 Could not initialize class gnu.io.RXTXCommDriver异常 是因为需要在%JAVA_HOME%/jre/bin目录中添加rxtxParallel.dll、rxtxSerial.dll文件

    jacob_1.14.3.rar

    内涵jacob_1.14.3-x64.dll;jacob_1.14.3-64.jdk(maven地址);解决方法:Could not initialize class com.jacob.com.ComThread

    JAVA错误文档[归纳].pdf

    7. **Action的返回方法出错,could not initialize proxy - no Session** 这可能是在Hibernate操作中没有正确初始化Session。确保在访问数据库之前已打开Session,并在完成后关闭。 8. **查询数据出现乱码问题** ...

    instantclient_11_2.zip

    Could not initialize "D:\app\Happy\product\11.2.0\dbhome_1\bin\oci.dll" Make sure you have the 32 bits Oracle Client installed. OracleHomeKey: OracleHomeDir: D:\app\Happy\product\11.2.0\dbhome_1 ...

    Hibernate配置常见错误

    错误表现:在Session关闭后尝试访问懒加载属性,抛出“org.hibernate.LazyInitializationException: could not initialize proxy - no Session”异常。 解决方案:理解并合理使用Open Session in View(OSIV)模式...

    WINSOCK坏了 winsockfix

    标题中的“WINSOCK坏了”指的是Windows操作系统中的网络通信组件——Winsock(Windows Socket)出现了问题。Winsock是Windows上应用程序与网络协议如TCP/IP进行交互的接口,它提供了标准的应用程序编程接口(API),...

    ezmorph-1.0.6.jar

    缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig 使用json时候将会用到的一个jar包,发现这个包在网上提供的比较少.缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig ...

    InstantClient-64bit-安装包-完美解决PL/SQL连接数据库提示oci.dll加载失败的问题

    标题中的“InstantClient-64bit-安装包”指的是Oracle的Instant Client,这是一个轻量级的客户端软件,用于连接到Oracle数据库,而无需完整的Oracle Database Client安装。它包含必要的库和组件,使得应用程序能够与...

    linux上实现视频截图

    在32位Linux系统中,这意味着将对应的`.so`(共享对象)文件放置在系统的`library_path`中,或者在运行Java程序时使用`-Djava.library.path`指定路径。例如: ```bash java -Djava.library.path=/path/to/your/libs...

    derby.jar 。。

    java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40 导致的原因: 在azkaban的server和executor中缺少一个叫derby.jar的包

    ssh-keygen 兼容方案

    在IT行业中,SSH(Secure Shell)是一种用于在网络之间安全传输数据的协议,广泛应用于远程登录、文件传输等场景。SSH密钥对的生成是SSH安全性的基础,`ssh-keygen`命令是Unix/Linux系统中用于生成这些密钥的工具。...

Global site tag (gtag.js) - Google Analytics