OSGI: Как узнать, какие пакеты подписаны на определенное свойство, определенное в моем справочном словаре службы?

Когда я регистрирую ServiceReference, я определяю темы событий OSGi, которые я публикую в классе Dictionary, как говорится в определении контекстного метода:

registerService(Класс, служба, Словарь)

Определение моего словаря: Dictionary.put(EventConstants.EVENT_TOPIC, темы);

Темы представляют собой массив строк с несколькими строками, которые очень четко определяют каждый возможный тип события, которое я публикую, например:

Строка [] темы = новая строка [] { "ОДИН", "ДВА" };

Я хотел бы знать, какие пакеты подписаны на определенное свойство, определенное в темах Словаря. Я имею в виду, какими связками будут обрабатываться публикации "ДВУХ".

Спасибо.


person user2256799    schedule 06.04.2017    source источник


Ответы (1)


Чтобы получать события, пакет регистрирует службу EventHandler с темами в качестве свойства event.topics. Таким образом, чтобы найти пакеты, которые прослушивают определенные темы, вы ищете все службы типа EventHandler и проверяете их свойство службы event.topics.

person Christian Schneider    schedule 06.04.2017
comment
Я получаю ссылку на службу для обработчика событий ServiceReference sr = context.getServiceReference(EventHandler.class.getName()); а затем пакет с sr.getUsingBundles (), верно? - person user2256799; 06.04.2017