Как заставить Bundlor сгенерировать пакет импорта для зависимостей OSGi Blueprint - PullRequest
2 голосов
/ 03 февраля 2012

Я использую Spring и Spring Integration в реализации сервиса, упакованной в комплект OSGi. Сервис публикуется Blueprint или, точнее, Gemini Blueprint [http://www.springframework.org/schema/osgi]

<bean id="myService" class="org.example.mti.MyServiceImplementation"/>
<osgi:service ref="myService" interface="org.example.mti.api.MyService"/>

Файлы контекста находятся в META-INF/spring/applicationContext*.xml

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

Для более сложных сервисов, где я использую Spring Integration, реализация сервиса явно нуждается в доступе к классам Spring, которые экспортируются обычными комплектами библиотек Spring.

Я использую Bundlor для управления файлом MANIFEST.MF. Я пробовал Spring Bundlor 1.0.0.RELEASE и Eclipse Virgo Bundlor 1.1.0.M3.

Насколько я понимаю, Бандлор предназначен для того, чтобы иметь возможность сканировать файлы контекста Blueprint, чтобы определить требуемые классы, но я не вижу ничего особенно полезного в заголовке манифеста Import-Package.

Import-Package:
 org.example.dao,
 org.example.domain,
 org.example.mti.api,
 javax.inject,
 org.springframework.integration,
 org.springframework.integration.annotation,
 org.springframework.integration.support

При попытке запустить комплект с использованием Pax Exam, под Феликсом я вижу ClassNotFoundException

java.lang.ClassNotFoundException:
    org.springframework.integration.gateway.GatewayProxyFactoryBean

Я попытался установить заголовки манифеста Bundle-Blueprint и Spring-Context в manifest.mf, и они скопированы в MANIFEST.MF, но новые значения Import-Package не добавляются.

Ожидается ли, что добавление, например, <int:gateway .../> в контекст проекта позволит Bundlor правильно определять зависимости времени выполнения, такие как GatewayProxyFactoryBean выше?

Если Bundlor не может определить правильное значение Import-Package, как вы управляете этими «внутренними» требованиями к пакету? Думаю, нецелесообразно перечислять все возможные пакеты в какой-либо сторонней библиотеке. Есть ли какой-то эквивалент Import-Library, который я смутно помню из Spring DM?

Ссылки

http://static.springsource.org/s2-bundlor/1.0.x/user-guide/htmlsingle/user-guide.html http://blog.springsource.org/2009/09/26/bundlor-adds-support-for-the-blueprint-service/

1 Ответ

1 голос
/ 03 февраля 2012

Отвечая на мой вопрос с потенциальным решением.

DynamicImport-Package: org.springframework.*

Хотя это хак , оно работает

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