Компонент OSGI не активируется после активации пакета - PullRequest
0 голосов
/ 10 апреля 2019

плохо знаком с OSGI.

Я использую весеннюю загрузку в OSGI.В активаторе пакета приложение весенней загрузки запускается успешно.У меня есть класс компонента, как показано ниже

@Service // spring-boot annotation
@Component(immediate = true) // osgi annotation
public class Test {
    @Activate
    public void activate() {
        System.out.println("osgi component activated");
    }

    @Reference
    public void set(ServiceComponentXXX a) {
        System.out.println("reference got");
}

Класс Test только связывает сервисы и не привязывается никакими другими.Класс ServiceComponnetXXX из другого комплекта.методы активации и установки никогда не выполняются.

После удаления аннотации при начальной загрузке @Service код работает нормально.поэтому вопрос в том, может ли класс быть одновременно подпружиненным компонентом и компонентом OSGI?

1 Ответ

4 голосов
/ 10 апреля 2019

Нет никакого смысла в том, чтобы класс был и тем, и другим.Жизненные циклы весенних загрузочных и декларативных сервисов полностью разделены.Так что в лучшем случае у вас получится два экземпляра класса - один заполняется весенней загрузкой, а другой - декларативными службами - но гораздо вероятнее, что он просто не работает.

Я предлагаю решитьесли хочешь пойти OSGi.Если да, то просто используйте декларативные сервисы, а не загрузочные.В общем решаю за одну рамку впрыска.В OSGi у вас может быть один интегрированный фреймворк, но они должны быть совместимы с OSGi.Весенняя загрузка не совместима с OSGi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...