Могут ли фрагменты OSGi иметь другие фрагменты в качестве хостов?
Это законно?
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 ответа
Пакеты фрагментов не могут иметь другие пакеты фрагментов в качестве хоста. Только нормальные комплекты могут действовать как фрагмент-хост. Итак, ваш третий пример верен:
Или должен
org.fragment2
вместо этого есть
Fragment-Host: org.host
Вы найдете это ограничение в Базовой спецификации OSGi Service Platform версии 4 версии 4.3 на стр. 70. В ней говорится:
Пакет Fragment не может требоваться другим пакетом с заголовком Require-Bundle.
Фрагменты прикрепить к хостам. Они не могут прикрепляться к другим фрагментам. Вы можете создать возможности и требования (новые в Core 4.3), чтобы предотвратить присоединение фрагмента к хосту, если другой фрагмент также не присоединен. Например, фрагмент 1 может предоставить возможность, которая требуется для фрагмента 2. Это может обеспечить уровень контроля, который вы ищете.