4

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

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

@Component(immediate = true)
4

1 回答 1

7

因为捆绑片段永远不会启动,只有解析,其中的声明性服务组件永远不会被激活。该规范明确指出片段中的服务组件标头(这是注释转换为的内容)被忽略。

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

--

企业 OSGi 实战:www.manning.com/cummins

于 2011-12-21T18:03:19.843 回答