13

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

在我看来,此功能与通过实现ManagedService接口并将其作为您提供的“服务”之一发布所提供的功能非常相似。

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

是这些技术中的一种优先于另一种,还是有其他我没有看到的权衡?

4

2 回答 2

14

是的,您可以完全忽略ManagedService并且ManagedServiceFactory只使用声明式服务组件。是的,我会推荐这种方法。

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

但是,如果您乐于依赖 DS,例如“应用程序级”组件,那么使用 DS 与配置管理的内置集成将使您的生活更轻松。

于 2010-11-09T00:38:45.553 回答
0

建立 声明式服务 工厂的几个例子:

1)通过配置管理员carrot-osgi-scr-factory-cm

2)通过组件工厂carrot-osgi-scr-factory-ds

查看用例的测试;

于 2012-09-06T00:03:04.267 回答