Oracle Coherence - изменение данных не отражается в кеше - PullRequest
0 голосов
/ 21 июля 2010

Я использую кэш Oracle Coherence с Java и столкнулся с проблемой.Когда я помещаю что-то в кеш (например, карту) и получаю его обратно с помощью вызова get, а затем изменяю объект (скажем, добавляем значение на карту), измененное значение не отражается в кеше.то есть, если я выпущу get снова, я получу тот же старый объект.Это не происходит с ehcache или dynacache.

Я знаю, что мы можем записать измененную карту обратно в кэш, но я хотел знать, есть ли какая-то конфигурация, которую мы можем сделать в конфигурации когерентности xml.

Пример кода:

ConcurrentHashMap<String, String> myMap = new ConcurrentHashMap<String, String>();
myMap.put("Hello", "World");
cache.put("myMap", myMap);
ConcurrentHashMap<String, String> myExMap = (ConcurrentHashMap<String, String>)cache.get("myMap");
myExMap.put("Once", "More");
ConcurrentHashMap<String, String> myFinMap = (ConcurrentHashMap<String, String>) cache.get("myMap");
System.out.println(myFinMap);

После выполнения myFinMap по-прежнему имеет только одну запись.

Ответы [ 2 ]

1 голос
/ 21 июля 2010

Может быть, вам нужно помещать объект в кеш каждый раз, когда вы его модифицируете (наверное, потому что он сериализован?)

0 голосов
/ 27 сентября 2010

Вы должны поместить объект обратно в кеш. Объект, полученный из кэша Coherence, не обернут в класс Coherence, который ищет модификации и синхронизируется с кэшем.

...