我试图在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?
答案 0 :(得分:1)
无法使用java.lang.Serializable
,因为此序列化格式特定于Java(或更具体地说是特殊的JVM实现和Java版本)。因此,您应始终使用(Identified)DataSerializable
(不是java.lang.Serializable
的扩展名),Portable
或任何多语言可用序列化,如Protobuf,Apache Avro,Apache Thrift,... < / p>