Караф девелопмент

В настоящее время я разрабатываю пакеты для karaf и у меня есть несколько вопросов...

Я написал пакет / веб-сервис на основе cxf, я пытаюсь развернуть его в karaf, но он не может запустить этот пакет, потому что он не может разрешить некоторые пакеты, например.

org.osgi.framework.BundleException: неразрешенное ограничение в пакете org.springframework.aop [56]: невозможно разрешить 56.0: отсутствует пакет требований [56.0]; (&(package=org.aopalliance.aop)(версия>=1.0.0)(!(версия>=2.0.0)))

так вот вопрос, эта зависимость пакета происходит от spring-aop (3.1.0.RELEASE), так в чем проблема? какой зависимости не хватает? как я могу решить такие проблемы?

В этом случае я не совсем понял процесс разработки. я должен развернуть все отсутствующие пакеты в развертывании? потому что я хотел бы, чтобы сторонние библиотеки были отделены от моих разработанных пакетов. И какие пакеты я должен развернуть? Это метод проб и ошибок? Есть ли общий способ позволить maven делать вещи с зависимостями?

Я обнаружил папку «система» и прочитал в документе, что это репозиторий, такой как maven, это для функций?

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

Вызвано: java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet

Какой зависимости не хватает?

Я уже читал учебник о верблюдах и карафах, но в нем не объяснялось развертывание, так что может ли кто-нибудь предложить мне хороший учебник?

Спасибо! Крис


person user1228444    schedule 23.02.2012    source источник
comment
всегда стоит добавить более широкий тег, чтобы привлечь больше потенциальных ответов — я добавил тег OSGi, так как некоторые из ваших запросов не относятся к Karaf   -  person earcam    schedule 02.03.2012


Ответы (2)


Короткий ответ

Прокрутите вниз до бита, относящегося к «camel-cxf», и запустите две команды: functions:addurl и functions:install. Я чувствую, что это решит все ваши проблемы.


весна-аоп

На консоли Karaf введите:

exports | grep org.aopalliance.aop

Я думаю, вы увидите такие строки:

XX org.aopalliance.aop; version=3.1.0.RELEASE

Таким образом, хотя в пакете spring-aop есть правильные пакеты, они имеют неправильную версию, запрашиваемый диапазон составляет> = 1.0.0 и ‹2.0.0, поэтому 3.1.0 не удовлетворяет этому.


Развертывание/установка

Вы можете перетаскивать пакеты в ${karaf.home}/deploy или использовать консоль.

Вы можете установить пакеты maven из консоли Karaf с помощью:

install -s mvn:groupId/artifactId/version/packaging/classifier

Где -s начинает пакет, а упаковка/классификатор необязательны.

Вы можете найти много готовых зависимостей Maven для OSGi здесь http://ebr.springsource.com/repository/app/ - я бегло просмотрел, но ваша зависимость Spring aop очень старая, какую версию CXF вы используете?

Почитайте о функциях Karaf — это в основном XML-файлы, в которых перечислены наборы пакетов, которые можно установить. Очень полезно для развертывания большого количества пакетов, и их можно установить в репозиторий maven.

В Karaf доступны некоторые стандартные функции, попробуйте:

features:install war

Это даст вам веб-контейнер для причала и может разрешить ваше исключение ClassNotFoundException: javax.servlet.http.HttpServlet, если это правильная версия.

У Camel также есть файл функций, который, вероятно, решает все ваши проблемы, попробуйте это:

features:addurl mvn:org.apache.camel.karaf/apache-camel/2.9.0/xml/features
features:install camel-cxf

Учебники

Доступно довольно много, некоторые на http://karaf.apache.org и http://fusesource.com, но также взгляните на руководство в формате PDF, входящее в дистрибутив Karaf. Всегда помните, что информация может быть устаревшей

person earcam    schedule 02.03.2012

Пожалуйста, опубликуйте свой файл MANIFEST.MF. Я думаю, вы не упомянули тег в зависимости maven-bundle-plugin.

person ved    schedule 01.01.2014