Ищу руководство по использованию Blueprint для программного доступа к информации о состоянии пакетов ServiceMix - PullRequest
1 голос
/ 23 февраля 2012

Мы используем Apache ServiceMix 4 ESB , который запускает Apache Karaf контейнер на основе OSGi . OSGi предлагает средства, представленные в консоли ServiceMix, которые предоставляют информацию о состоянии пакетов, установленных в контейнере :

osgi:list

Я искал высоко и низко. Теперь я спрашиваю: кто-нибудь знает какие-либо рабочие примеры, руководства по использованию API или другие рекомендации по доступу к этой информации из кода, работающего в ESB? В идеале хотелось бы:

  1. Определите, какие пакеты установлены;
  2. Мониторинг состояния идентифицированного комплекта; и, по крайней мере,
  3. Динамически останавливать / удалять и запускать / переустанавливать указанный пакет,

Пожалуйста, поделитесь любой информацией, имеющейся на этом, или просто любыми путями, с которых можно начать лучше исследовать это.

Спасибо.

1 Ответ

2 голосов
/ 27 февраля 2012

Blueprint имеет ограниченное использование для этого, так как Blueprint по определению декларативный, и вы хотите сделать что-то программно. Тем не менее, Blueprint может помочь вам в этом, добавив контекст пакета . Если у вас есть контекст пакета, вы можете использовать org.osgi.framework API , чтобы получить все пакеты (context.getBundles()), запросить их состояние, запустить и остановить их и так далее.

Ваше требование 3) загрузка пакета не имеет смысла в контексте OSGi, поскольку их жизненный цикл заключается в том, что они устанавливаются и затем запускаются. Если пакет не был установлен, он не будет включен в getBundles (), но его можно установить с помощью контекста.

Чтобы добавить контекст в bean-компонент Blueprint, используйте специальное свойство:

<bean class="SomeClass">
    <property name="context" ref="blueprintBundleContext"/>
</bean>

Я позаимствовал этот пример у Enterprise OSGi в действии , но на developerWorks есть очень хорошее руководство по Blueprint: http://www.ibm.com/developerworks/opensource/library/os-osgiblueprint/

Недавно был задан похожий вопрос, который также может оказаться полезным: Как мне внедрить консоль OSGi в комплект? (ss похож на bundle:list, хотя и не предоставить любую информацию, относящуюся к Blueprint).

...