You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Wildfly 10迁移至Wildfly 12后Infinispan缓存查找失败求助

解决Wildfly 12中Infinispan本地缓存查找失败的问题

从Wildfly 10迁移到12时碰到Infinispan缓存查找失效的问题?这大概率是因为Wildfly 12对Infinispan的JNDI命名规则和配置要求做了更新,我之前处理过类似的迁移坑,下面给你具体的排查和修复步骤:

1. 修正JNDI Lookup路径是关键

Wildfly 12里Infinispan的JNDI命名格式和10版本不一样了,你之前用的java:jboss/infinispan/container/DataCache是缓存容器的路径,但如果你的目标是获取modelcache这个具体缓存实例,得用新的路径格式:

java:jboss/infinispan/cache/DataCache/modelcache

所以你的@Resource注解要改成这样:

@Resource(lookup = "java:jboss/infinispan/cache/DataCache/modelcache")
private Cache<String, Object> modelCache; // 记得根据你的实际数据类型调整泛型

要是你确实需要获取整个缓存容器,那原来的路径java:jboss/infinispan/container/DataCache在12里还是能用,但业务代码一般直接用具体缓存实例更合理。

2. 补全standalone-full.xml的缓存配置

你的基础配置没问题,但Wildfly 12对Infinispan的配置要求更明确,建议给本地缓存加上内存存储的配置,避免默认配置导致的初始化异常:

<cache-container name="DataCache" default-cache="modelcache" statistics-enabled="false">
    <local-cache name="modelcache" statistics-enabled="false">
        <!-- 明确堆内缓存的最大条目数和淘汰策略 -->
        <memory max-count="10000" when-full="REMOVE"/>
        <!-- 要是需要持久化可以加file-store,不需要就注释掉 -->
        <!-- <file-store path="modelcache-store" passivation="true"/> -->
    </local-cache>
</cache-container>

3. 确保EJB初始化时机正确

你用了@Startup单例EJB,建议把缓存的验证逻辑放到@PostConstruct方法里,而不是依赖字段注入的时机,这样能明确看到缓存是否初始化成功:

@Singleton
@Startup
public class CacheManagerBean {

    @Resource(lookup = "java:jboss/infinispan/cache/DataCache/modelcache")
    private Cache<String, Object> modelCache;

    @PostConstruct
    public void initAndVerifyCache() {
        if (modelCache == null) {
            throw new IllegalStateException("Failed to lookup modelcache from Infinispan container!");
        }
        // 加个测试操作验证缓存可用
        modelCache.put("mig-test", "wildfly-12-mig-success");
        String testVal = (String) modelCache.get("mig-test");
        System.out.println("Cache initialization test: " + testVal);
    }
}

4. 查看Wildfly日志定位深层问题

要是上面的步骤都试过还是不行,直接去Wildfly的standalone/log/server.log里找错误信息,比如:

  • Infinispan容器初始化失败的异常
  • JNDI查找时的NoSuchObjectException
  • EJB初始化时的依赖注入错误

这些日志会直接告诉你问题根源,比如配置语法错了、权限不足或者类加载冲突。


内容的提问来源于stack exchange,提问作者Raj Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:28:05