3

我正在从 Wildfly 10 迁移到 Wildfly 12。我创建了与 Wildfly 10 中配置的本地缓存相同的本地缓存。

独立full.xml 配置:

 <cache-container name="DataCache" default-cache="modelcache" statistics-enabled="false">
            <local-cache name="modelcache" statistics-enabled="false"/>
        </cache-container>

使用 @startup 注释的单例 ejb 中的查找代码:

 @Resource(lookup = "java:jboss/infinispan/container/DataCache")
private CacheContainer Container;
@PostConstruct
public void init() {
    Container.start();
    modelCache = Container.getCache("modelcache");

}

部署文件时出现以下异常

造成的:

org.infinispan.commons.CacheConfigurationException:ISPN000436:已请求缓存“modelcache”,但不存在具有该名称的缓存配置,并且未为此容器设置默认缓存

如何解决这个问题?

4

3 回答 3

2

<resource-ref>
    <res-ref-name>infinispan/DataCache</res-ref-name>
    <lookup-name>java:jboss/infinispan/cache/DataCache/modelcache</lookup-name>
</resource-ref>

jboss-web.xml. 当请求缓存时这样做(注意name注解属性用于指定资源):

@Resource(name = "infinispan/DataCache")
private Cache<K, V> cache;

有关更多详细信息,请参阅此线程:https ://developer.jboss.org/thread/277425

于 2018-07-27T08:30:24.697 回答
1

将以下条目放入项目描述符文件(web.xml、ejb-jar.xml 等)

<resource-ref>
    <res-ref-name>infinispan/DataCache</res-ref-name>
    <lookup-name>java:jboss/infinispan/container/DataCache</lookup-name>
</resource-ref>
于 2018-07-16T20:57:43.333 回答
0

对于 wildfly 10,您可以通过以下方式查找您的 infinispan 缓存或缓存容器

  1. 您需要在以下子系统下的standalone-ha.xml(高可用性)中定义您的缓存
 <cache-container name="myCacheContainer" default-cache="myCache" module="org.wildfly.clustering.ejb.infinispan">
                <transport lock-timeout="60000"/>
              <replicated-cache name="myCache">
                    <expiration lifespan="86400000" max-idle="3600000"/>
                </replicated-cache>
                </cache-container>
  1. 定义缓存后,您可以查找缓存或容器。2.a 要查找缓存,您应该在项目描述符文件中设置资源引用元素,即(web.xml、jboss-web.xml 等)

    infinispan/myCache java:jboss/infinispan/cache/myCacheContainer/myCache

    2.b 如果您想查找缓存容器,您还需要在项目描述符中定义配置查找。所以资源参考看起来像这样

     <resource-ref>
    

    infinispan/myCacheContainer org.infinispan.manager.CacheContainer java:jboss/infinispan/container/myCacheContainer infinispan/myCache-config org.infinispan.configuration.cache.Configuration java:jboss/infinispan/configuration/myCacheContainer/default

  2. 现在,如果使用 spring,您可以像这样对缓存进行 JNDI 查找

     <jee:jndi-lookup id="myCache"
    

    jndi-name="infinispan/myCache" />

    3.a 或者你可以像这样查找容器

    <jee:jndi-lookup id="myCacheContainer" jndi-name="infinispan/myCacheContainer" />

  3. 现在您可以像下面这样注入缓存

    @Resource(name="myCache") 私有缓存缓存;

    4.a 你可以像下面这样注入容器

    @Resource(name="myCacheContainer") 私有缓存容器缓存容器;

于 2021-07-10T21:47:09.083 回答