Получение предварительно настроенного кеша из контейнера кеша, настроенного в подсистеме infinispan wildfly

Я очень смущен подсистемой infinispan в Wildfly, и я не могу получить предварительно настроенный кеш из существующего контейнера кеша. Чтобы визуализировать проблему, я создал минимальный образец проекта, опубликованный на Github: infinispan-wildfly-test

При настройке теста создается контейнер кеша (TEST) с двумя кешами (x, y), устанавливая x по умолчанию. Когда я получаю EmbeddedCacheManager через поиск ресурсов, я получаю ожидаемый контейнер:

@Resource(lookup = "java:jboss/infinispan/container/TEST")
private EmbeddedCacheManager cacheManager;

Но затем, пытаясь получить кэш (x или y), я всегда получаю только что созданный, конфигурация которого не соответствует той, которую я создал с помощью CLI, кеш полностью не настроен!

Дело в том, что я могу быть уверен, что EmbeddedCacheManager является правильным контейнером, поскольку он предоставляет мне Cache x как по умолчанию (но ненастроенный), но чего мне здесь не хватает? Как получить предварительно настроенные кеши контейнера кеша?

Все имеющиеся образцы не решают эту проблему, и я не уверен, знают ли эти люди о том, что вместо этого они получают ненастроенный кеш. Примеры всегда показывают только поиск ресурсов контейнера и получение экземпляра кэша по умолчанию. Нет проверки конфигурации ...

Так есть ли кто-нибудь (возможно, участник infinispan), который знает ответ? Заранее спасибо и большое спасибо;)


person shillner    schedule 20.05.2016    source источник


Ответы (1)


Внедрили ваши кеши напрямую.

@Resource(lookup = "java:jboss/infinispan/cache/TEST/x")
private Cache<?, ?> cacheX;
@Resource(lookup = "java:jboss/infinispan/cache/TEST/y")
private Cache<?, ?> cacheY;
person Paul Ferraro    schedule 20.05.2016
comment
Но есть ли способ программно получить кеш из внедренного CM? - person Radim Vansa; 23.05.2016
comment
Привет, я пробовал это раньше и не смог получить кеши с помощью программного поиска через контекст. Внедрение кешей не является вариантом, поскольку в точке, где мне нужны кеши, имена известны только во время выполнения, что исключает подход статического поиска ресурсов. - person shillner; 23.05.2016
comment
Я пробовал ваш подход, и он работает, как ожидалось, но показывает немного странное поведение: когда я использую InitialContext.lookup (java: jboss / infinispan / cache / TEST / x), имя не найдено! Но когда я добавляю инъекцию ресурса в свой сервлет, как вы сказали, я также могу использовать поиск контекста для этого кеша. Так есть ли программный подход к концепции поиска ресурсов? - person shillner; 24.05.2016
comment
Приносим извинения за поздний ответ - вам нужно будет установить ссылку на ресурс в дескрипторе развертывания. Это гарантирует, что целевая служба доступна для стандартного поиска JNDI. - person Paul Ferraro; 24.05.2017