Структура приложения Apache Karaf OSGi
-
11-12-2019 - |
Вопрос
Мне нужно создать и развернуть приложение в Карафе.Но мне нужно использовать компонент Camel и компонент Java (простой Spring Bean).Поток должен быть следующим:
WebService(not matter for me) -> camel-component -> spring-bean -> camel-component -> WebService(not matter for me).
Это простая маршрутизация.Но мне нужна структура каталогов пакета OSGi, который принимает и развертывает karaf.
Для примераУ меня есть:
su-camel
-src
-main
-resources
-META-INF
xbean.xml (spring-bean)
-test
-java
-resources
su-bean
-src
-main
-java
-resources
-META-INF
xbean.xml (spring-bean)
-test
-java
-resources
Я упаковываю все с помощью maven, поэтому какую структуру каталогов мне следует сохранить в пакете OSGi? .jar
файл, что приложение будет развернуто правильно?Как видите, их два. src
каталоги в su-camel
модуль и su-bean
модуль.
Я знаю, что servicemix принимает .zip
файл со всеми добавленными компонентами со структурой, описанной выше.Поддерживает ли Караф такую структуру?
Решение
Правильным решением OSGi было бы создать два пакета, по одному для каждого проекта, и развернуть их оба.Если вы не хотите этого делать, вы можете использовать свойство Embed-Dependency в манифесте вашего проекта, чтобы включить пакеты зависимостей (camel).Это создаст только один пакет для развертывания.
Другие советы
Самое простое решение — создать только один пакет с компонентом и верблюжьим маршрутом.Обычно нет необходимости отделять маршрут от компонента.Если вам по какой-то причине необходимо разделить его, просто используйте два пакета.
Чтобы упростить развертывание, вы можете использовать файл функций karaf, в котором вы перечислите оба пакета и, в конечном итоге, их дальнейшие зависимости.Karaf также поддерживает файлы .kar, которые могут содержать множество пакетов.Файлы kar — это то, что вам нужно, если у вашего сервера karaf нет доступа к репозиторию maven.