直接操作po造成hessian序列化问题

异常如下:
客户端:
Cannot access Hessian service at [http://远程ip/remote/authService]; nested exception is com.caucho.hessian.io.HessianProtocolException: 500: java.io.IOException: Server returned HTTP response code: 500 for URL:
服务端:
com.caucho.hessian.io.IOExceptionWrapper: java.lang.ClassNotFoundException: long
解决:我本来要同步school对象的(school和actCode对象是一对一),结果school中含有actCode信息,所以出现这种错误,school.setActCode(null);即可.

出现这个问题时,百思不得其解啊,看控制台输出提示是hessian反序列化过程中出现问题,看来问题出现在上传的对象中,debug后发现了问题所在,看来还是实践出真知啊,
总结:
以后远程调用时尽量不要直接操作po,以免出现不必要的问题(hessian不能操作复杂的对象)


以下是一对一关系,以前一般用一对多,对一对一关系还是有点生疏.
school.hbm.xml
 
  1. <one-to-one name="actcode" class="SysActCode" cascade="save-update" outer-join="auto" constrained="true"/>  


SysActCode.hbm.xml
 
  1. <one-to-one name="school" class="School" cascade="save-update" outer-join="true" constrained="false"/> 

School school = this.getSchoolInfoService().getModel(this.getId());
//Hibernate:select s.ID, s.manager,... from school_info s where s.ID=?
if(school.getActcode()!=null){ //这里不为null;
    /**
    * 但是System.out.println(school.getActcode());会抛出异常:
    * LazyInitializationException:could not initialize proxy,the owning Session was closed
    * 看来hibernate先用代理对象标识一下而已,在取值时才加载对象,
    */

}

one-to-one,many-to-one的lazy默认为proxy,并且只能为false或proxy或no-proxy,不能为true;
单点关联中lazy可以设置: 
lazy  (可选  -  默认为  proxy):  默认情况下,单点关联是经过代理的
lazy= "no-proxy"指定此属性应该在实例变量第一次被访问时应该延迟抓取(fetche lazily)需要运行时字节码的增强)
lazy= "false"指定此关联总是被预先抓取
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值