Могут ли фрагменты 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. Это может обеспечить уровень контроля, который вы ищете.

Другие вопросы по тегам