2013-06-14 4 views
0

안녕하세요, 현재 나의 요구 사항은 EhCache를 사용하여 레코드를 저장하고 읽는 것입니다. EhCache 구현이 처음입니다. EhCache Documentation을 읽고 구현하기 시작했습니다. 레코드를 삽입하고 부분을 읽었습니다. 레코드가 삽입되는 동안 * .data * .index 파일이 생성됩니다. 다음은 코드입니다. EhCache에서 레코드를 읽고 쓰는 방법은 무엇입니까?

public class Driver 
    { 
    public static void main(String[] args) { 
    CacheManager cm = CacheManager.create("ehcache.xml"); 
    Cache cache = cm.getCache("test"); 
    // I do a couple of puts 
    for(int i=0;i<10;i++){ 
     cache.put(new Element("key1", "val1")); 
      cache.flush(); 
    } 
    System.out.println(cache.getKeys()); 
    for(int i=0;i<10;i++){ 
     Element el = cache.get("key"+i); 
     System.out.println(el.getObjectValue()); 
    } 
    cm.shutdown(); 
    } 
    } 

이제 문제는 cm.shutdown() 것입니다. 이 행을 주석 처리하고 삽입 부분을 주석 처리하고 프로그램 실행을 의미하는 경우 레코드를 검색 할 수 없으며 * .index 파일도 삭제됩니다. 따라서 실제 시나리오에서 프로그램이 갑자기 중지되면 시작 후 레코드를 읽을 수 없음을 의미합니다. 나는 파일이 삭제 된 이유를 알고 싶어 내가이 상황에서 레코드를 읽을하지 못할 이유는 ... 콘솔에 나오는 예외는 당신이 어떤 임의의 입력을하시기 바랍니다 필요

[email protected] 
     Exception in thread "main" java.lang.NullPointerException 
      at Driver.main(Driver.java:29)... 

..

답변

1

입니다 일이 정확하고 예상되는 행동이 정확합니다. 캐시는 일반적으로 자주 사용되는 데이터를 신속하게 제공하면서 데이터 저장소에 대한 값 비싼 출장을 피함으로써 애플리케이션 성능을 향상시키는 데 사용됩니다.

시스템이 종료 된 후에도 모든 응용 프로그램이 캐시를 유지해야하는 것은 아니며 이것이 기본 동작입니다 (대부분의 응용 프로그램은 응용 프로그램 시작시 또는 요청이 들어 오기 시작할 때 캐시를 작성합니다). 캐싱 할 데이터는 힙에 있습니다. JVM이 종료되자 마자 캐시가 사라집니다. 이제 다시 시작하지 않고 계속 유지 하시겠습니까? 사용할 수있는 옵션이 있습니다. 다시 코드를 복사 here

설명으로

DiskStoreConfiguration diskStoreConfiguration = new DiskStoreConfiguration(); 
diskStoreConfiguration.setPath("/my/path/dir"); 
// Already created a configuration object ... 
configuration.addDiskStore(diskStoreConfiguration); 
// By adding configuration for storing the cache in a file - you are not using default cache manager 
CacheManager mgr = new CacheManager(configuration); 

는 또한, 당신은 또한 지속성 옵션을 구성해야합니다 : here

그리고 바로 같은 페이지에서 코드를 복사하고 최대 Loook 링크에서 :

<cache> 
    <persistence strategy=”localRestartable” synchronousWrites=”true”/> 
</cache> 

희망이 있습니다.

+0

안녕하세요 Vishal, 답변 감사합니다. ....로 ehCache.xml 파일 자체에 DiskStoreConfiguration을 설정했습니다. 그러나 여전히 그것을 가져올 수 없습니다 ... 나를 안내해주십시오. 뭐가 잘못 됐니? –

+0

하지만 구성 객체를 CM에 전달하고 있습니까? –

+0

오, 퇴거 및 만료 정책은 무엇입니까? –

관련 문제