Как запустить фреймворк OSGi в рамках обычного java-кода?


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

BR,

Маркус

6 8

6 ответов:

Это зависит от того, какую реализацию OSGi вы используете. Я использую Eclipse Equinox и запускаю фреймворк из обычного класса java. Банка затмения (называется орг.затмение.osgi_longversion.jar) имеет класс под названием org.затмение.ядро.во время выполнения.адаптер.Эклипсестартер. Это загрузит ваш фреймворк OSGi.

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.

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

См. Проектequinox-headless-service . У него есть код для запуска equinox.

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

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

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

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