首页 > 解决方案 > Apache Ignite:序列化时的类型替换

问题描述

我有一个类A、一个缓存A_CACHE和一个代理对象AProxy extends A。我的目标是将对象序列化AProxy,就好像它们是A对象一样(自动替换类型)并将它们放入A_CACHE.

Apache Ignite 中是否有任何方法可以替换我尝试放入缓存的对象类型(使用 BinarySerializer 进行序列化)?

到目前为止我所尝试的。我已经BinarySerializer为这两种类型实现并注册了相同的。我也尝试过使用BinaryNameMapper类来为两个类返回相同的类名,但没有成功。现在我想到的唯一选择是使用BinaryObjectBuilder. 它真的是我唯一的选择吗?

标签: ignite

解决方案


经过一番小小的研究,找到了解决方案。 AProxy应该实现接口writeReplace的方法Serializable。从此方法返回代理实例。如果代理类是Serializable或者Externalizable想要应用自定义序列化,Binarylizable那么接口应该由代理类实现(使用上面的 hack 时不应用自定义二进制序列化程序,而是OptimizedMarshaller正在使用)。


推荐阅读