EhCache 3.1.3持久性问题

时间:2016-12-09 17:30:24

标签: java persistence ehcache disk

我遇到了ehcache持久性问题。缓存本身在首次启动时工作正常,但在重新启动tomcat servlet时它不记得旧值。 这是我初始化ehcache的代码。我没有使用任何xml。

import org.ehcache.Cache;
import org.ehcache.PersistentCacheManager;
import org.ehcache.Status;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
import org.ehcache.config.units.EntryUnit;
import org.ehcache.config.units.MemoryUnit;

PersistentCacheManager persistentCacheManager =
    CacheManagerBuilder.newCacheManagerBuilder()
            .with(CacheManagerBuilder.persistence("/cache"))
            .withCache("test-cache",
                    CacheConfigurationBuilder.newCacheConfigurationBuilder(
                            Integer.class, String.class,
                            ResourcePoolsBuilder.newResourcePoolsBuilder()
                                    .heap(1, EntryUnit.ENTRIES)
                                    .offheap(1, MemoryUnit.MB)
                                    .disk(20, MemoryUnit.MB)
                    )
            ).build(true);
Cache cache = persistentCacheManager.getCache("test-cache", Integer.class, String.class);

log.info("Cache get 1 before putting: " + cache.get(1));
for(int i = 0; i< 1000; i++) {
    cache.put(i,"Hello");
}
log.info("Cache get 1 after putting: " + cache.get(1));

重启后,“before”日志语句的结果始终为null。

1 个答案:

答案 0 :(得分:3)

您需要将磁盘资源池声明为持久性。它不是默认的。

ref.channels

然后你的测试完美无缺。

完整的代码,包括关闭缓存管理器:

x = [1, 1.2, 1.3]
y = [1, 1.2, 1.3]
angle = [10, 20, 30]

plt.quiver(x, y, np.cos(np.radians(angle)), np.sin(np.radians(angle)))