2010-07-21 70 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類中。

相關問題