JCS edit Дисковый вспомогательный кэш DiskPath
Я разрабатываю веб-приложение с кэшированием JCS 1.3.
Мне нужно отредактировать DiskPath вспомогательного кэша проиндексированного диска во время выполнения из свойства JVM.
Вы знаете способ сделать это?
Мне удалось создать объект Auxiliary Cache, но я не знаю, как связать его со всеми регионами, определенными в cache.ccf.
Вот код, создающий дисковый кеш:
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);
Чтобы получить регион, я использую следующее:
JCS cache = JCS.getInstance(region);
Идея, пожалуйста?
1 ответ
Решение
Наконец, мы извлекли файл JCS conf (cache.ccf) из пути к классам веб-приложения.
Я добавил свойство JVM для этого файла. Прежде чем получить доступ к регионам JCS, я загружаю свойства, затем использую класс CompositeCacheManager для настройки 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);