在python中的Hazelcast bean序列化

时间:2017-07-25 05:29:20

标签: java python hazelcast serializable

我试图在Java中使用两个hazelcast客户端,在python中使用一个。

我的bean类正在关注,

class  Sample implements Serializable { 
        private static final long serialVersionUID = someId;

        private String val;

        public String getVal() {
            return val;
        }    
        public void setVal(String val) {
            this.val = val;
        }

}

Python bean,

class Sample(object):
   def __init__(self):
      self.val = ''
   def getVal(self):
      return self.val
   def setVal(self,val):
      self.val =val

添加条目的Java代码

ClientConfig config = getClientConfig(IP, PORT);
HazelcastInstance hazelCastInstance = HazelcastClient
                .newHazelcastClient(config);
IMap<String,Sample> map = hazelCastInstance.getMap("sample"); 
Sample s =new Sample();
s.setVal("test");
map.put("test", s);
hazelCastInstance.shutdown();

用于读取bean的Python代码,

my_async_map = client.get_map('sample')
future = my_async_map.values()
r = future.result()
print r

我收到例外hazelcast.exception.HazelcastSerializationError: Missing Serializer for type-id:-100。当我使用IdentifiedDataSerializable时。它工作正常。

如何反序列化由java序列化的bean?

1 个答案:

答案 0 :(得分:1)

无法使用java.lang.Serializable,因为此序列化格式特定于Java(或更具体地说是特殊的JVM实现和Java版本)。因此,您应始终使用(Identified)DataSerializable(不是java.lang.Serializable的扩展名),Portable或任何多语言可用序列化,如Protobuf,Apache Avro,Apache Thrift,... < / p>