0

osgi/aem でクラスター化された ehcache に問題があります。最初のプロジェクトのビルド/インストールでのみ正常に動作しますが、2 番目のビルド/インストールでは動作しなくなり、多くのエラーが生成されます。テラコッタ接続、キャッシュマネージャー、または 3 番目の何かが適切に閉じられていないようです。

バンドルを削除した後でも、terracotta に接続しようとします。

OK ログ、ログのエラー

osgi のスタンドアロン バンドルとして ehcache と ehcache-clustered をインストールしています。また、それらを私のバンドルに埋め込んでみました。Ehcache と ehcache-clustered は依存関係として設定されており、org.apache.servicemix.bundles.javax-cache-api でも試してみました (埋め込み、必要かどうかはわかりません)。

1 回目はすべての ehcache および ehcache クラスター化されたサービスがアクティブになり、2 回目は満足されます。

Ehcache バンドルehcache-clustered バンドルjavax-cache-api バンドル私のプロジェクト バンドル

pom.xml

スタンドアロンのJavaアプリとして疲れた同じコードで、完全に正常に動作します( https://github.com/ehcache/ehcache3-samples/blob/master/clustered/src/main/java/org/ehcache/sample/ClusteredXML.java )

それで、私が見逃したものがわからない(依存関係、パッケージのインポート..)?

ehcache構成テラコッタ構成

@Activate
private void activate() {
    LOGGER.info("Creating clustered cache manager from XML");

    URL myUrl = ClusteredService.class.getResource("/com/myco/services/ehcache-clustered-local2.xml");
    Configuration xmlConfig = new XmlConfiguration(myUrl);

    try (CacheManager cacheManager = CacheManagerBuilder.newCacheManager(xmlConfig) ) {
        cacheManager.init();

        org.ehcache.Cache<String, String> basicCache = cacheManager.getCache("basicCache4", String.class, String.class);

        LOGGER.info("1. Putting to cache");
        basicCache.put("1","abc");

        LOGGER.info("1. Getting from cache");
        String value = basicCache.get("1");
        LOGGER.info("1. Retrieved '{}'", value);

        LOGGER.info("cache manager status2, " + cacheManager.getStatus().toString());

    }
}
4

1 に答える 1