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

Wildfly 11升级至18后Infinispan驱逐配置解析失败求助

解决Wildfly 18中Infinispan驱逐配置解析失败的问题

这个问题我之前帮同事排查过,核心原因是Wildfly升级后Infinispan的配置模型发生了变化,再加上你使用的subsystem命名空间不匹配,才导致了报错。下面一步步给你解决:

为什么原来的配置会报错?

在Wildfly 11(对应Infinispan 8.x/4.x subsystem)中,驱逐配置是通过单独的<eviction>标签定义的,但从Infinispan 9.x开始,驱逐和内存存储的配置被整合到了<memory>标签中,旧的<eviction>标签在新的subsystem版本里已经不再允许使用,所以会提示'eviction' isn't an allowed element here。

而你尝试用<memory>标签却提示未识别,是因为你用的是urn:jboss:domain:infinispan:9.0命名空间——Wildfly 18对应的Infinispan subsystem版本是9.4,9.0的命名空间里还没引入<memory>标签,必须使用匹配的9.4命名空间才能识别这个新标签。

正确的配置示例

把你的配置改成下面这样,就能正常运行了:

<subsystem xmlns="urn:jboss:domain:infinispan:9.4"> 
 <cache-container name="security" default-cache="auth-cache"> 
  <local-cache name="auth-cache"> 
   <locking acquire-timeout="${infinispan.cache-container.security.auth-cache.locking.acquire-timeout}"/> 
   <!-- 替换原来的<eviction>标签 -->
   <memory max-count="${infinispan.cache-container.security.auth-cache.eviction.max-entries}">
     <eviction strategy="LRU" type="COUNT"/>
   </memory>
   <expiration max-idle="-1"/> 
  </local-cache> 
 </cache-container> 
</subsystem>

关键配置说明

  • 命名空间匹配:必须使用urn:jboss:domain:infinispan:9.4,这是Wildfly 18对应的官方subsystem版本,确保<memory>标签能被正确解析。
  • 标签参数:
    • max-count对应原来的max-entries,表示缓存的最大条目数;
    • type="COUNT"表示按条目数量限制缓存大小,和你原来的驱逐逻辑完全一致;
    • strategy="LRU"保留了你原来的最近最少使用驱逐策略,行为和之前没有变化。
  • 其他可选配置:如果需要按内存大小限制缓存,可以把type改成MEMORY,然后用max-size参数(比如max-size="100MB"),但你的场景用COUNT就足够了。

验证配置的小技巧

你可以用Wildfly的CLI工具验证配置是否正确,启动Wildfly后执行以下命令:

/subsystem=infinispan/cache-container=security/local-cache=auth-cache:read-resource-description

如果返回的资源描述中包含memory相关的配置项,说明你的配置已经被正确识别了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:48:11