Вопрос

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

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

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

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

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

[ ] Плагин бара

[ ] Плагин Баз

[ ] Не делиться

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

Это было полезно?

Решение

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

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

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

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

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


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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top