据我所知,必须明确启用对磁盘的持久性。请参阅此处的文档。如果您尚未添加此类配置,我怀疑默认情况下会将内容存储到磁盘中。检查您的 ehcache 配置,您是否看到与CacheWriter
缓存的持久性或附件相关的任何内容?
我会说,一旦您的服务运行,您可以通过 JMX 获取缓存配置,以检查是否有磁盘持久性,如果有,它在哪里持久化。您可以通过这种方式启用 JMX,并且可以自行检查:
CacheManager cm = net.sf.ehcache.CacheManager.getInstance();
MBeanServer mbs = java.lang.management.ManagementFactory.getPlatformMBeanServer();
net.sf.ehcache.management.ManagementService.registerMBeans(cm, mbs, true, true, true, true, true);
例如,bean net.sf.cache/CacheConfiguration/CacheManager/cache/DiskPersistent 告诉您是否启用了磁盘持久性。但是,持久性也可以通过CacheWriter
。要找出这一点,您不能使用 JConsole,但您必须以编程方式附加到 MBeanServer 并获取属性 net.sf.ehcache/Cache/CacheManager/cache/CacheConfiguration。这将返回一个net.sf.ehcache.management.CacheConfiguration
实例,它应该告诉您注册的 CacheWriter,并希望它正在使用的配置。(我自己没有尝试过。)
此外,如果数据机密性对您非常重要,那么您还应该考虑加密您的数据(在缓存中和通过网络)。