2011-08-11 76 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所需的能力。這可能會提供您所尋求的控制級別。

相關問題