3 java osgi declarative-services jakarta-ee
我是 OSGi 的新手。我用谷歌搜索了大约几个小时,但找不到答案。也许我的理解是错误的。所以问题来了。假设我有一个组件。
<component name="sample.component" immediate="true">
<implementation class="sample.SampleComparator" />
<service>
<provide interface="java.util.Comparator" />
</service>
</component>
Run Code Online (Sandbox Code Playgroud)
并在代码中:
ServiceReference[] serviceReferences =
bundleContext.getServiceReferences(
java.util.Comparator.class.getName(), "(name=sample.component)");
Run Code Online (Sandbox Code Playgroud)
但我明白了null。错误在哪里?过滤器是否(name=sample.component)正确?或者我如何设置服务的 id 并通过它进行查找?
服务属性的名称是“component.name”,而不是“name”。
如果你这样做,它会起作用:
getServiceReferences(java.util.Comparator.class.getName(),"(component.name=sample.component)");
Run Code Online (Sandbox Code Playgroud)