我在通配符11中使用本地缓存。在访问缓存时,我得到错误>
org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:153) /javax.naming.NameNotFoundException/javax.naming.NameNotFoundException/SearchContainer例外是java.lang.IllegalStateException,在org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:83),在org.jboss.as.naming.NamingContext.lookup(NamingContext.java:207),在org.jboss.as.naming.NamingContext.lookup(NamingContext.java:184),在org.jboss.as.naming。InitialContext$DefaultInitialContext.lookup(InitialContext.java:239) at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:193) at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:189) at : java.lang.IllegalStateException at org.jboss.msc.value.InjectedValue.getValue(InjectedValue.java:47) at org.jboss.as.naming.service.BinderService.getValue(BinderService.java:142) at org.jboss.as.naming.service.BinderService.getValue(BinderService.java:46) at org.jboss.msc.service.ServiceControllerImpl.getValue(ServiceControllerImpl.java:1158) at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:131) . 174
独立配置如下,
<cache-container name="SearchContainer" default-cache="TwoColumnSearchCache" jndi-name="java:jboss/infinispan/container/SearchContainer">
<local-cache name="TwoColumnSearchCache">
<eviction strategy="LRU" max-entries="-1"/>
<expiration lifespan="60000" max-idle="60000"/>
</local-cache>
</cache-container>在托管bean中,我尝试了两种方法,这两种方法都不能在通配符11中工作,但是在wildfly 10中,它在相同的代码中工作得很好。
方法1:
CacheContainer searchContainer = (CacheContainer) new InitialContext().lookup("java:jboss/infinispan/container/SearchContainer");
Cache<String, List<Map<String, String>>> twoColumnSearchCache = searchContainer.getCache("TwoColumnSearchCache");方法2:
@Resource(lookup="java:jboss/infinispan/container/SearchContainer/TwoColumnSearchCache")
Cache<String, List<Map<String, String>>> twoColumnSearchCache ;如何在通配符11中使用缓存?
谢谢。
发布于 2018-06-11 16:48:07
在WF11中,缓存配置服务是按需安装的,因此使用缓存管理器的资源引用(例如@Resource、resource、resource)不足以确保其缓存配置被安装。您需要为缓存配置添加一个额外的@resource/resource ref/resource ref,或者(更好的)直接使用缓存本身的资源-env-ref来查找缓存。例如:
部署描述符:
<resource-env-ref>
<resource-env-ref-name>TwoColumnSearchCache</resource-env-ref-name>
<resource-env-ref-type>org.infinispan.Cache</resource-env-ref-type>
<lookup-name>java:jboss/infinispan/cache/SearchContainer/TwoColumnSearchCache</lookup-name>
</resource-env-ref>然后通过以下方式引用缓存:
@Resource(name="TwoColumnSearchCache")
Cache<String, List<Map<String, String>>> cache;https://stackoverflow.com/questions/50753848
复制相似问题