Wildfly 12 не работает бесконечный тайник
Я перехожу с 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>
Код поиска в одиночном ejb с аннотацией @startup:
@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' был запрошен, но не существует конфигурации кэша с этим именем, и для этого контейнера не установлен кэш по умолчанию.
Как это исправить?
3 ответа
Положил
<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
Поместите следующую запись в файл дескриптора вашего проекта (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>
Для wildfly 10 вы можете найти свой кеш infinispan или контейнер кеша следующим образом
- Вам необходимо определить свой кеш в файле 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>
После того, как вы определили кеш, вы можете искать либо кеш, либо контейнер.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
Теперь, если вы используете Spring, вы можете выполнить поиск JNDI для кеша, подобного этому
<jee:jndi-lookup id="myCache"
jndi-name="infinispan / myCache" />
3.a Или вы можете найти контейнер следующим образом
<jee: jndi-lookup id ="myCacheContainer" jndi-name ="infinispan / myCacheContainer" />
Теперь вы можете ввести кеш следующим образом
@Resource (name ="myCache") частный кеш-кеш;
4.a Вы можете ввести контейнер следующим образом
@Resource (name ="myCacheContainer") частный CacheContainer cacheContainer;