片段内的组件从未激活

当我使用OSGi声明式服务方式在片段内创建组件时,此组件未被激活,但主机包中的组件被激活。 我错过了什么吗? 我的片段具有适用于主机包符号名称的meta-inf文件条目。

我以这种方式宣布一个组件

 @Component(immediate = true) 

由于bundle片段永远不会启动,因此只会解析它们中的声明性服务组件。 该规范明确指出将忽略片段中的Service-Component标头(这是注释转换为的标头)。

您可以使声明性服务适用于片段,但只能通过从主机中的Service-Component标头引用片段中的XML文件。 让主机包知道片段中的内容可能与您所追求的架构模式相反,遗憾的是。 我甚至不确定使用SCR注释是否可以进行这样的安排。 一种选择是使用蓝图以声明方式从片段注册服务,这确实有效。 有一个蓝图教程可以在http://aries.apache.org/documentation/tutorials/blueprinthelloworldtutorial.html上找到 。

企业OSGi在行动:www.manning.com/cummins