Управление большим приложением OSGi - PullRequest
3 голосов
/ 05 августа 2009

У меня большое растущее приложение OSGi с несколькими пакетами. Мне любопытно узнать, как лучше всего управлять этим типом приложений. В настоящее время я использую Eclipse и Maven, но, хотя это отлично подходит для сборки пакетов (с помощью maven-bundle-plugin), на данный момент управлять всем приложением нелегко.

То, что я хотел бы сделать, это либо иметь ОДНУ запущенную конфигурацию, либо ОДИН файл pom.xml, который можно запустить, а также построить и запустить все приложение / проект. Кроме того, я хотел бы иметь что-то, что было бы хорошо для отладки.

Я слышал о PAX Construct и установил его в Eclipse, но пока он мало помог (возможно, я не правильно его использую).

Я уверен, что есть люди с большими приложениями OSGi, которые управляются правильно. Любой совет, которым можно поделиться, очень помог бы.

Спасибо, Стивен

Ответы [ 4 ]

1 голос
/ 07 августа 2009

Ну ...

Все зависит от того, что вы подразумеваете под «управлением» приложением.

Для запуска, сборки и отладки времени разработки - Eclipse IDE должна идеально соответствовать всем требованиям.

Мейвен ... Я не могу говорить за это, потому что сам никогда этим не пользовался.

У нас есть довольно большое приложение, основанное на затмении (на самом деле, несколько), и в плане разработки мы не используем ничего особенного, кроме Eclipse и его интегрированного SCM.

На сервере сборки cc мы также используем безголовое затмение для построения и упаковки.

Теперь настройка рабочего пространства в последнее время немного вышла из-под контроля со всеми зависимостями и промежуточными этапами сборки, поэтому мы исследуем Buckminster для управления материализацией ресурсов целевой платформы и рабочего пространства. 1015 *

Если это сработает, мы, вероятно, тоже перейдем к строительству с Баки - это, безусловно, выглядит многообещающе.

(У меня нет опыта работы с PAX, но на первый взгляд, он также выглядит многообещающе ...)

1 голос
/ 06 августа 2009

Возможна конфигурация запуска через Pax Runner . Он позволяет выбрать реализацию платформы OSGi, указать профили (предварительно упакованные наборы пакетов для некоторой роли, например, web, log, ds и т. Д.) И имеет хорошую поддержку обеспечения, например, он может загружать пакеты Хранилище Maven. В результате вы можете получить конфигурацию запуска, например

--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/1.0.1-SNAPSHOT@update
# other bundles

В случае, если ваше приложение очень велико или у вас есть другие приложения, есть способ создать свои собственные профили.

0 голосов
/ 22 марта 2011

Эта область, на мой взгляд, в настоящее время имеет очень слабую поддержку. OSGI на самом деле ничего не определяет в развертывании или упаковке, так что это зависит от других сред (например, Eclipse), чтобы придумать свой собственный способ сделать это.

Если вы создаете приложение RCP (базовое Eclipse), то системы eclipse делают все это, вплоть до создания exe и т. Д. Однако сборки в основном выполняются в рабочей области Eclipse, безголовые сборки сложнее. Проект Tycho пытается сделать это более разумным путем объединения циклов сборки Maven и Eclipse, однако он по-прежнему сосредоточен на приложениях RCP, а не на общих OSGI.

Если вы не выполняете RCP, что также является моей ситуацией, то вам, вероятно, придется применить собственное решение, поскольку я не нашел никакого общего решения. Вот схема того, что мы делаем:

Мы определяем один проект POM, в котором перечислены все пакеты, содержащиеся в вашем приложении. Все, что делает этот проект, это перечисляет ссылки - давайте назовем его проектом «bundle-list».

Затем мы используем pax provision для запуска проекта в режиме разработки. Это достигается созданием pom «bundle-list» как родительского pom-пакета pax-проекта (обычно в папке «provision»). Затем, когда вы запускаете pax, он использует список пакетов из этого проекта для запуска OSGI. Чтобы это работало, ссылки на комплекты в проекте «комплект-список» должны быть помечены как «предоставленные».

Затем для создания дистрибутива у нас есть еще один проект. Этот проект также имеет проект 'bundle-list' в качестве родителя. Этот проект использует различные плагины для создания дистрибутива, в том числе загрузку jar-пакетов. В дистрибутив входят скрипты, запускающие OSGI, но они написаны от руки, здесь нет систем pax.

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

0 голосов
/ 07 августа 2009

Я новичок в OSGi, но,

нельзя было бы использовать OBR-сервис таким образом, чтобы у вас будет один файл репозитория OBR, который требует комплектов и позволить сервису OBR выяснить зависимости и заполнить ваш OSGIhost для вас?

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