ignite - Apache Ignite:序列化时的类型替换
问题描述
我有一个类A
、一个缓存A_CACHE
和一个代理对象AProxy extends A
。我的目标是将对象序列化AProxy
,就好像它们是A
对象一样(自动替换类型)并将它们放入A_CACHE
.
Apache Ignite 中是否有任何方法可以替换我尝试放入缓存的对象类型(使用 BinarySerializer 进行序列化)?
到目前为止我所尝试的。我已经BinarySerializer
为这两种类型实现并注册了相同的。我也尝试过使用BinaryNameMapper
类来为两个类返回相同的类名,但没有成功。现在我想到的唯一选择是使用BinaryObjectBuilder
. 它真的是我唯一的选择吗?
解决方案
经过一番小小的研究,找到了解决方案。
AProxy
应该实现接口writeReplace
的方法Serializable
。从此方法返回代理实例。如果代理类是Serializable
或者Externalizable
想要应用自定义序列化,Binarylizable
那么接口应该由代理类实现(使用上面的 hack 时不应用自定义二进制序列化程序,而是OptimizedMarshaller
正在使用)。
推荐阅读
- html - Vue.js 的新手需要帮助了解为什么条形图不会在第一个命令之后更新
- r - ggplot - 根据变量设置线条的颜色,数据中变量类型的存在发生变化
- apache-spark - 当它运行'Spark.sql'时,总是显示'WARN Hive: Failed to access Metastore。此类不应在运行时访问'
- python - 如何在 djangorest 中为基于函数的视图启用 cors 原点?
- outlook-addin - 如何将 Outlook Web 加载项显示为命令栏项?
- node.js - 是否有可能做到这一点?(涉及解构和重新分配)
- python - 如何从 Python 中的数据框中选择特定细节?
- firebase - 有没有办法为 Firebase 获取唯一的网络设备 ID?
- python - 如何使用 %s 替换 python 文件中的文本?
- azure-devops - 在 Azure 上的 nuget 还原步骤中来自特定包源的 Nuget 包