2017-04-24 44 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服務的方法。一個更簡單,另一個更強大。

相關問題