Как запустить OSGI-комплект во время выполнения? - PullRequest
1 голос
/ 09 марта 2010

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

Ответы [ 3 ]

4 голосов
/ 04 мая 2010

Если вы имеете в виду: порядок запуска комплектов.

Как и при запуске приложения OSGi, как я могу убедиться, что сервисы более низкого уровня, предоставляемые другими пакетами, доступны для сервисов более высокого уровня (/ для других пакетов). Тогда вы должны прочитать в динамические службы.

Есть несколько способов решить эту проблему (как она изменилась в другой версии OSGi). Если вы новичок в OSGi и Dynamic Service , наиболее логичным решением, вероятно, будет Декларативные службы , но по крайней мере вам следует также прочитать о Service Activator Toolkit , так как у него есть свои преимущества и недостатки.

Есть замечательная онлайн Глава 6, Динамические службы , которая точно описывает эту проблему и какие существуют решения для ее решения (описано как минимум 3 решения).

В общем, я могу порекомендовать книгу OSGi и Equinox для всех, кто хочет узнать о / применить OSGi (Equinox).

2 голосов
/ 09 марта 2010

Вы можете сделать это по-разному. Во-первых, вы можете взглянуть на метод start класса интерфейса Bundle. С его помощью вы можете запустить конкретный комплект. Вы также можете взглянуть на декларативные услуги или спецификацию начального уровня.

Для начала ознакомьтесь с разделом 4.4.5 (Стартовые комплекты) базовой спецификации OSGi (доступно по адресу www.osgi.org бесплатно).

1 голос
/ 28 мая 2010

Вы пробовали BundleContext.install()?(BundleContext передается в методах запуска и остановки активатора)

...