Я использую Java7 и настраиваю Apache Ignite (версия 2.7.5), где работают серверы / клиенты. Однако клиенты не могут извлечь переменную Guavas LoadingCache из объекта (однако ConcurrentHashMap извлекается без проблем). Кажется, что как-то при вызовах прокси Ignites объект не сериализуется / десериализован правильно, и у меня возникают проблемы, так как документы Guavas говорят, что LoadingCache / Cache реализует Serializable.
В следующем примере класс 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);
}});
}
Пожалуйста, дайте мне знать, если вам нужно больше деталей, и любая помощь очень ценится. С наилучшими пожеланиями, Гелдер
ОБНОВЛЕНИЕ
Привет всем, с ответом Дениса я больше копался и нашел некоторые упоминания о cfg.setMarshaller(new OptimizedMarshaller().setRequireSerializable(false));
, и это сработало. Тем не менее, setMarshaller устарела, и я не уверен насчет этого подхода в основном на уровне производительности.
Любое прочтение / объяснение того, что было значительным за отказ от этого метода?
С наилучшими пожеланиями, Гелдер