2010-07-21 58 views
0

我正在使用Oracle Coherence缓存与Java并且遇到问题。当我将某些东西放入缓存(如地图)并使用get调用返回并修改该对象(例如,向地图添加值)时,修改的值不会反映在缓存中。即如果我再次发出get,我会得到相同的旧对象。这与ehcache或dynacache不会发生。Oracle Coherence - 数据更改没有反映在缓存中

我知道我们可以将修改后的地图写回缓存,但我想知道是否有一些配置可以在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仍然只有一个入口。

回答

1

也许你在每次修改它的时候(我猜是因为它是序列化?)

0

你必须把对象返回到缓存,使对象在缓存中。从Coherence缓存中获取的对象不包含在查找修改并与缓存同步的Coherence类中。

相关问题