我正在将 Oracle Coherence 缓存与 Java 一起使用,但遇到了问题。当我将某些东西放入缓存(如地图)并使用 get 调用将其取回然后修改对象(例如,向地图添加值)时,修改后的值不会反映在缓存中。即,如果我再次发出 get,我将得到相同的旧对象。ehcache 或 dynacache 不会发生这种情况。
我知道我们可以将修改后的地图写回缓存,但我想知道我们是否可以在 coherence config 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 仍然只有一个条目。