infinispan 9 '<eviction strategy="LRU" />' 不是允许的元素
infinispan 9 '<eviction strategy="LRU" />' isn't an allowed element
Wildfly 18 驱逐标签未解析,给出无法解析配置错误。
当我将 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 它说驱逐是通过添加配置的,但即使这样也会给出无法识别的标签内存。
如何添加驱逐策略=LRU或替换策略:"LRU"=?
根据 infinispan 9.0 中的 docs,驱逐是通过将 <memory/>
元素添加到 <*-cache/>
配置部分来配置的。逐出由 Caffeine 使用 TinyLFU 算法处理,并有额外的准入 window。选择它是因为它提供了高命中率,同时还需要低内存开销。这提供了比 LRU 更好的命中率,同时也比 LIRS 需要更少的内存。
一般有两种类型:
- COUNT(这种类型的逐出将根据缓存中的条目数删除条目。一旦条目数大于大小,将删除一个条目以腾出空间。
- MEMORY - 这种类型的逐出将估计每个条目将占用多少内存,并在所有条目的总大小大于配置大小时删除条目。此类型仅适用于原始包装器、String 和 byte[] 类型,因此如果需要自定义类型,则必须启用 storeAsBinary。此外,基于内存的驱逐仅适用于 LRU 策略。
所以我认为你是这样定义的:
<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,因此您不需要显式设置逐出类型。Policy=TinyLFU)
- binary-memory(将条目存储为 Java 堆中的 bytes[]。逐出类型:COUNT OR MEMORY。Policy=TinyLFU)
- 堆外内存(将条目作为字节[]存储在Java之外的本机内存中。驱逐类型:COUNT OR MEMORY。Policy=LRU)
Lonzak 的回答是正确的。
此外,您可以只在 WildFly 19 中使用 WildFly 9 中的 "urn:jboss:domain:infinispan:4.0" 配置。WildFly 会自动将配置更新为当前架构版本中的等效配置。
Wildfly 18 驱逐标签未解析,给出无法解析配置错误。 当我将 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 它说驱逐是通过添加配置的,但即使这样也会给出无法识别的标签内存。
如何添加驱逐策略=LRU或替换策略:"LRU"=?
根据 infinispan 9.0 中的 docs,驱逐是通过将 <memory/>
元素添加到 <*-cache/>
配置部分来配置的。逐出由 Caffeine 使用 TinyLFU 算法处理,并有额外的准入 window。选择它是因为它提供了高命中率,同时还需要低内存开销。这提供了比 LRU 更好的命中率,同时也比 LIRS 需要更少的内存。
一般有两种类型:
- COUNT(这种类型的逐出将根据缓存中的条目数删除条目。一旦条目数大于大小,将删除一个条目以腾出空间。
- MEMORY - 这种类型的逐出将估计每个条目将占用多少内存,并在所有条目的总大小大于配置大小时删除条目。此类型仅适用于原始包装器、String 和 byte[] 类型,因此如果需要自定义类型,则必须启用 storeAsBinary。此外,基于内存的驱逐仅适用于 LRU 策略。
所以我认为你是这样定义的:
<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,因此您不需要显式设置逐出类型。Policy=TinyLFU)
- binary-memory(将条目存储为 Java 堆中的 bytes[]。逐出类型:COUNT OR MEMORY。Policy=TinyLFU)
- 堆外内存(将条目作为字节[]存储在Java之外的本机内存中。驱逐类型:COUNT OR MEMORY。Policy=LRU)
Lonzak 的回答是正确的。 此外,您可以只在 WildFly 19 中使用 WildFly 9 中的 "urn:jboss:domain:infinispan:4.0" 配置。WildFly 会自动将配置更新为当前架构版本中的等效配置。