Межплагиновая связь в Eclipse - PullRequest
4 голосов
/ 17 октября 2008

Можно ли создавать плагины Eclipse, которые автоматически обнаруживают друг друга?

Я разрабатываю набор плагинов, которые должны работать в двух основных ситуациях:

  • индивидуально
  • согласованно друг с другом.

При запуске по отдельности плагины должны «просто работать», но при согласовании они будут обмениваться содержимым той же модели, и один из плагинов должен предоставить пользователю список других плагинов для обмена контентом. например:

Плагин Foo обнаружил следующее плагины, с которыми он может делиться онтологиями:

[] Барный плагин

[] Плагин Baz

[] Не делись

Предлагает ли Eclipse какие-либо внутренние методы публикации / обнаружения, которые бы облегчали этот вид автоматического обнаружения других плагинов?

Ответы [ 2 ]

1 голос
/ 17 октября 2008

Ответ должен быть через Декларативный сервис , который сочетает в себе преимущества как расширений eclipse xml, так и сервисов osgi POJO. Что-то, что неявно динамично, как сервисы osgi, но загружается «по требованию», как расширения eclipse.

Представленный в 2006 году для eclipse3.3, вы найдете эти концепции, иллюстрированные в этой презентации .

Декларативные сервисы дают возможность определить ссылку на другие сервисы. Также можно указать количество элементов ссылки. Мощность указывается с использованием двух чисел, первое из которых 0 или 1 указывает на необязательность, второе - 1 или n - указывает кратность.

На практике эти DS (декларативные службы) не просты в использовании, так как вам необходим доступ к BundleContext, что означает отслеживание BundleActivator, , что не всегда просто ...

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


Чтобы опубликовать то, что нашел rcreswick относительно DS:

0 голосов
/ 17 октября 2008

Что ж, реестр сервисов OSGI может выполнять совместное использование сервисов на основе pojo во время выполнения, а не сами плагины. Для этого есть несколько вариантов, например, кодирование непосредственно в API OSGI, декларативные службы, Spring DM и iPojo (я уверен, что есть и другие).

Возможно, вы захотите проверить шаблон доски для создания динамического решения в стиле Observer / Observable.

...