2013-04-01 1 views
0

У меня есть одно сомнение в понимании термина компонента и службы в OSGI. Я использую apache felix framework. Я прочитал в этой ссылке http://wiki.osgi.org/wiki/Declarative_Services#Providing_Services, что компоненты предоставляют услугу. Но я не понял, когда компонент предоставляет услугу, а не интерфейс. На мой взгляд, интерфейс - это сервис, который реализуется компонентом.Компонент предоставляет услугу

Еще одно сомнение заключается в том, что если другой пакет хочет использовать сервис другого пула, чем то, как это делается? Он использует интерфейс (услугу) или компонент (класс реализации).

Пожалуйста, очистите мои сомнения, чтобы я мог лучше почувствовать два термина сервиса и компонент, и там отношения с обозначением scr.

ответ

0

Вы правы, что имена вещей несколько неясны порой, есть также некоторые незначительные различия в наименовании между Феликс и Равноденствие.

В декларативных Услуги:

служба в OSGi является объектом зарегистрирован в реестре сервиса. Это может быть компонент, но это может быть любой объект, который вам нравится.

A Компонент - это конкретный экземпляр объекта, управляемый контейнером декларативных услуг. Вам необходимо предоставить класс реализации, который контейнер может использовать для создания экземпляра класса.

Иногда это все, что вам нужно: если все его ссылки присутствуют, этот объект будет создан, и при необходимости будут вызываться методы активации/деактивации.

Если вы хотите зарегистрировать его в качестве службы OSGi, так что другие компоненты могут использовать его, вам нужно:

  1. Реализовать интерфейс сервиса, который вы хотите поставить
  2. Укажите, что вы хотите зарегистрировать его в качестве службы с этим интерфейсом

Если вы действительно хотите, чтобы вам может зарегистрировать класс реализации в качестве предоставляемых услуг, но с помощью интерфейса, лучше разделение.

Чтобы использовать другую услугу в компоненте, вам необходимо обратиться к ней. В вики OSGi вы упоминаете, что этот раздел, кажется, отсутствует. Это blog объясняет это довольно хорошо.

привет, Фрэнк

Смежные вопросы