2014-08-30 3 views
1

Я просто пытаюсь разрешить свое понимание того, что происходит, когда пучок остановлен и последствия для связок, зависящих от них.Зависимость связки от связки в разрешенном состоянии

Например, если есть два пучка A и B. Связка A не имеет зависимостей (кроме рамки OSGi), но экспортирует некоторые пакеты. Bundle B импортирует пакеты из A и впоследствии использует классы из них, но НЕ сервисы (если они есть). Оба пакета установлены в платформе OSGi и сообщают о статусе «Активный».

Теперь возникает ситуация Пакет A останавливается (но НЕ перезапускается), поэтому, если я правильно понимаю, что происходит переход A в состояние «разрешен». Означает ли это, что любой экспорт в пакете A НЕ доступен, и если это так, то пакет B также должен быть остановлен (автоматически по структуре), когда A делает?

ответ

1

При запуске пучка B запускается пучок A (до). Однако, если пакет A остановлен, расслоение B не будет остановлено. Там может быть три причины расслоения B остановятся:

  • остановка называется на расслоении B
  • уровень Framework старт становится ниже уровня начала расслоения B
  • расслоение B становится нерешенная

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

+0

В моей консоли OSGI, даже после удаления A, я могу обновить, разрешить и активировать Bundle B., почему это так? – Ngupta

1

Разница между разрешенным состоянием и активным состоянием - это только выполнение методов запуска/останова активатора. Таким образом, остановка пакета A не повлияет на пакет B до тех пор, пока он использует только классы из комплекта A и никаких служб, которые будут отменены.

Фактически, если пакет A не имеет BundleActivator, то пакет будет переходить из разрешенного -> активного или активного -> разрешенным без каких-либо изменений вообще.

Смежные вопросы