Я новичок в Oracle Coherence, я попробовал пример hello-world и работал нормально, но я заметил поведение, которое мне не нужно, то есть когда я сохраняю объект в кеше и пытаюсь получить этот объект и обновите его, это обновление не распространилось в кеш, я не уверен, но я думаю, что это связано с использованием com.tangosol.util.SafeHashMap.
Конфигурация кеша: я использую файлы конфигурации coherence.jar по умолчанию.
мой код:
NamedCache cache = CacheFactory.getCache("test");
HashMap<Integer, LinkedHashMap<Integer, String>> m = new HashMap<Integer, LinkedHashMap<Integer, String>>();
Map<Integer, String> l = new LinkedHashMap<Integer, String>();
l.put(1, "val-1");
l.put(2, "val-2");
Map<Integer, String> l2 = new LinkedHashMap<Integer, String>();
l2.put(3, "val-3");
l2.put(4, "val-4");
m.put(1, (LinkedHashMap<Integer, String>) l);
m.put(2, (LinkedHashMap<Integer, String>) l2);
cache.put(1, l);
cache.put(2, l2);
System.out.println(cache.get(1));
System.out.println(cache.get(2));
// output is:
//{1=val-1, 2=val-2}
//{3=val-3, 4=val-4}
((LinkedHashMap<Integer, String>)cache.get(1)).remove(1);
System.out.println("====== AFTER CHANGE ========");
System.out.println(cache.get(1));
System.out.println(cache.get(2));
// output STILL :
//{1=val-1, 2=val-2}
//{3=val-3, 4=val-4}
вывод:
{1=val-1, 2=val-2}
2014-11-16 12:51:53.214/6.333 Oracle Coherence GE <D4> (thread=ShutdownHook, member=1): ShutdownHook: stopping cluster node
{3=val-3, 4=val-4}
====== AFTER CHANGE ========
{1=val-1, 2=val-2}
{3=val-3, 4=val-4}
Мне кажется, что приведенное выше поведение похоже на объект HttpSession.
Мой вопрос: как изменить это поведение, и когда я изменяю объект, это изменение распространяется на кеш?