OSGi - 按名称获取ds服务(id)

时间:2014-04-03 09:11:45

标签: java java-ee osgi declarative-services

我是OSGi的新手。我用谷歌搜索了几个小时,但无法找到答案。也许我的理解是错误的。所以问题。让我们假设我有一个组件。

<component name="sample.component" immediate="true">
  <implementation class="sample.SampleComparator" />
  <service>
    <provide interface="java.util.Comparator" />
  </service>
</component>

并在代码中:

ServiceReference[] serviceReferences = 
    bundleContext.getServiceReferences(
        java.util.Comparator.class.getName(), "(name=sample.component)");

但我得null。哪里出错了?过滤器(name=sample.component)是否合适?或者我如何设置服务的ID并通过它查找?

1 个答案:

答案 0 :(得分:4)

服务属性的名称是“component.name”,而不是“name”。

如果你这样做,它将起作用:

getServiceReferences(java.util.Comparator.class.getName(),"(component.name=sample.component)");