OSGi - получить сервис ds по имени (id)
Я новичок в 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)
право? Или как я могу установить идентификатор сервиса и поиск по нему?
1 ответ
Решение
Имя свойства службы: "component.name", а не "name".
Если вы сделаете это, это будет работать:
getServiceReferences(java.util.Comparator.class.getName(),"(component.name=sample.component)");