2016-02-10 2 views
0

В Karaf версии 3.0.3 я был в состоянии получить объект ServiceReference, используя приведенный ниже кодKaraf получить объект службы/справку с расслоением контекста

ServiceReference serviceReference = 
       (ServiceReference) bundleContext.getServiceReference(CustomService.class.getName()); 

Но в Karaf 4 этот код возвращает нуль. Мой сервис запущен, я смог увидеть сервис в списке услуг.

Примечание: я пытаюсь получить услугу, которая загружается как сверток

ответ

1

Если вы уверены, что запущена ваша служба, то причина в том, что поставщик услуг и ваш клиент службы выше увидеть различные экземпляры Класс CustomService.

Возможно, у вас есть два пакета, которые экспортируют этот пакет. Или пакет встроен в поставщика или клиента. Другая причина может заключаться в том, что вы возвращаете служебную ссылку перед тем, как появится служба. Вы делаете это в Активаторе? Если да, то это плохая практика, так как вы можете столкнуться с проблемами времени. Лучше использовать ServiceTracker или DS или план.

Вы можете проверить на экспорт дубликатов, используя эту команду:

package:exports -d 
Смежные вопросы