2012-04-16 81 views
1

我有一個系統聲明服務「舊的方式」,使用激活方法。OSGi聲明性服務引用非聲明性服務

現在我正在使用聲明式服務編寫一個新的包。 是否可以在我的新包中引用未使用聲明性服務技術發佈的服務?

+1

你試過了嗎?我不明白爲什麼這應該是一個問題。 – 2012-04-16 08:34:07

+0

是的,我嘗試過。我看到了Service Registry中的服務,但是我沒有接到任何對綁定/解除綁定方法的調用。當我實施催化劑時,我立即工作。我現在沒有時間深入挖掘,但我想這只是一個愚蠢的錯誤。現在我至少知道它應該工作。 – 2012-04-18 07:16:13

+0

您能否提供您的聲明式服務描述符?它可能在引用定義中包含錯誤。 – 2012-04-18 16:53:59

回答

3

沒有「老辦法」將您的服務發佈到OSGi Service Registry中。 BundleContext.registerService()只有一種方法。你可以從你的activator手動執行,或者Declarative Services/Blueprint引擎可以爲你做。

在您的DS描述符中,您只需定義對Service Registry中可用服務的引用。

3

是的,這是可能的。從DS組件引用服務時,您無需擔心該服務的內部實現。

其他服務可能是是另一個DS組件,或者它可能是一個Spring-DM組件,或者它可能會在顯式調用OSGi API的情況下發布。你不在乎。這只是一項服務。

相關問題