infinispan 9 '<eviction strategy="LRU" />' 不是允许的元素
Posted
技术标签:
【中文标题】infinispan 9 \'<eviction strategy="LRU" />\' 不是允许的元素【英文标题】:infinispan 9 '<eviction strategy="LRU" />' isn't an allowed elementinfinispan 9 '<eviction strategy="LRU" />' 不是允许的元素 【发布时间】:2020-06-12 10:16:36 【问题描述】:Wildfly 18 eviction 标签未解析,导致解析配置错误。 当我将 Wildfly 11 升级到 18 时,就会出现这种情况。在 Wildfly 11(infinispan 4)中,它工作正常
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<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 strategy="LRU" max-entries="$infinispan.cache-container.security.auth-cache.eviction.max-entries"/>
<expiration max-idle="-1"/>
</local-cache>
</cache-container>
</subsystem>
在 Wildfly 18 中具有以下部分(不工作)
<subsystem xmlns="urn:jboss:domain:infinispan:9.0">
<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 strategy="LRU" max-entries="$infinispan.cache-container.security.auth-cache.eviction.max-entries"/>
<expiration max-idle="-1"/>
</local-cache>
</cache-container>
</subsystem>
它给出 ^^^^ 'eviction' 在这里不是一个允许的元素。infinispan:9.4 它说 Eviction 是通过添加配置的,但即使这样也会产生无法识别的标签内存。
如何添加eviction strategy=LRU或replacement to strategy:"LRU"=?
【问题讨论】:
【参考方案1】:根据 infinispan 9.0 中的 docs 驱逐是通过将 <memory/>
元素添加到您的 <*-cache/>
配置部分来配置的。驱逐由 Caffeine 使用 TinyLFU 算法和一个额外的准入窗口来处理。选择它是因为它提供了高命中率,同时还需要低内存开销。这提供了比 LRU 更好的命中率,同时也比 LIRS 需要更少的内存。
一般有两种:
所以我想你是这样定义的:
<cache-container name="security" default-cache="auth-cache">
<local-cache name="auth-cache">
<...your other options...>
<object-memory/>
</local-cache>
</cache-container>
或
<binary-memory eviction-type="MEMORY/COUNT"/>
或
off-heap-memory eviction-type="MEMORY/COUNT"/>
而且你总是可以指定尺寸:
size="$infinispan.cache-container.security.auth-cache.eviction.max-entries"
存储类型:
object-memory(将条目作为对象存储在 Java 堆中。这是默认存储类型。存储类型仅支持 COUNT,因此您无需显式设置驱逐类型。政策=TinyLFU) 二进制内存(将条目存储为 Java 堆中的字节 []。驱逐类型:计数或内存。策略=TinyLFU) 堆外内存(将条目作为字节[] 存储在 Java 之外的本机内存中。驱逐类型:计数或内存。策略=LRU)【讨论】:
【参考方案2】:隆扎克的回答是正确的。 此外,您可以在 WildFly 19 中使用 WildFly 9 中的“urn:jboss:domain:infinispan:4.0”配置。WildFly 会自动将配置更新为当前架构版本中的等效配置。
【讨论】:
以上是关于infinispan 9 '<eviction strategy="LRU" />' 不是允许的元素的主要内容,如果未能解决你的问题,请参考以下文章
带有 Infinispan 和 JBoss EAP 7.0.6 的休眠 L2C 不工作