長話短說,我創建了一個使用Apache JCS來管理自己的對象的庫。使用在庫中使用時創建Apache JCS緩存confilicts
CompositeCacheManager ccm CompositeCacheManager.getUnconfiguredInstance();
Properties props = new Properties();
props.load(fis);
ccm.configure(props);
CompositeCache<Serializable, Serializable> cache = ccm.getCache(CACHE_NAME);
以上,它從一個文件,並裝載到高速緩存管理器讀取配置和測試應用程序的測試庫時,一切正常。
但是在我真正的應用程序中,我也使用JCS來管理與應用程序相關的對象,這就是問題發生的地方。
當應用程序啓動時,它首先實例化應用程序緩存管理器,併成功加載所有配置並創建我想要的內容。
但是對於庫的緩存管理器,它根本不使用我的配置,聽起來它實例化了一些默認的Cache實例。例如,在我的媒體庫的配置,我有:
jcs.region.MYREGION=DCACHE
jcs.region.MYREGION.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes
jcs.region.MYREGION.cacheattributes.MaxObjects=1200
jcs.region.MYREGION.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.MYREGION.cacheattributes.DiskUsagePattern=UPDATE
的DCHACHE輔助定義爲:
jcs.auxiliary.DCACHE=org.apache.commons.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DCACHE.attributes=org.apache.commons.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DCACHE.attributes.DiskPath=LIB_DATA_DIR
jcs.auxiliary.DCACHE.attributes.MaxPurgatorySize=10000
jcs.auxiliary.DCACHE.attributes.MaxKeySize=10000
jcs.auxiliary.DCACHE.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DCACHE.attributes.MaxRecycleBinSize=7500
,顯示它沒有使用相關配置的審計證據是: 它創建MYREGION與SWAP DiskUsagePattern (我也試過DiskUsagePatternName但沒有任何區別)。
它不使用LIB_DATA_DIR作爲DisckPath。而是使用我已經爲應用程序配置定義的那個。
如果我評論應用程序的JCS相關代碼,它對於圖書館的JCS非常適用。
我也嘗試過JCS.getInstance(「cache_name」),但它沒有任何區別。
你們有什麼想法嗎?