EhCache中的例外情况

时间:2017-10-29 16:22:46

标签: java spring ehcache

我正在尝试创建一个在我的应用程序中使用的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;
    }

1 个答案:

答案 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();