嵌套Object上的Hazelcast序列化异常

时间:2017-03-03 09:37:31

标签: serialization hazelcast spring-cache

我使用的是Spring Boot 1.5.1和Hazelcast 3.7.5 当缓存此实体的对象时,我得到NotSerializableException(GeoPoint不可序列化):

public class Test implements Serializable {
      private String title;
      private GeoPoint location;
}

我为此字段添加了自定义序列化程序:

SerializerConfig sc = new SerializerConfig()
            .setImplementation(new GeoPointSerializer())
            .setTypeClass(GeoPoint.class);
config.getSerializationConfig().addSerializerConfig(sc);

但例外仍然存在。
当我直接缓存GeoPoint时它确实有效:

@Cacheable("point")
public GeoPoint test() {
    return new GeoPoint(0, 0);
}

如何告诉Hazelcast在现场使用我的自定义序列化器?

1 个答案:

答案 0 :(得分:2)

每当您将序列化移交给Java Serialization(Serializable或Externalizable)时,内部序列化方案将不再起作用。基本上,一旦Serializable,它永远可序列化。这就是说有两个选项,使类“Test”至少是DataSerializable或使类“GeoPoint”可序列化/可外化。