OSGi声明服务与ManagedService配置服务?

时间:2010-10-27 20:26:54

标签: configuration osgi declarative-services

我最近偶然发现,OSGi中的声明式服务可以将组件的配置设置为必需,以便组件在激活时接收它,消除组件激活和配置之间的差距。我也意识到你可以通过modified方法接收配置更新。

在我看来,这个功能非常类似于实现ManagedService接口并将其作为您提供的“服务”之一发布的功能。

似乎我可以完全忽略ManagedService&只需使用DS配置注入。

这些技术中的一种比其他技术更受欢迎,还是存在其他我没有看到的权衡?

2 个答案:

答案 0 :(得分:13)

是的,您可以完全忽略ManagedServiceManagedServiceFactory,只使用Declarative Services组件。是的,我会推荐这种方法。

将此视为不同的抽象层次。 MS / MSF是配置管理员的低级API,即使您没有运行DS捆绑包,它也可用。这样做的好处是您可以编写可配置的服务而不依赖于DS,这可能是某些“系统级”组件所需要的。

但是,如果您愿意依赖DS,例如对于“应用程序级”组件,然后使用DS与config admin的内置集成将使您的生活更轻松。

答案 1 :(得分:0)

几个建筑的例子 declarative services 工厂:

1)通过config admincarrot-osgi-scr-factory-cm

2)通过component factorycarrot-osgi-scr-factory-ds

查看用例测试;