从OSGi片段包访问服务

时间:2013-12-04 05:51:48

标签: osgi embedded-jetty osgi-bundle osgi-fragment

在我的项目中,有一个OSGi包,它将一个接口com.xyx.EventProvider公开为一个可用的服务。

还有另一个第三方软件包org.eclipse.equinox.http.jetty,我已经附加了一个片段包com.xyz.jetty.customizer

此片段包需要访问通过接口com.xyx.EventProvider公开的服务。

问题是片段包没有Activators,所以它没有引用BundleContext,因此无法访问任何服务。

OSGi有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

我总是讨厌建议使用FrameworkUtil.getBundle().getBundleContext()因为它是如此的黑客,但在这种情况下它似乎是唯一的解决方案。

您需要传入一个由主机包定义的类,因为片段不能有BundleContext(即getBundleContext调用将返回null)。