我正在尝试创建一个在我的应用程序中使用的Ehcache。它抛出异常
java.lang.IllegalStateException:找不到可持久资源的服务:disk
如何使用此配置创建Ehcache?我认为磁盘配置有问题。
private ResourcePools resourcePools() {
MemoryUnit memoryUnit = MemoryUnit.MB;
ResourcePoolsBuilder builder = ResourcePoolsBuilder.newResourcePoolsBuilder();
return builder.disk(diskSize, memoryUnit, true).heap(heapSize, memoryUnit).build();
}
@Bean
public CacheManager getCacheManager(){
CacheManager cacheManager = newCacheManagerBuilder()
.withCache("symbolCache",
newCacheConfigurationBuilder(String.class, Long.class, resourcePools()))
.build(true);
return cacheManager;
}
@Bean
public Cache getCache(){
Cache<String,Long> symbolCache = getCacheManager().getCache("symbolCache", String.class, Long.class);
return symbolCache;
}
答案 0 :(得分:0)
这就是我要找的,我必须指定磁盘的位置。当我们指定磁盘时,此配置是合适的,否则您可以使用我的代码而不使用磁盘。
PersistentCacheManager persistentCacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.with(CacheManagerBuilder.persistence(new File(getStoragePath(), "myData")))
.withCache("threeTieredCache",
CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class,
ResourcePoolsBuilder.newResourcePoolsBuilder()
.heap(10, EntryUnit.ENTRIES)
.offheap(1, MemoryUnit.MB)
.disk(20, MemoryUnit.MB, true)
)
).build(true);
Cache<Long, String> threeTieredCache = persistentCacheManager.getCache("threeTieredCache", Long.class, String.class);
threeTieredCache.put(1L, "stillAvailableAfterRestart");
persistentCacheManager.close();