无法在RAP中获取ConfigurationAdmin的参考

时间:2013-08-07 12:24:13

标签: osgi jax-rs eclipse-rap

我正在尝试在我的RAP应用程序中配置osgi-jax-rs-connector

README表示要使用Configuration Admin Service进行配置。

ServiceReference caRef = context
    .getServiceReference(ConfigurationAdmin.class.getName());

上面的代码始终会为null返回ServiceReference。 获取ConfigurationAdmin引用的正确方法是什么。 是否需要在之前启动另一个捆绑包?

2 个答案:

答案 0 :(得分:1)

如果您运行Equinox,请确保已安装并启动Config Admin软件包(org.eclipse.equinox.cm)。

答案 1 :(得分:1)

尝试以这种方式获得ServiceReference正在为灾难做好准备。此代码无法处理OSGi中发生的99%的情况:配置管理员可能不存在,配置管理包在您之后启动,配置管理包在另一个启动级别,配置管理包已停止,并更新配置管理员。核心OSGi API非常强大,并且被许多中间件使用,但不应该用于应用程序代码,因为它需要对底层模型有很多了解并且非常容易出错。

最简单,最可靠的解决方案是使用声明式服务(DS)和注释:

 @Component
 public class MyClass implements MyService {
    ConfigurationAdmin ca;
    @Reference void setCA(ConfigurationAdmin ca) { this.ca = ca; }

    public void doMyService() {
       // ... you can safely use ca
    }
 }

Gunnar可能是对的,可能还没有安装配置管理服务。但是,使用您当前的代码段,您的代码会在其他时间爆炸。