2013-04-01 83 views
0

我在理解OSGI中的組件和服務這個詞時有一個疑問。我使用的是Apache felix框架。我已閱讀此鏈接http://wiki.osgi.org/wiki/Declarative_Services#Providing_Services組件提供的服務。但是,當組件提供的服務比接口的功能還差時,我不明白這一點。在我看來,接口是一個由組件實現的服務。組件提供服務

還有一個疑問是,如果另一個捆綁包想要使用另一個捆綁包的服務而不是如何完成它?它使用接口(服務)或組件(實現類)。

請清除我的疑惑,以便我可以更好地感受兩項服務和組件以及與scr符號的關係。

回答

0

你說得對,事情的名字有時不清楚,Felix和Equinox之間的命名也有一些細微的差別。

在聲明式服務:在OSGi的

一個服務是註冊到服務註冊表中的對象。它可以是一個組件,但它可以是任何你喜歡的對象。

A 組件是由聲明性服務容器管理的對象的具體實例。你需要提供一個實現類,容器可以用來實例化類。

有時候這就是你所需要的:如果所有的引用都存在,這個對象將被實例化,並且激活/去激活方法將在適用時被調用。

如果你也想將其註冊爲OSGi服務,因此其它部件可以使用它,你需要:

  1. 實現你要提供
  2. 服務的接口指示要其註冊爲與該接口

服務。如果你真的想你可以註冊實現類爲提供的服務,但使用的接口是更好的分離。

要在組件中使用其他服務,您需要引用它。在你提到的OSGi wiki上,該部分似乎缺失。這blog解釋得很好。

問候,弗蘭克