我是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并通过它查找?
答案 0 :(得分:4)
服务属性的名称是“component.name”,而不是“name”。
如果你这样做,它将起作用:
getServiceReferences(java.util.Comparator.class.getName(),"(component.name=sample.component)");