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)");
Другие вопросы по тегам