OSGi ConfigurationAdmin服务

J W*_*uck 0 osgi blueprint-osgi

似乎有两种方法可以从OSGi服务注册表获取配置管理服务.一个通过实例化BundleContext,然后从中获取ServiceReference,然后从中获取ConfigurationAdmin:

BundleContext bc = FrameworkUtil.getBundle(ManagedService.class).getBundleContext();
ServiceReference ca = bc.getServiceReference(ConfigurationAdmin.class);
ConfigurationAdmin configAdmin = (ConfigurationAdmin) context.getService(ca);
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用Blueprint并简单地创建对ConfigurationAdmin的引用,如下所示,然后在bean中引用它:

<reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" />
Run Code Online (Sandbox Code Playgroud)

这两种方法是否相同?或者前者的方法是否提供后者没有的任何东西?是否有任何Blueprint参考文档描述了它实例化ConfigurationAdmin(似乎找不到任何东西)的作用?

BJ *_*ave 5

这些不是"实例化"Configuration Admin服务.它们是从OSGi服务注册表获取Configuration Admin服务的服务对象的方法.两种方式都将返回相同的服务对象.第一种方法使用低级OSGi API与OSGi服务注册表进行交互.第二种方式使用蓝图.

关于Blueprint,我建议在OSGi中使用Declarative Services来进行依赖注入.

  • @JWoodchuck不,这不容易.这更容易. (2认同)