Доступ к сервисам из 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
вызов вернул бы ноль).