2013-03-08 6 views
5

Ich entwickle eine Web App mit JCS 1.3 Caching.JCS Disk Auxiliary Cache DiskPath bearbeiten

Ich muss den DiskPath des Indexed Disk Auxiliary Cache zur Laufzeit von einer JVM-Eigenschaft bearbeiten.

Kennen Sie einen Weg, dies zu tun?

Ich habe es geschafft, das AuxiliaryCache-Objekt zu erstellen, aber ich weiß nicht, wie ich es mit all meinen Regionen verbinden kann, die in cache.ccf definiert sind.

Hier ist der Code, die Disk-Cache zu erstellen:

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); 

eine Region zu bekommen ich folgende verwenden:

JCS cache = JCS.getInstance(region); 

Eine Idee bitte?

Antwort

2

Wir haben schließlich die JCS-Conf-Datei (cache.ccf) aus dem Klassenpfad der Web-App extrahiert.

Ich habe eine JVM-Eigenschaft für diese Datei hinzugefügt. Bevor ich auf die JCS-Regionen zugreife, lade ich die Eigenschaften und verwende dann die CompositeCacheManager-Klasse, um JCS zu konfigurieren.

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