Будут ли активаторы eclipse / osgi всегда вызываться хотя бы один раз, прежде чем будет осуществлен доступ к коду? - PullRequest
3 голосов
/ 10 августа 2009

В Eclipse (3.3) у меня есть плагин Пользователь , в зависимости от плагина Провайдер . Провайдер имеет активатор. В редакторе плагинов для провайдера есть флажок «Активировать этот плагин, когда один из его классов загружен». Если вы отметите / снимите флажок, изменится настройка Manifest: Eclipse-LazyStart на true / false.

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

  1. Если у вас есть активатор всегда бегал хотя бы один раз перед нисходящий плагин вызывает код, независимо от этого флажка?
  2. Этот флажок применим только к немедленный или ленивый старт?

1 Ответ

8 голосов
/ 10 августа 2009

Eclipse-LazyStart: true -> означает, что плагин будет автоматически запущен при загрузке класса в этом плагине.
Eclipse-LazyStart: false -> означает, что плагин / комплект не будет запущен, когда класс в этом плагине загружен. Вам потребуется явный Bundle#start() звонок от вас вместо автоматического запуска из среды Equinox OSGI.

Так что да, эта чековая книжка применима только к этому параметру.
Примечание: с OSGI4.1 это может также установить новую настройку Bundle-ActivationPolicy .

С Дизайн OSGI :

Ленивая активация

Ленивая активация - это политика жизненного цикла, согласно которой пакет ДОЛЖЕН быть активирован при первом успешном запросе на загрузку класса из этого пакета.
Иногда это называется автоматическим запуском, поскольку пакет автоматически активируется при загрузке первого класса.
В этом проекте всегда будет использоваться термин «ленивый» вместо «автоматический», поскольку при автоматическом запуске пакет всегда запускается автоматически при каждом запуске инфраструктуры.

Здесь можно выбрать «ленивый старт против незапуска», а не «ленивый старт против нетерпеливого старта».
Так что даже с активатором ваш плагин-провайдер не запустится, пока один из его классов не будет загружен (lazy-start true) и явно вызван (если lazy start false)

...