4

我正在使用 Apache Felix 及其声明式服务 (SCR) 来连接包之间的服务依赖关系。

例如,如果我需要访问 java.util.Dictionary 我可以说以下内容让 SCR 提供:

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

protected void bindProperties(Dictionary d) {
}

protected void unbindProperties(Dictionary d) {
}

现在,我有多个可用的 Dictionary 服务,我想使用“name”服务属性(我只想要“name=myDictionary”)过滤它们。我可以使用代码(使用 ServiceTracker)来做到这一点,但我宁愿在 @scr 注释中指定过滤器。

4

2 回答 2

4

我认为

target="(name=myDictionary)"

应该在@scr.reference注释中解决问题。见http://felix.apache.org/site/apache-felix-maven-scr-plugin.html

于 2008-12-15T10:41:22.607 回答
1

在标准 DS 中,您可以使用引用元素的目标属性。在可以使用注解的Felix世界中,我不知道什么是等价的。

目标属性是一个 LDAP 过滤器,它与服务属性匹配。所以,你的过滤器应该是:

(name=myDictionary)

于 2008-11-26T23:03:50.883 回答