Как заставить Spring Dynamic Modules 2.x работать на Apache Felix Karaf?
Мы начали использовать Apache Felix Karaf для проекта и используем Blueprint Services.
Теперь я хотел бы использовать Spring Dynamic Modules, чтобы иметь доступ к расширенным функциональным возможностям DI и функциям тестирования. Проблема в том, что я не смог понять, как запустить Spring DM 2.x на Феликсе.
Установлены функции Spring и Spring-DM:
karaf@root> features:list
State Version Name Repository
[installed ] [2.5.6.SEC01] spring karaf-1.6.0
[installed ] [1.2.0 ] spring-dm karaf-1.6.0
[uninstalled] [1.6.0 ] wrapper karaf-1.6.0
[uninstalled] [1.6.0 ] obr karaf-1.6.0
[installed ] [1.6.0 ] http karaf-1.6.0
[uninstalled] [1.6.0 ] war karaf-1.6.0
[uninstalled] [1.6.0 ] webconsole karaf-1.6.0
[installed ] [1.6.0 ] ssh karaf-1.6.0
[installed ] [1.6.0 ] management karaf-1.6.0
Но для использования сервисов Blueprint мне понадобится Spring DM 2.x (по крайней мере, согласно веб-сайту Spring, "Для Blueprint Service RI используйте версию 2.x+".).
Я видел, что можно добавить функции в Apache Felix, но из того, что я понял, для этого требуется объявить файл features.xml в некотором репозитории.
У меня вопрос, есть ли более простой путь, который также будет более интегрированным (например, через Maven)
1 ответ
Хорошо, после некоторого расследования мне удалось заставить пакеты работать с Spring DM 2.0.0.M1 на Karaf.
Я решил это, добавив дополнительный набор функций (см. http://karaf.apache.org/manual/2.2.5/users-guide/provisioning.html), определив дескриптор XML функции следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<features name="spring-features">
<feature name="spring-dm-2" version="2.0.0.M1">
<feature version="3.0.3.RELEASE">spring</feature>
<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/2.1_3_6</bundle>
<bundle>mvn:org.springframework.osgi/spring-osgi-io/2.0.0.M1</bundle>
<bundle>mvn:org.springframework.osgi/spring-osgi-core/2.0.0.M1</bundle>
<bundle>mvn:org.springframework.osgi/spring-osgi-extender/2.0.0.M1</bundle>
<bundle>mvn:org.springframework.osgi/spring-osgi-annotation/2.0.0.M1</bundle>
<bundle>mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.spring/2.1.0</bundle>
</feature>
</features>
А затем загрузить его через оболочку Караф
features:addurl /path/to/spring-dm-feature.xml
features:install spring-dm-2
Обратите внимание, что это работает, но поставляется с рядом уродливых стековых трасс - я надеюсь, что с помощью ребят из списка пользователей Karaf / ребят из Spring мы сможем избавиться от них.