片段内的组件从未激活

Que*_*ing 4 java osgi osgi-fragment

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

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

@Component(immediate = true)
Run Code Online (Sandbox Code Playgroud)

Hol*_*ins 7

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

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

-

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