Lange Rede kurzer Sinn, ich habe eine Bibliothek erstellt, die Apache JCS verwendet, um ihre eigenen Objekte zu verwalten. mitErstellen von Apache JCS-Cache-Confilicts bei Verwendung in einer Bibliothek
CompositeCacheManager ccm CompositeCacheManager.getUnconfiguredInstance();
Properties props = new Properties();
props.load(fis);
ccm.configure(props);
CompositeCache<Serializable, Serializable> cache = ccm.getCache(CACHE_NAME);
Oben, liest es Konfiguration aus einer Datei und lädt zum Cache-Manager und alles funktioniert gut, wenn sie mit einer Testanwendung Testen Bibliothek.
Aber in meiner realen Anwendung verwende ich JCS auch, um anwendungsbezogene Objekte zu verwalten, und das ist, wo das Problem auftritt.
Wenn die Anwendung hochfährt, instanziert sie zuerst den Anwendungscache-Manager und lädt erfolgreich alle Konfigurationen und erstellt genau das, was ich beabsichtigt habe.
Aber für den Cache-Manager der Bibliothek, es verwendet meine Konfigurationen überhaupt nicht und klingt es instanziiert einige Standard-Cache-Instanz. Zum Beispiel in der Konfiguration meiner Bibliothek habe ich:
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
Die DCHACHE Hilfs ist definiert als:
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
Die Beweise, dass sie zeigen nicht die entsprechenden Konfigurationen verwenden, sind: Es schafft MyRegion der DiskUsagePattern mit SWAP (Ich habe auch DiskUsagePatternName versucht, macht aber keine Unterschiede).
Es verwendet LIB_DATA_DIR nicht als DisckPath. Verwendet stattdessen den, den ich bereits für die Konfiguration der Anwendung definiert habe.
Wenn ich die JCS-Codes der Anwendung kommentieren, funktioniert es gut für die JCS der Bibliothek.
Ich habe auch versucht JCS.getInstance ("cache_name"), aber es macht keine Unterschiede.
Haben Sie eine Idee?