论坛首页 Java企业应用论坛

咨询大家一个tomcat集群 memcached反序列化自定义对象的问题

浏览 9200 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-11-28  
andye 写道
前几天我碰到同样的问题,应用场景和基本差不多,不过我是用Memcached做Session复制。
据我使用的经验,Memcached在反序列化同一个JVM对象时是没问题的,如果是跨JVM好像不可以(不知道有哪位大侠可以解决这个问题)。
我是用另一种办法解决的,但这种办法只是针对需要反序列化较少的对象。
我是先将对象转为json字符串(如阿里的fastjson),存入Memcached,然后在客户端将json字符串转为指定对象,就OK了。
供参考,呵呵!

正常情况是不存在那样的限制的,这个memcached用的就是java对象的序列化/反序列化
0 请登录后投票
   发表时间:2012-11-28  
java_user 写道
andye 写道
前几天我碰到同样的问题,应用场景和基本差不多,不过我是用Memcached做Session复制。
据我使用的经验,Memcached在反序列化同一个JVM对象时是没问题的,如果是跨JVM好像不可以(不知道有哪位大侠可以解决这个问题)。
我是用另一种办法解决的,但这种办法只是针对需要反序列化较少的对象。
我是先将对象转为json字符串(如阿里的fastjson),存入Memcached,然后在客户端将json字符串转为指定对象,就OK了。
供参考,呵呵!

正常情况是不存在那样的限制的,这个memcached用的就是java对象的序列化/反序列化

我是用Memcached反序列化CXF生成客户端对象时失败的,具体:
在A系统中我把一实体(比如User,这个对象是序列化的)放入Memcached。
因为其他web系统要调用User的相关业务,所以用CXF在各个系统生成webservice客户端,相应的也webservice客户端的User实体,那这个时候我从memcached取user对象转为这个客户端的User实体就会失败。
不过也有可能是CXF问题

0 请登录后投票
   发表时间:2012-12-22  
java序列化/反序列化的要求:
1、要序列化/放序列化的对象必须实现序列化接口
2、两个对象必须一样;
3、两个序列化/反序列化的对象的序列化ID值必须一样,即serialVersionUID属性的值必须一样;

上述任一一个条件不满足,都不能实现序列化/放序列化操作。

所以一般在需要序列化和反序列化操作时,一般是建议直接从已有的对象中copy过去,而不是自己建一个一样的对象,因为有可能不注意,以疏忽就把serialVersionUID的值设置为不一样了。

上述三点,第一第二点一般不会有问题,大家都知道,但是第三点很多人不太注意。也没有搞清楚,看着明明是一样的对象,但是发序列化操作时就是是败!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics