2

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

还有另一个 3rd 方包org.eclipse.equinox.http.jetty,我附上了一个片段包com.xyz.jetty.customizer

这个片段包需要访问通过接口暴露的服务com.xyx.EventProvider

问题是片段包没有激活器,因此它没有对 BundleContext 的引用,因此它无法访问任何服务。

OSGi 中有没有办法实现这一点?

4

1 回答 1

1

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

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

于 2013-12-04T07:28:18.590 回答