【问题标题】:OSGi/Felix Declarative Services: How to filter the services to be bound?OSGi/Felix 声明式服务:如何过滤要绑定的服务?
【发布时间】:2010-09-23 10:55:54
【问题描述】:

我正在使用 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 注释中指定过滤器。

【问题讨论】:

    标签: dependency-injection annotations osgi apache-felix


    【解决方案1】:

    我认为

    target="(name=myDictionary)"
    

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

    【讨论】:

      【解决方案2】:

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

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

      (name=myDictionary)

      【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 2021-07-14
      • 2012-04-27
      • 1970-01-01
      • 2018-05-18
      • 2018-05-20
      • 2019-08-05
      • 2014-02-05
      相关资源
      最近更新 更多