【问题标题】:Reestarting JVM wont reload ehcache objects重新启动 JVM 不会重新加载 ehcache 对象
【发布时间】:2014-12-16 03:27:42
【问题描述】:

我遇到了 ehcache 的问题,我已将缓存设置为永久缓存,并且我正在将 JVM 逐个弹回以“不停机”,而这实际上并没有清除我的 ehcache 并重新加载新对象..

<cache name="SampleServerStartupCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="true" maxElementsOnDisk="10000000"
    diskPersistent="false" memoryStoreEvictionPolicy="LRU" diskExpiryThreadIntervalSeconds="120" />

我相信当缓存设置为永恒=“真”时,JVM 的重新启动应该刷新并加载新对象。但是,为了避免停机,我们将 JVM 一个一个地反弹,这会在干净重启之间产生影响吗?

【问题讨论】:

    标签: ehcache


    【解决方案1】:

    eternal="true" 仅表示元素不会从缓存中过期。它对 JVM 重新启动后元素的生命周期没有影响。

    如果你想要缓存元素的持久化,你需要设置diskPersistent="true",在你的配置文件中定义一个磁盘路径。您还必须在反弹 JVM 时正确关闭 CacheManager,否则保存在磁盘上的数据可能会在重启时被丢弃。

    评论后添加

    在您的场景中,重新启动 JVM 将清除其缓存。但是只有当您的应用程序放入缓存时才会加载缓存。 Ehcache 未配置为进行预加载。如果这是您想要的,请查看BootstrapCacheLoader 上的文档。

    【讨论】:

    • 感谢 Louis,所以我必须完全重启而不是滚动反弹?因此ehcache将被清除?这是唯一的选择吗?
    • 希望编辑回答您的问题 - 如果没有,请为您的问题添加说明。
    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    相关资源
    最近更新 更多