2017-04-24 46 views

回答

2

中看到getServiceReference方法ComponentContext由声明性服务规范定义,并且支持与DS组件一起使用。它并不旨在提供Bundle上下文的所有功能。

如果您需要BundleContext,您可以简单地从ComponentContext获取它,甚至将它作为参数注入到@Activate方法中。

+0

Hi..ComponentContext可以使用global.jsp而BundleContext不是?? –

+1

我猜global.jsp是CQ特有的东西,所以我不知道它的细节。如果你可以获得CompoentContext,那么你总是可以从中检索BundleContext。 –

+0

非常感谢您的回复。它解决了我的问题 –

0

registerService()和@Service注释都允许您创建OSGi服务。区别在于BundleContext.registerService()使用普通的OSGi API,而@Service注释依赖于OSGi声明式服务。

当您使用声明式服务时,服务的整个生命周期都会为您管理,如果您手动注册服务,则需要自己执行此操作。

最后,这两种机制都为您提供了创建OSGi服务的方法。一个更简单,另一个更强大。

相关问题