我使用的是Infinispan,但重启时我的Wildfly没有将缓存保留在文件存储中
@Resource(lookup = "java:jboss/infinispan/container/server")
private EmbeddedCacheManager manager;
public String test() {
this.cache.put(UUID.randomUUID().toString(), new Date());
this.cache.put(UUID.randomUUID().toString(), new Date());
this.cache.put(UUID.randomUUID().toString(), new Date());
this.cache.put(UUID.randomUUID().toString(), new Date());
this.cache.put(UUID.randomUUID().toString(), new Date());
}
@PostConstruct
protected void init() {
this.manager.start();
this.cache = this.manager.getCache();
}
这是我的standalone.xml
<cache-container name="server" default-cache="default" module="org.wildfly.clustering.web.infinispan">
<local-cache name="default">
<transaction mode="BATCH"/>
<file-store relative-to="jboss.server.data.dir" path="infinispan" passivation="false" purge="false"/>
</local-cache>
</cache-container>
答案 0 :(得分:1)
解决方案:直接注入缓存。这可确保在您需要时安装缓存使用的缓存配置。此外,WildFly将自动处理Cache及其依赖项的生命周期。
e.g。
@Resource(lookup = "java:jboss/infinispan/cache/server/default")
private Cache<UUID, Date> cache;
我还建议直接使用UUID类型,而不是字符串,因为它们会更有效地序列化。