3

我是 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 并通过它查找?

4

1 回答 1

5

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

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

getServiceReferences(java.util.Comparator.class.getName(),"(component.name=sample.component)");
于 2014-04-03T09:20:32.123 回答