2011-08-11 44 views
2

这是合法吗?OSGi片段是否可以将其他片段作为主机?

MANIFEST.MF为org.fragment1org.host是正常包而不是一个片段):

Bundle-SymbolicName: org.fragment1 
Fragment-Host: org.host 

MANIFEST.MF为org.fragment2

Bundle-SymbolicName: org.fragment2 
Fragment-Host: org.fragment1 

还是应该org.fragment2代替具有

Fragment-Host: org.host 

回答

5

碎片捆绑不能将其他碎片捆绑包作为主机。只有普通的bundle才能作为片段主机。 所以,你的第三个例子是正确的:

还是应该org.fragment2而不是有

Fragment-Host: org.host

您找到第70页上的OSGi Service Platform Release 4 Version 4.3 Core Specification这个限制它说:

带有Require-Bundle头的另一个bundle不需要分片bundle。

+0

谢谢!你有一个引用证实这一点?我遇到了一个项目中的第一个例子,并想将其报告为一个错误。 OSGi规范第3.14段似乎没有说任何关于它的... –

+0

@Alexey Romanov:我编辑了我的答案! – Tim

+0

但是这里没有'Require-Bundle'标头,只有'Fragment-Host'。 –

2

碎片附着在主机上。他们不能附加到其他片段。您可以构建功能和需求(Core 4.3中的新功能),以防止将某个片段附加到主机,除非还附加了另一个片段。例如,片段1可以提供片段2所需的能力。这可能会提供您所寻求的控制级别。

相关问题