Как заставить Spring Dynamic Modules 2.x работать на Apache Felix Karaf? - PullRequest
1 голос
/ 13 октября 2010

Мы начали использовать 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 Ответ

2 голосов
/ 20 октября 2010

Хорошо, после некоторого расследования мне удалось заставить пакеты работать с 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 мы сможем избавиться от них.

...