Доступ к сервисам из OSGi фрагментов

В моем проекте есть пакет OSGi, который предоставляет интерфейс com.xyx.EventProvider в качестве отвратительной услуги.

Существует еще один сторонний комплект org.eclipse.equinox.http.jetty, к которому я прикрепил фрагмент комплекта com.xyz.jetty.customizer,

Этот фрагментный пакет должен получить доступ к сервису, предоставляемому через интерфейс com.xyx.EventProvider,

Проблема заключается в том, что в комплектах фрагментов нет Активаторов, поэтому он не имеет ссылки на BundleContext и поэтому не может получить доступ к какой-либо службе.

Есть ли способ в OSGi добиться этого?

1 ответ

Решение

Я всегда ненавижу предлагать использовать FrameworkUtil.getBundle().getBundleContext() потому что это такой взлом, но в этом случае кажется, что это единственное решение.

Вам нужно будет передать класс, определенный хост-пакетом, потому что фрагменты не могут иметь BundleContext (т. Е. getBundleContext вызов вернул бы ноль).

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