2012-04-29 4 views
1

В настоящее время я разрабатываю приложение, которое имеет серверную часть на основе JavaEE 6.0 на JBoss 7.1 и клиент на основе Eclipse RCP 3.7.Как разделить пакеты OSGi между JBoss и Eclipse RCP?

Для простого пакета OSGi для общего API я уже столкнулся с проблемами из-за некоторых различий в версиях и depdencenies. API требует «org.osgi.framework. » для активатора пучка и «org.slf4j.» для API регистрации slf4j.

В настоящее время мой клиент работает очень хорошо, но JBoss говорит мне, что ожидаемая версия импорта OSGi и также импорта для SLF4J не подходят ...

я там лучшая практика для обмена OSGi расслоения между Eclipse и JBoss? Нужно ли возвращаться к простым объявлениям об импорте и экспорте, или я могу как-то использовать Require-Bundle? Нужно ли мне создавать пакеты совместимости для JBoss, чтобы запустить его? Каков наилучший способ здесь?

ОБНОВЛЕНИЕ Я решил проблему исключительно с помощью Import-Package. Для зависимости, такой как org.osgi.framework, используется версия = "0.0", чтобы объяснить, что это не имеет значения. :-(Это не очень безопасно, но в настоящее время я не вижу другой вариант. Есть ли лучший способ?

UPDATE 2 Кроме того, нужно обратить внимание на осуществление правильного Verion в OSGi Framework. JBoss 7.1.x реализован только OSGi 4.2, который не имеет поддержки для извлечения сервисов типов.

ответ

5

Лучшей практикой будет использование оператора пакета импорта с диапазоном от минимальной версии, которую вы используете, к следующему существенному приращению .

Например, если RCP ожидает версию 1.5 пакета, а JBoss ожидает 1.3.6, импортируйте версию = "[1.3.6,2]".

The Semantic Versioning whitepaper (pdf) объясняет, почему этот стиль импорта является безопасным и мудрым.

+0

Я сделал это, как вы сказали. Это больше усилий для поддержания, но на самом деле это работает. Для org.osgi.framework мне нужно использовать версию 0.0 из-за версии системного пакета, которая также равна 0.0.0. :-(Но все остальное, похоже, работает. –

Смежные вопросы