Компонент внутри фрагмента никогда не активируется - PullRequest
4 голосов
/ 21 декабря 2011

Когда я создаю компонент внутри фрагмента, используя способ декларативного обслуживания OSGi, этот компонент не активируется, а мои компоненты в комплекте хостов активируются.Я что-то пропустил?Мой фрагмент имеет правильную meta-inf запись в файле для символического имени пакета хоста.

Я объявляю компонент таким образом

@Component(immediate = true)

1 Ответ

7 голосов
/ 21 декабря 2011

Поскольку фрагменты пакета никогда не запускаются, только разрешенные, декларативные компоненты служб в них никогда не активируются.В спецификации, в частности, говорится, что заголовки Service-Component (то есть то, во что преобразуется аннотация) во фрагментах игнорируются.

Вы можете заставить декларативные службы работать для фрагментов, но только путем ссылки на файл XML во фрагменте иззаголовок Service-Component в хосте.К сожалению, наличие пакета хоста о том, что находится во фрагменте, вероятно, противоположно архитектурному шаблону, который вы использовали.Я даже не уверен, что такая договоренность будет возможна с использованием аннотаций SCR.Один из вариантов - использовать план для декларативной регистрации сервисов по фрагментам, что действительно работает.На сайте http://aries.apache.org/documentation/tutorials/blueprinthelloworldtutorial.html.

-

Enterprise OSGi в действии доступно учебное пособие: www.manning.com/cummins

...