0

Wilfly 10 内で Infinispan JCache アノテーションを使用しようとしています。私の 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

何か案は?

ありがとうございました!

4

1 に答える 1

0
  • beans.xml からbean-discovery-mode="annotated"を削除する動作をテストしましたか?
  • @CacheResultアノテーションに cacheName を割り当てましたか?
  • "org.infinispan" への standalone.xml で TRACE デバッグを有効にするとよいでしょう。

bean-discovery-mode=all」で実行し (beans.xml で指定されていない場合は、これをデフォルトとして使用します)、最後の 4 つのインターセプター クラスのみを示します: org.infinispan.jcache.annotation.Cache*

それが役立つことを願って、投稿してください。

于 2018-02-15T13:12:06.333 に答える