Wildfly 18驱逐标记未解析,从而导致无法解析配置错误。
当我将Wildfly 11升级到18时,这即将到来。在wildfly 11(infinispan 4)中,它的工作正常

    <subsystem xmlns="urn:jboss:domain:infinispan:4.0">
        <cache-container name="security" default

在Wildfly 18中具有以下部分(不工作)
    <subsystem xmlns="urn:jboss:domain:infinispan:9.0">
        <cache-container name="security" default

在此处不允许使用它的^^^^'逐出'。 infinispan:9.4表示通过添加来配置逐出,但即使这样也无法识别标签。

如何添加驱逐策略= LRU或替换策略:“LRU” =?

最佳答案

根据infinispan 9.0中的docs,通过将元素添加到<*配置节中来配置逐出。咖啡因利用TinyLFU算法和附加的接纳窗口来处理驱逐。选择它是因为提供了很高的命中率,同时还需要较低的内存开销。这提供了比LRU更好的命中率,同时还需要比LIRS更少的内存。
通常有两种类型:

  • COUNT(这种驱逐将根据缓存中的条目数删除条目。一旦条目数超过大小后,条目将被删除以腾出空间。
  • MEMORY-这种驱逐将估计每个条目在内存中的占用量,并且当所有条目的总大小大于配置的大小时,将删除该条目。该类型仅适用于原始包装器,String和byte []类型,因此,如果需要自定义类型,则必须启用storeAsBinary。同样,基于内存的驱逐仅适用于LRU策略。

  • 所以我认为您是这样定义的:
    <cache-container name="security" default

    要么
    <binary-memory eviction-type="MEMORY/COUNT"/>
    

    要么
    off-heap-memory eviction-type="MEMORY/COUNT"/>
    

    并且您可以随时指定大小:
    size="${infinispan.cache-container.security.auth

    仓储类型:
  • 对象内存(将条目作为对象存储在Java堆中。这是默认的存储类型。存储类型仅支持 COUNT个,因此您无需显式设置逐出类型。策略 = TinyLFU)
  • 二进制内存(将条目存储为Java堆中的bytes []。驱逐类型:COUNT或MEMORY。策略 = TinyLFU)
  • 堆外内存(将条目作为字节[]存储在Java之外的本机内存中。逐出类型:COUNT或MEMORY。策略 = LRU)
  • 关于security - infinispan 9'<eviction strategy =“LRU”/>'是不允许的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60449527/

    10-10 06:13