JCS编辑磁盘辅助缓存DiskPath

Din*_*ino 5 java caching jcs

我正在使用JCS 1.3缓存开发Web应用程序.

我需要在运行时从JVM属性编辑索引磁盘辅助缓存的DiskPath.

你知道这样做的方法吗?

我设法创建了AuxiliaryCache对象,但我不知道如何将它与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);
Run Code Online (Sandbox Code Playgroud)

要获得一个区域,我使用以下内容:

JCS cache = JCS.getInstance(region);
Run Code Online (Sandbox Code Playgroud)

请问一个想法?

Din*_*ino 2

我们最终从 Web 应用程序的类路径中提取了 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);
Run Code Online (Sandbox Code Playgroud)

解决方案的来源