片段内的组件从未激活

时间:2011-12-21 16:12:26

标签: java osgi osgi-fragment

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

我以这种方式声明一个组件

@Component(immediate = true)

1 个答案:

答案 0 :(得分:7)

由于bundle片段从未启动过,只有已解析,因此永远不会激活其中的声明性服务组件。该规范明确指出将忽略片段中的Service-Component头(这是注释转换为的内容)。

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

-

Enterprise OSGi in Action: www.manning.com/cummins