gpt4 book ai didi

java - Apaches Ignite 不会序列化/反序列化 Guavas LoadingCache

转载 作者:行者123 更新时间:2023-12-01 19:29:25 27 4
gpt4 key购买 nike

我正在使用 Java7,并且正在配置 Apache Ignite(版本 2.7.5),其中服务器/客户端已启动并运行。但是,客户端无法从对象中检索 Guavas LoadingCache 变量(但是检索 ConcurrentHashMap 时没有问题)。似乎在某种程度上,在 Ignites 代理调用上,对象没有正确序列化/反序列化,并且我遇到了麻烦,因为 Guavas 文档说 LoadingCache/Cache 实现了可序列化。

在以下示例中,MyContainer 类和 _foo1 正常,并且已正确序列化和反序列化,但 _foo (LoadingCache) 则不然。

public class MyContainer {

private final ConcurrentHashMap<Object, Object> _foo1 = new ConcurrentHashMap<>();

private final LoadingCache<Object, Test> _foo = CacheBuilder.newBuilder().weakValues()
.build(new CacheLoader<Object, Test>() {
@Override public Test load(Object key) throws Exception {
return new Test(key);
}});


}

如果您需要更多详细信息,请告诉我,我们非常感谢您的帮助。最好的问候,埃尔德

更新

大家好,根据 Denis 的回复,我做了更多挖掘,发现了一些关于 cfg.setMarshaller(new OptimizedMarshaller().setRequireSerialized(false)); 的提及,并且它有效。然而,setMarshaller 已被弃用,我不确定这种方法主要在性能级别上的影响。

是否有任何关于弃用此方法背后的大问题的阅读/解释?

最诚挚的问候,赫尔德

最佳答案

CacheBuilder 构造 LocalCache.LocalLoadingCache 的实例。它有一个 writeReplace 方法,该方法会扰乱序列化。

此问题已在 Ignite 2.3 中修复:https://issues.apache.org/jira/browse/IGNITE-6485

您使用哪个版本的 Ignite?我建议升级到新版本的 Ignite 并切换到 Java 8 或 11,因为 Ignite 不再支持 Java 7。

关于java - Apaches Ignite 不会序列化/反序列化 Guavas LoadingCache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60218020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com