Wildfly 11 - бесконечный локальный кеш не регистрируется - PullRequest
0 голосов
/ 08 июня 2018

Я использую локальный кеш в wildfly 11. При доступе к кешу я получаю ошибку ниже>

javax.naming.NameNotFoundException: infinispan / container / SearchContainer [Исключением корня является java.lang.IllegalStateException] в org.jboss.as.naming.ServiceBasedNamingStore.lookup (ServiceBasedNamingStore.java:153) в org.jboss.as.naming.ServiceBasedNamingStore.lookup (ServiceBasedNamingStore.java:83) в org.jboss.as.naming.Nte.поиск (NamingContext.java:207) в org.jboss.as.naming.NamingContext.lookup (NamingContext.java:184) в org.jboss.as.naming.InitialContext $ DefaultInitialContext.lookup (InitialContext.java:239) в org..jboss.as.naming.NamingContext.lookup (NamingContext.java:193) в org.jboss.as.naming.NamingContext.lookup (NamingContext.java:189) Причины: java.lang.IllegalStateException в org.jboss.msc.value.InjectedValue.getValue (InjectedValue.java:47) в org.jboss.as.naming.service.BinderService.getValue (BinderService.java:142) в org.jboss.as.naming.service.BinderService.getValue (BinderService.java:46) в org.jboss.msc.service.ServiceControllerImpl.getValue (ServiceControllerImpl.java:1158) в org.jboss.as.naming.ServiceBasedNamingStore.lookup (ServiceBavaNtore): 31.SN: 1174 *

автономная конфигурация следующим образом:

<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>

В управляемом бине я пробовал два способа, оба не работают в wildfly 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 ;

Как использовать кэш в wildfly 11?

Спасибо.

1 Ответ

0 голосов
/ 11 июня 2018

В WF11 службы конфигурирования кэша устанавливаются по требованию, поэтому использование ссылки на ресурс (например, @Resource, resource-ref, resource-env-ref) для менеджера кэша недостаточно для обеспечения установки его конфигураций кэша.Вам нужно либо добавить дополнительный @ Resource / resource-ref / resource-env-ref для конфигурации кэша, либо (что еще лучше) просто выполнить поиск в кэше напрямую, используя resource-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;
...