3

スタンドアロン構成 (jdk 1.7) の wildfly 8.0.0.Final にデプロイされたアプリケーションから infinispan (6.0) を使用しようとしていますが、インジェクションに問題があります。この投稿から始めて Google で検索すると、次のような状況が発生しました。

standalone.xml 内

        <subsystem xmlns="urn:jboss:domain:infinispan:2.0">
            ...
            <cache-container name="my-cache" default-cache="my-cache-default">
                <local-cache name="my-cache-default">
                </local-cache>
            </cache-container>
        </subsystem>

public class CacheManager {

    @Resource(lookup="java:jboss/infinispan/container/my-cache")
    private EmbeddedCacheManager myCacheManager;

    public Cache<String, String> getCache() {
        return myCacheManager.getCache();
    }
}

最後に pom.xml で

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-ejb-plugin</artifactId>
            <version>${version.ejb.plugin}</version>
            <configuration>
                ...
                <archive>
                    <manifestEntries>
                        <Dependencies>org.infinispan.commons export</Dependencies>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

それは私のMANIFEST.MFで生成されます

Dependencies: org.infinispan.commons export

getCache() メソッドを使用すると、myCacheManager 属性が null であるため、java.lang.NullPointerException が発生します。管理コンソールの JNDI Bindings タブを見ると、データソースのように私が定義した他の多くのリソースがある一方で、「java:jboss/infinispan/container/my-cache」に対応するリソースがないことに気付きました (デフォルトのパス)。また、キャッシュ コンテナー定義で jndi 名を指定しようとしましたが、同じ結果になりました。

どこが間違っていますか?前もって感謝します

4

1 に答える 1

1

使用する

@Resource(lookup="java:jboss/infinispan/container/my-cache") private CacheContainer container;

下の代わりに

@Resource(lookup="java:jboss/infinispan/container/my-cache") private EmbeddedCacheManager myCacheManager;

これにより、キャッシュコンテナーが提供され、META-INF に依存関係 org.infinispan エクスポートも追加されます

于 2015-11-04T07:28:11.823 に答える