多次安装项目时,ehcache群集无法在OSGi中工作

时间:2019-06-23 21:09:30

标签: osgi aem ehcache terracotta ehcache-3

osgi / aem中的群集ehcache出现问题。仅在第一次构建/安装项目时,它才能正常工作,而在第二次构建/安装中,它会停止工作,并产生许多错误。看起来像是兵马俑连接,cachemanager或三分之一未正确关闭。

即使删除了捆绑包,它也会尝试连接到兵马俑。

ok logerrors in log

我正在将ehcache和ehcache集群安装为osgi中的独立捆绑包。还尝试将它们嵌入到我的捆绑包中。将ehcache和ehcache集群设置为依赖项,还尝试使用org.apache.servicemix.bundles.javax-cache-api(嵌入,不确定是否需要)

第一次所有ehcache和ehcache群集服务都处于活动状态,第二次满足。

Ehcache bundleehcache-clustered bundlejavax-cache-api bundlemy project bundle

pom.xml

作为独立的Java应用程序,我已经厌倦了相同的代码,并且可以正常运行(https://github.com/ehcache/ehcache3-samples/blob/master/clustered/src/main/java/org/ehcache/sample/ClusteredXML.java

所以不确定我错过了什么(依赖项,导入包..)?

ehcache configterracotta config

@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());

    }
}

1 个答案:

答案 0 :(得分:0)

还必须创建一个@Deactivate方法,在其中执行cacheManager.shutdown();

我猜如果您在非OSGi项目中两次调用代码,也会遇到相同的错误。