首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal如何实现缓存持久化
zhbs_钟楠
2018-05-10 15:24
用的是ehcache,当服务器断开重启的时候在get缓存拿不到
项目:
JFinal
评论区
JFinal
2018-05-10 16:04
ehcache.xml 中相关配置添加下面的属性:
diskPersistent="true"
jfinal 不会干预 ehcache 的行为,因此类似的功能,直接使用 ehcache 有关积累即可
回复
zhbs_钟楠
2018-05-10 16:12
@JFinal
我已经设置了maxElementsInMemory="1"
maxElementsOnDisk="0"
eternal="true"
overflowToDisk="true"
diskPersistent="true"
缓存data文件已经是持久化到硬盘上了,但是就是重启服务器的时候cachekit.get拿到的还是null
回复
JFinal
2018-05-10 16:56
maxElementsOnDisk=0 这个你查一下官方文档,或许是这个造成的不能持久化,总之一定可以持久化,以前我一直这么用着的
重点关注这些配置之间的相互影响
回复
zhbs_钟楠
2018-05-11 08:55
@JFinal
我看了下磁盘了只有对应cache的data文件,没有网上说的生成个index文件,是不是少了哪个步骤还是只是单纯的配置问题?
回复
zhbs_钟楠
2018-05-11 09:20
@JFinal
搞定了,我是这样解决的,现在系统初始化
System.setProperty(net.sf.ehcache.CacheManager.ENABLE_SHUTDOWN_HOOK_PROPERTY,"true");
然后在web.xml加入监听
net.sf.ehcache.constructs.web.ShutdownListener
在put完数据后CacheKit.getCacheManager().getCache("myCache").flush();
回复
JFinal
2018-05-11 10:35
@zhbs_钟楠
这个方案太不优雅了,难道你在用 jfinal 开发 “非web” 项目,如果是这样的话,你得在关闭项目时手动调用一下 ehcache.stop() 方法
在 web 项目中,上面这个 stop() 方法是被自动回调的
回复
发送
我要反馈
热门反馈
扫码入社
diskPersistent="true"
jfinal 不会干预 ehcache 的行为,因此类似的功能,直接使用 ehcache 有关积累即可