2008-11-21 79 views
4

我正在使用Apache Felix及其聲明性服務(SCR)來連接捆綁之間的服務依賴關係。OSGi/Felix聲明式服務:如何過濾要綁定的服務?

例如,如果我需要訪問java.util.Dictionary中,我可以說下面有SCR提供一個:

/** 
* @scr.reference name=properties interface=java.util.Dictionary 
*/ 

protected void bindProperties(Dictionary d) { 
} 

protected void unbindProperties(Dictionary d) { 
} 

現在,我有一個以上的字典服務,我想使用「name」服務屬性來過濾它們(我只想要「name = myDictionary」)。我可以用代碼(使用ServiceTracker)來做到這一點,但我寧願在@scr註釋中指定過濾器。

回答

1

在標準DS中,可以使用參考元素的目標屬性。在菲利克斯的世界裏,可以使用註釋,我不知道什麼是等價的。

目標屬性是一個LDAP過濾器,它與服務屬性相匹配。所以,你的過濾器應該是:

(name=myDictionary)

+1

我認爲target =「(name = myDictionary)」應該在@ scr.reference註釋中實現。請參閱http://felix.apache.org/site/apache-felix-maven-scr-plugin.html – 2008-12-11 00:06:45