JCache (JSR 107) の EHCache 実装を使用しようとしています。以下の構成ファイルを提供しますsrc\main\resources\ehcache.xml
。
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect" dynamicConfig="true">
<!-- see http://www.ehcache.org/ehcache.xml -->
<defaultCache
maxEntriesLocalHeap="200000"
eternal="false"
timeToIdleSeconds="1200"
timeToLiveSeconds="1200">
<persistence strategy="localTempSwap"/>
</defaultCache>
</ehcache>
キャッシュを作成する方法は次のとおりです。
String providerName = "org.ehcache.jcache.JCacheCachingProvider";
CachingProvider cachingProvider = Caching.getCachingProvider(providerName);
CacheManager cacheManager = cachingProvider.getCacheManager();
CompleteConfiguration<ComposedKey, Object> config = new MutableConfiguration<ComposedKey, Object>()
.setTypes(ComposedKey.class, Object.class)
.setExpiryPolicyFactory(FactoryBuilder.factoryOf(new AccessedExpiryPolicy(new Duration(TimeUnit.MINUTES, 30))))
.setReadThrough(false)
.setWriteThrough(false)
.addCacheEntryListenerConfiguration(
new MutableCacheEntryListenerConfiguration<ComposedKey, Object>(new CacheListenerManagerJSR107Factory(), null, true,
true));
;
Cache<ComposedKey, Object> cache = cacheManager.createCache("cache", config);
しかし、作成されたキャッシュは、提供された構成 (つまり、 の下) を使用していないようehcache.xml
です。ここでのデバッグは、ehcache インスタンスの属性です。
[ name = orACJ2rF-1 status = STATUS_ALIVE eternal = false overflowToDisk = false maxEntriesLocalHeap = 1000 maxEntriesLocalDisk = 0 memoryStoreEvictionPolicy = LRU timeToLiveSeconds = 0 timeToIdleSeconds = 0 persistence = none diskExpiryThreadIntervalSeconds = 120 cacheEventListeners: org.ehcache.jcache.JCacheListenerAdapter ; orderedCacheEventListeners: maxBytesLocalHeap = 0 overflowToOffHeap = false maxBytesLocalOffHeap = 0 maxBytesLocalDisk = 0 pinned = false ]