Связь между плагинами в Eclipse

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

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

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

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

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

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

[] Плагин Baz

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

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


person rcreswick    schedule 17.10.2008    source источник


Ответы (2)


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

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

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

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

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


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

person VonC    schedule 17.10.2008
comment
Спасибо за информацию. Я прорабатываю ссылки и пытаюсь усвоить много новой терминологии, но пока похоже, что DS, вероятно, правильная вещь ... Мне просто нужно лучше понять их, чтобы быть уверенным. - person rcreswick; 18.10.2008
comment
Фактически в последней ссылке перечислены другие технологии, которые могут достичь той же цели: IPojo, в частности, выглядит многообещающим, но не таким стандартным, как DS (который является частью OSGI R4). - person VonC; 18.10.2008
comment
Поиск в Google дополнительной информации о декларативных службах привел меня к этому руководству: часть 1: eclipsezone.com/ eclipse / forum / t96740.html, часть 2: eclipsezone.com/eclipse/ форумы / t97690.rhtml Похоже, именно то, что мне нужно. Спасибо! - person rcreswick; 18.10.2008

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

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

person Robin    schedule 17.10.2008