码迷,mamicode.com
首页 > 编程语言 > 详细

关于java.lang.ClassCastException: xxx cannot be cast to javassist.util.proxy.Proxy

时间:2017-09-22 13:05:27      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:关闭   关于   gem   访问   proxy   pac   过滤器   nbsp   url   

异常关键信息:

  java.lang.ClassCastException:  xxx.xxx.xxx.UserManagementEntity_$$_javassist_4 cannot be cast to javassist.util.proxy.Proxy

 出这个异常,有两种可能:

  1、jar包冲突  (这种可能比较大,我遇到的就是这种情况)

    因为hibernate和 struts2 都需要javassist-XX.jar,先确认项目里面是不是引入了多个,保留一个高版本就行了 。

  2、懒加载异常 (这玩意我没遇到过,网上都说这样干)

    如果没有jar包冲突,那可能是懒加载的问题了, 懒加载最开始只返回了一个代理对象,之后要访问对象的具体属性的时候,才会真正去加载这个对象,但此时sessionFactory已经关闭,当然就GG了。在web.xml中配个过滤器,延长session的结束时间就行了,如下:

 <!-- spring用于解决懒加载问题的过滤器 -->
      <filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

  注意这个filter要放在 struts2的过滤器前面,因为 当org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter执行完后页面就会出来,页面加载完后sessionFactory关闭(执行strus2过滤器中finally方法),这时候取对象数据就会懒加载异常。(可以参考filter的finally执行的顺序)

 

  

 

关于java.lang.ClassCastException: xxx cannot be cast to javassist.util.proxy.Proxy

标签:关闭   关于   gem   访问   proxy   pac   过滤器   nbsp   url   

原文地址:http://www.cnblogs.com/VweiweiyixiaoV/p/7574133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!