기존 웹 응용 프로그램에 캐시 솔루션을 구현할 계획입니다. 복잡한 것은 없습니다. 기본적으로 디스크 오버플로 및 자동 퇴거를 지원하는 동시 맵입니다. 캐시를 클러스터링하는 것이 미래에는 요구 될 수 있지만 지금은 필요하지 않을 수 있습니다.ehcache의 copyOnRead 및 copyOnWrite와 동일한 Infinispan
나는 ehcache의 copyOnRead 및 copyOnWrite 기능을 좋아하는데, 이는 내가 캐시에서 가져온 것을 수정하기 전에 수동으로 복제 할 필요가 없다는 것을 의미하기 때문이다. 지금 나는 Infinispan을보기 시작했으나, 거기에 상응하는 것을 발견하지 못했습니다. 그것이 존재합니까?
즉, 다음 단위 테스트 통과해야
@Test
public void testCopyOnWrite() {
Date date = new Date(0);
cache.put(0, date);
date.setTime(1000);
date = cache.get(0);
assertEquals(0, date.getTime());
}
@Test
public void testCopyOnRead() {
Date date = new Date(0);
cache.put(0, date);
assertNotSame(cache.get(0), cache.get(0));
}
감사합니다. 나는 객체 그래프를 올바르게 복사하는 것이 어려운 문제 (일반적인 경우)라고 생각한다. 그래서 나는 그것을 직접하고 싶지 않았다. 당신이 제안한 것처럼 ehcache가 어떻게하는지 살펴 보겠습니다. 그러나 수정하기 전에 캐시에서 가져온 내용을 수동으로 복사하는 것으로 끝날 것입니다. – waxwing
EHCache가 객체를 복사하는 데 사용하는 기본 전략은 Java의 직렬화 메커니즘을 사용하는 것입니다. (객체를 직렬화 한 다음 직렬화를 해제하면 새 인스턴스가 생성됩니다.) 물론, 속도가 느리고 객체가 직렬화 될 수있는 경우에만 작동합니다 (하지만 종종 디스크에 쓰고 싶기 때문에 캐시 된 객체가있는 경우가 많습니다 ...). 하지만 당신은 맞습니다, 객체 그래프를 복사하는 것은 어려운 문제입니다. 저는 과거에 Dozer를 사용 했었습니다. 다음을 참고하십시오 : http://stackoverflow.com/questions/1432764/any-tool-for-java-object- 객체 간 매핑 –
발견 : http://svn.terracotta.org/svn/ehcache/trunk/core/src/main/java/net/sf/ehcache/store/compound/SerializationCopyStrategy.java –