Могут ли фрагменты OSGi иметь другие фрагменты в качестве хостов? - PullRequest
3 голосов
/ 11 августа 2011

Это законно?

MANIFEST.MF для org.fragment1 (org.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

?

Ответы [ 2 ]

6 голосов
/ 11 августа 2011

Пакеты фрагментов не могут иметь другие пакеты фрагментов в качестве хоста.Только нормальные комплекты могут действовать как фрагмент-хост.Итак, ваш третий пример верен:

Или org.fragment2 вместо этого должен иметь

Fragment-Host: org.host

Это ограничение вы найдете в OSGi Service Platform, выпуск 4, версия 4.3 Базовая спецификация на стр. 70. В нем говорится:

Пакет фрагментов не может требоваться другим пакетом с заголовком Require-Bundle.

3 голосов
/ 11 августа 2011

Фрагменты прикреплены к хостам.Они не могут прикрепляться к другим фрагментам.Вы можете создать возможности и требования (новые в Core 4.3), чтобы предотвратить присоединение фрагмента к хосту, если другой фрагмент также не присоединен.Например, фрагмент 1 может предоставить возможность, которая требуется для фрагмента 2.Это может обеспечить уровень контроля, который вы ищете.

...