背景是通过ehcache保存session信息
一旦增加或者删除方法,都需要重启jetty,session丢失,就得重新登录
调试过程太麻烦
所以需要在jetty重启前将ehcache数据保存到磁盘,启动完成之后再恢复到内存
ehcache本身应该是支持的
但查了N多资料,翻来覆去也没试出结果,没办法来这里求助
目前做的工作:
1、ehcache.xml中:
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false" dynamicConfig="false"> <diskStore path="java.io.tmpdir/pro"/> <!-- diskPersistent:启用服务重启期间的数据恢复 --> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="7200" maxElementsOnDisk="10000000" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" overflowToDisk="true" diskPersistent="true"> </defaultCache> </ehcache>
2、web.xml中:
<web-app> <!-- Ehcache监听器 --> <listener> <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class> </listener> </web-app>
3、初始化ehcache时:
System.setProperty("net.sf.ehcache.enableShutdownHook", "true"); CacheManager cacheManager = CacheManager.create();
有的资料里还说要每次get/set之后,进行flush才能生成index磁盘索引文件,这个没试过,感觉每次都flush太得不偿失了
项目:JFinal