security - infinispan 9 '<eviction strategy="LRU"/>' isn' t 一个允许的元素

标签 security wildfly infinispan infinispan-9 wildfly-18

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>

它给出 ^^^^ '驱逐' 在这里不是允许的元素。 infinispan:9.4它说驱逐是通过添加配置的,但即使这样也会给出无法识别的标签内存。

如何给strategy:"LRU"=添加eviction strategy=LRU或者replacement?

最佳答案

根据docs在 infinispan 9.0 中,通过添加 <memory/> 来配置驱逐。元素到你的<*-cache/>配置部分。逐出由 Caffeine 使用 TinyLFU 算法和额外的准入窗口处理。选择它是因为它提供了高命中率,同时还需要低内存开销。这提供了比 LRU 更好的命中率,同时也比 LIRS 需要更少的内存。 一般有两种类型:

  • COUNT(这种类型的逐出将根据缓存中的条目数删除条目。一旦条目数大于大小,将删除条目以腾出空间。
  • MEMORY - 这种类型的逐出将估计每个条目在内存中占用的大小,并在所有条目的总大小大于配置大小时删除条目。此类型仅适用于原始包装器、String 和 byte[] 类型,因此如果需要自定义类型,则必须启用 storeAsBinary。此外,基于 MEMORY 的驱逐仅适用于 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}"

存储类型:

  • 对象内存(将条目作为对象存储在 Java 堆中。这是默认存储类型。存储类型仅支持 COUNT,因此您无需显式设置逐出类型。政策=TinyLFU)
  • 二进制内存(将条目存储为 Java 堆中的 bytes[]。驱逐类型:COUNT OR MEMORY。Policy=TinyLFU)
  • 堆外内存(将条目作为字节 [] 存储在 Java 之外的 native 内存中。驱逐类型:COUNT OR MEMORY。策略=LRU)

关于security - infinispan 9 '<eviction strategy="LRU"/>' isn' t 一个允许的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60449527/

相关文章:

c - Linux 缓冲区溢出返回到 libc

java - Wildfly Maven 插件未部署 xa-datasource

java - 自定义拦截器将 bean 注入(inject) DistributedTask

python - 当有人尝试打开文件时,如何创建 python 监听器并在日志文件中显示消息?

sql-server - 确保 SQL Server 的 Internet 安全

passwords - Web 应用程序 - 存储密码

Wildfly 11 连接到远程 Artemis ActiveMQ 服务器配置

java - WildFly 和旧的 EJB2 代码

java - 在 Wildfly 8.2 上重新部署后从 Infinispan 缓存读取时发生 ClassCastException

java - 如何在 Infinispan 中启用 JGroups 日志记录