2010-07-21 3 views
0

Java와 함께 Oracle Coherence 캐시를 사용하고 있으며 문제가 있습니다. 캐시에 (지도와 같은) 무언가를 넣고 get 호출을 사용하여 다시 가져온 다음 개체를 수정 (예 :지도에 값 추가)하면 수정 된 값이 캐시에 반영되지 않습니다. 즉 내가 다시 get을하면 같은 오래된 객체를 얻을 것이다. 이것은 ehcache 또는 dynacache에서는 발생하지 않습니다.Oracle Coherence - 데이터 변경이 캐시에 반영되지 않았습니다.

수정 된 맵을 캐시에 다시 쓸 수 있다는 것을 알고 있지만 일관성 구성 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 클래스로 래핑되지 않습니다.

관련 문제