2013-03-08 9 views
5

Zajmuję się tworzeniem aplikacji internetowej z buforowaniem JCS 1.3.JCS edycja Disk Auxiliary Cache DiskPath

Potrzebuję edytować ścieżkę dyskową dysku indeksowanego Auxiliary Disk w środowisku wykonawczym z właściwości JVM.

Czy znasz sposób na zrobienie tego?

Udało mi się utworzyć obiekt AuxiliaryCache, ale nie wiem jak połączyć go ze wszystkimi moimi regionami zdefiniowanymi w cache.ccf.

Oto kod tworzenia pamięci podręcznej dysku:

IndexedDiskCacheAttributes indexedCacheAttr = new IndexedDiskCacheAttributes(); 

indexedCacheAttr.setMaxKeySize(10000); 
indexedCacheAttr.setMaxRecycleBinSize(10000); 
indexedCacheAttr.setMaxPurgatorySize(10000); 
indexedCacheAttr.setOptimizeAtRemoveCount(5000); 

String cacheDir = System.getProperty("xxxxx"); 

if (cacheDir == null || cacheDir.trim().length() == 0) { 
log.error("error:JCSManager xxxx."); 
} else {   
indexedCacheAttr.setDiskPath(cacheDir); 
} 


IndexedDiskCacheManager indexedCacheManager = 
IndexedDiskCacheManager.getInstance(indexedCacheAttr); 

// instance du cache disque 
AuxiliaryCache auxCache = indexedCacheManager.getCache(region); 

dostać regionu używam następujący:

JCS cache = JCS.getInstance(region); 

pomysł proszę?

Odpowiedz

2

W końcu wyodrębniliśmy plik JCS conf (cache.ccf) ze ścieżki klas aplikacji internetowej.

Dodałem właściwość JVM dla tego pliku. Przed uzyskaniem dostępu do regionów JCS ładuję właściwości, a następnie używam klasy CompositeCacheManager do konfigurowania JCS.

String jcsConfFile = System.getProperty("XXXXXX"); 

if (jcsConfFile == null || jcsConfFile.trim().length() == 0) { 
    log.error("error:JCSManager ........."); 
} else { 
    Properties props = new Properties(); 

    try { 
    // load a properties file 
    props.load(new FileInputStream(jcsConfFile)); 
    } catch (IOException e) { 
    log.error("error:JCSManager ........", e); 
    } 

    CompositeCacheManager ccm = CompositeCacheManager.getUnconfiguredInstance(); 

    ccm.configure(props); 
} 

//.... 
// later, ask for the region 
JCS cache = JCS.getInstance(region); 

source of the solution