如何让Apache Curator在OSGi包中工作?

时间:2016-11-29 17:41:26

标签: java osgi apache-curator

我是Zookeeper和策展人的新手 尝试使用Curator连接到Zookeeper并进行读写。 从独立的Java应用程序执行时,此代码可以正常工作,但是当嵌入到OSGi包中时,它无法连接到Zookeeper服务器。

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;

CuratorFramework curator = CuratorFrameworkFactory.newClient(
    someConnectionString, retryPolicy);
curator.start();
try {
    // returns false from OSGi, but true from standalone application
    curator.getZookeeperClient().blockUntilConnectedOrTimedOut();
}
catch (InterruptedException e) { ... }

对于OSGi包,我在包中的lib文件夹中包含curator-framework-2.9.0.jar,curator-client-2.9.0.jar和其他依赖项。 我没有收到任何运行时错误,所以似乎都处理了所有依赖项。

尝试搜索Curator库是否支持OSGi框架,我确实在2013年看到了这个问题并标记为已解决。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

原来是一个缺少进口的简单案例。但是,ClassNotFoundExceptions没有进入控制台,而是进入log4j。添加以下内容以初始化log4j会显示缺少的导入,如org.ietf.jgss

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

BasicConfigurator.configure();
Logger.getRootLogger().setLevel(org.apache.log4j.Level.ALL);