在我的项目中,有一个OSGi包,它将一个接口com.xyx.EventProvider
公开为一个可用的服务。
还有另一个第三方软件包org.eclipse.equinox.http.jetty
,我已经附加了一个片段包com.xyz.jetty.customizer
。
此片段包需要访问通过接口com.xyx.EventProvider
公开的服务。
问题是片段包没有Activators,所以它没有引用BundleContext,因此无法访问任何服务。
OSGi有没有办法实现这个目标?
答案 0 :(得分:1)
我总是讨厌建议使用FrameworkUtil.getBundle().getBundleContext()
因为它是如此的黑客,但在这种情况下它似乎是唯一的解决方案。
您需要传入一个由主机包定义的类,因为片段不能有BundleContext(即getBundleContext
调用将返回null)。