2008-11-21 127 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