Более одного разработчика интерфейса. Как с OSGi? - PullRequest
3 голосов
/ 23 апреля 2009

Я заинтересован в использовании OSGI в качестве средства управления плагинами для проекта. То есть может быть много разработчиков моего интерфейса, каждый из которых появляется в своем собственном / отдельном пакете OSGI с экспортированным классом реализации ...

Ответы [ 2 ]

1 голос
/ 23 апреля 2009

Это можно сделать декларативно (например, VonC) подробно или динамически во время выполнения через стандартный реестр служб.

Любой разработчик может просто зарегистрировать свои реализации в качестве службы, а потребители могут получить их из реестра, что является довольно простым материалом для OSGi. Службы также могут быть зарегистрированы со свойствами, поэтому потребители могут использовать эти свойства, чтобы различать реализации при поиске службы.

1 голос
/ 23 апреля 2009

Декларативная служба должна быть дорогой.

Вы можете объявить свой интерфейс как сервис

<service>
    <provide interface="my.Interface"/>
    <property name="foo" value="bar"
</service>

Каждая реализация этого интерфейса может определять методы активации и деактивации Bundle.
Но что действительно приятно, так это их природа: если вы используете последнюю версию SCR («Среда выполнения компонента службы», которая представляет собой «пакет расширения», реализующий новую и улучшенную OSGi R4.2 DS - декларативную службу - спецификацию), ваши классы будут ничего не импортировать из модели OSGI. Они остаются чистыми POJO.

Затем определите другой сервис, который зависит от вашего первого сервиса:

<reference name="myInterfaceServiceName"
    interface="my.Interface"
    bind="myActivationMethod" unbind="myDeactivationMethod"
    cardinality="0..n"/>

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

Подробнее см. Вопрос Расширения и декларативные службы Eclipse .

Презентация: Компонентно-ориентированная разработка в OSGi с декларативными сервисами, Spring Dynamic Modules и Apache iPOJO , из EclipseCON2009, предоставит вам конкретный пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...