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