我从wildfly 10迁移到wildfly 12.我创建了与wildfly 10中配置相同的本地缓存。
standalone-full.xml配置:
<cache-container name="DataCache" default-cache="modelcache" statistics-enabled="false">
<local-cache name="modelcache" statistics-enabled="false"/>
</cache-container>
使用@startup注释的singleton 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',但不存在缓存配置 使用该名称并且没有为此容器设置默认缓存
如何解决这个问题?
答案 0 :(得分: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>
答案 1 :(得分:1)
放入
<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
答案 2 :(得分:0)
对于 wildfly 10,您可以通过以下方式查找您的 infinispan 缓存或缓存容器
<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>
定义缓存后,您可以查找缓存或容器。 2.a 要查找缓存,您应该在项目中设置一个资源引用元素 描述符文件,即(web.xml、jboss-web.xml 等)
infinispan/myCache java:jboss/infinispan/cache/myCacheContainer/myCache2.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
现在,如果使用 spring,您可以像这样对缓存进行 JNDI 查找
<jee:jndi-lookup id="myCache"
jndi-name="infinispan/myCache" />
3.a 或者你可以这样查找容器
现在你可以像下面这样注入缓存
@Resource(name="myCache") 私有缓存缓存;
4.a 你可以像下面这样注入容器
@Resource(name="myCacheContainer") 私有缓存容器缓存容器;