Я использую кеш 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 по-прежнему имеет только одну запись.