Wildfly 10 Infinispan JCache: @CacheResult вызывает "Член типа массива или типа аннотации должен быть аннотирован @NonBinding"

Я пытаюсь использовать аннотации Infinispan JCache в Wilfly 10. Моя установка Wildfly имеет расширение Wildfly-Camel ( http://wildfly-extras.github.io/wildfly-camel/).

Я хотел бы использовать кэширование на уровне метода:

@CacheResult
public Connector getConnector(String name) {
   ...
}

Соответствующие Maven зависимости моего приложения:

<dependencies>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.cache</groupId>
        <artifactId>cache-api</artifactId>
        <version>1.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-jcache</artifactId>
        <version>8.2.4.Final</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

мой beans.xml:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    version="1.2" bean-discovery-mode="annotated">
    <interceptors>
        <class>org.infinispan.jcache.annotation.InjectedCacheResultInterceptor</class>
        <class>org.infinispan.jcache.annotation.InjectedCachePutInterceptor</class>
        <class>org.infinispan.jcache.annotation.InjectedCacheRemoveEntryInterceptor</class>
        <class>org.infinispan.jcache.annotation.InjectedCacheRemoveAllInterceptor</class>
        <class>org.infinispan.jcache.annotation.CacheResultInterceptor</class>
        <class>org.infinispan.jcache.annotation.CachePutInterceptor</class>
        <class>org.infinispan.jcache.annotation.CacheRemoveEntryInterceptor</class>
        <class>org.infinispan.jcache.annotation.CacheRemoveAllInterceptor</class>
    </interceptors>
</beans>

Тем не менее, я получаю следующую ошибку при развертывании приложения:

WELD-001121: Member of array type or annotation type must be annotated @NonBinding:  [EnhancedAnnotatedMethodImpl] public abstract javax.cache.annotation.CacheResult.cachedExceptions()

Что странно, так как все методы в javax.cache.annotation.CacheResult помечены @Nobinding

Есть идеи?

Спасибо!

1 ответ

  • Вы тестировали поведение удаления bean-discovery-mode="annotated" из beans.xml?
  • Вы присвоили cacheName аннотации @CacheResult?
  • Было бы хорошо включить отладку TRACE в standalone.xml для "org.infinispan"

У меня это работает с "bean-discovery-mode = all" (если не указано в beans.xml, принимает это как значение по умолчанию) и указывает только последние четыре класса перехватчиков: org.infinispan.jcache.annotation.Cache*

Надеюсь, это поможет, держать в курсе.

Другие вопросы по тегам