Как запустить OSGi-фреймворк в обычном java-коде? - PullRequest
8 голосов
/ 24 мая 2009

Кто-нибудь может привести пример использования рамочных классов osgi? Я понятия не имею, как использовать эти классы ...

BR

Markus

Ответы [ 6 ]

8 голосов
/ 26 мая 2009

Это зависит от того, какую реализацию OSGi вы используете. Я использую Eclipse Equinox и запускаю фреймворк из обычного Java-класса. Jar Eclipse (называемый org.eclipse.osgi_longversion.jar) имеет класс org.eclipse.core.runtime.adaptor.EclipseStarter. Это загрузит ваш OSGi Framework.

Properties props = new Properties();
// add some properties to config the framework
EclipseStarter.setInitialProperties(props);
BundleContext context = EclipseStarter.startup(new String[]{},null);

Вам нужны некоторые свойства для настройки фреймворка. Вы можете увидеть все документированные свойства здесь . Как только вы вызываете автозагрузку, BundleContext, который вы получаете, является контекстом системного пакета, поэтому вы можете устанавливать / запускать / останавливать пакеты отсюда.

Если вы установите все свойства, вам не нужно будет передавать аргументы в startup ().

Вы можете скачать все Equinox и другие комплекты с веб-сайта Equinox .

5 голосов
/ 11 марта 2011

В OSGi 4.1 это стандартизировано. Взгляните на http://njbartlett.name/2011/03/07/embedding-osgi.html, который объясняет, как встроить любой контейнер OSGi.

2 голосов
/ 25 мая 2009

См. Проект Равноденствие-безголовый сервис . У него есть код для запуска равноденствия.

2 голосов
/ 25 мая 2009

Спецификация не определяет, как создавать экземпляры, настраивать и запускать среду OSGi. Поэтому запуск платформы OSGi из вашего обычного Java-кода всегда специфичен для данной реализации инфраструктуры (Equinox, Felix, Knopplerfish, ...).

Достаточно просто внедрить Apache Felix (платформа OSGi с открытым исходным кодом) в ваше приложение.

См. http://felix.apache.org/site/launching-and-embedding-apache-felix.html для получения дополнительной информации.

1 голос
/ 24 мая 2009
0 голосов
/ 11 ноября 2012

Недавно я создал простое доказательство того, как встраивать среду выполнения Equinox OSGi в Java. Для получения подробной информации, пожалуйста, следите за моим проектом в Github https://github.com/sarxos/equinox-launcher

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...