【发布时间】:2017-04-28 08:37:12
【问题描述】:
我尝试在 Hazelcast 使用自定义序列化。在文档中,有一个 Java 示例。我将它添加到我的代码中。另一方面,我有一个 .net 客户端,所以我需要对其进行反序列化,但我无法编写读写方法。我的示例 .net 客户端代码在这里,我该如何使用它?
public class TestModelSerializer : IStreamSerializer<TestModel> {
public void Destroy() {
throw new NotImplementedException();
}
public int GetTypeId()
{
return 158;
}
public TestModel Read(IObjectDataInput input) {
?????
//Here I cannot solved....
}
public void Write(IObjectDataOutput output,TestModel obj) {
?????
//Here I cannot solved....
}
}
Java 端代码是:
public static class TestModelXmlSerializer implements StreamSerializer<TestModel> {
public int getTypeId() {
return 158;
}
public void write(ObjectDataOutput out, TestModel object ) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder( bos );
encoder.writeObject( object );
encoder.close();
out.write( bos.toByteArray() );
}
public TestModel read( ObjectDataInput in ) throws IOException {
InputStream inputStream = (InputStream) in;
XMLDecoder decoder = new XMLDecoder( inputStream );
return (TestModel) decoder.readObject();
}
public void destroy() {
}
}
【问题讨论】:
-
序列化的二进制数据应在 .Net 端反序列化,但您使用 java XML 编码器。生成的 xml 很难在 .Net 上处理。您应该更喜欢可以在 .Net 上处理的东西。
-
好的,但是我该怎么做呢? Streams 会抛出异常,那么我编写的那些方法是什么?例如这个抛出异常。
public TestModel Read(IObjectDataInput input) { StreamReader inputStream = (StreamReader)input; XmlSerializer decoder = new XmlSerializer(typeof(TestModel)); return (TestModel)decoder.Deserialize(inputStream); }
标签: java c# serialization hazelcast