apaches ignite不会序列化/反序列化guavas loadingcache

wz3gfoph  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(296)

我使用的是java7,配置的是apaches-ignite(2.7.5版),服务器/客户机在这里启动并运行。但是,客户端无法从对象中检索guavas loadingcache变量(但是检索concurrenthashmap时没有问题)。似乎ignites代理调用上的对象没有被正确序列化/反序列化,我遇到了一些问题,因为guavas文档说loadingcache/cache实现了序列化。
在下面的示例中,mycontainer类和\u foo1正常,并且被正确序列化和反序列化,但是\u 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);
                }});

}

请让我知道如果你需要更多的细节和任何帮助是非常感谢。祝你好运,hé文件夹
更新
大家好,丹尼斯的React,我做了更多的挖掘,发现了一些关于 cfg.setMarshaller(new OptimizedMarshaller().setRequireSerializable(false)); 而且成功了。但是,setmarshaller已被弃用,我不确定这种方法主要在性能级别上的含义。
有人读过/解释过反对这种方法背后有什么大不了的吗?
祝你好运,hé文件夹

gpfsuwkq

gpfsuwkq1#

这个 CacheBuilder 构造的示例 LocalCache.LocalLoadingCache . 它有一个 writeReplace 方法,该方法会破坏序列化。
此问题已在ignite 2.3中修复:https://issues.apache.org/jira/browse/ignite-6485
您使用哪个版本的ignite?我建议升级到ignite的新版本并切换到Java8或Java11,因为Java7不再受ignite支持。

相关问题