淡褐色:NotSerializableException
Hazelcast : NotSerializableException
我正在使用带有 Hazelcast 的地图:
//当我这样做时:
map.put(gen.newId(), myObject);
myObject 是一个非常复杂的对象,没有实现 Serializable。
我认为像下面这样放置配置就足以不必实现可序列化:
<map name="myMap">
<in-memory-format>OBJECT</in-memory-format>
</map>
Hazelcast 文档说:
http://docs.hazelcast.org/docs/3.5/manual/html/entryprocessor.html
"When it is stored as an object (OBJECT format), then the entry processor is applied directly on the object. In that case, no serialization or deserialization is performed"
感谢任何建议。
不幸的是,无论内存格式如何,调用 map.put 时对象总是被反序列化。这是因为通常有备份,他们也需要收到一份副本。所以在这种情况下,你唯一的出路就是让你的对象 'serializable'。您可以使用 Java 序列化,但您也可以依靠 Kryo 之类的东西来处理复杂的对象图。
我认为您还可以使用更高效的 hazelcast 特定解决方案。 Here 是解决方案的比较 table。 Portable 一直在为我工作,但是对于大对象来说实施和维护是一件很痛苦的事情。 DataSerializable 是一个更简单的解决方案,看起来很像来自 Android.
的 Parcelable
我正在使用带有 Hazelcast 的地图:
//当我这样做时:
map.put(gen.newId(), myObject);
myObject 是一个非常复杂的对象,没有实现 Serializable。
我认为像下面这样放置配置就足以不必实现可序列化:
<map name="myMap">
<in-memory-format>OBJECT</in-memory-format>
</map>
Hazelcast 文档说: http://docs.hazelcast.org/docs/3.5/manual/html/entryprocessor.html "When it is stored as an object (OBJECT format), then the entry processor is applied directly on the object. In that case, no serialization or deserialization is performed"
感谢任何建议。
不幸的是,无论内存格式如何,调用 map.put 时对象总是被反序列化。这是因为通常有备份,他们也需要收到一份副本。所以在这种情况下,你唯一的出路就是让你的对象 'serializable'。您可以使用 Java 序列化,但您也可以依靠 Kryo 之类的东西来处理复杂的对象图。
我认为您还可以使用更高效的 hazelcast 特定解决方案。 Here 是解决方案的比较 table。 Portable 一直在为我工作,但是对于大对象来说实施和维护是一件很痛苦的事情。 DataSerializable 是一个更简单的解决方案,看起来很像来自 Android.
的 Parcelable