Пакет на основе Spring на apache karaf не работает

Я создаю пакет на основе Spring с maven с помощью следующей команды

mvn archetype:generate -DarchetypeGroupId=org.apache.camel.archetypes -DarchetypeArtifactId=camel-archetype-spring -DarchetypeVersion=2.15.3 -DgroupId=osgiSpring -DartifactId=osgiSpring -Dversion=1.0-SNAPSHOT -Dpackage=osgiSpring

Затем я импортировал этот проект maven в eclipse и просто изменил 'camel-context.xml' на

<?xml version="1.0" encoding="UTF-8"?>
<!--

 Copyright 2005-2014 Red Hat, Inc.

 Red Hat licenses this file to you under the Apache License, version
 2.0 (the "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0



    Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
     implied.  See the License for the specific language governing
     permissions and limitations under the License.

    -->
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="file:C:\input"/>
    <to uri="file:C:\output"/>
  </route>
</camelContext>

</beans>

После этого я построил его с помощью «mvn package», а затем скопировал сгенерированный jar в папку развертывания Apache Karafs, но karaf, похоже, не распознает этот пакет.

Когда я запускаю его с помощью «mvn: camel run», он работает нормально.

Он также работал с пакетом без пружины с активатором.


person Milla    schedule 10.09.2015    source источник
comment
Можете ли вы опубликовать ошибку в своем журнале?   -  person Jkike    schedule 10.09.2015
comment
Я бы сделал, если бы у меня был такой ... как я уже сказал, после копирования этой банки в папку развертывания абсолютно ничего не происходит.   -  person Milla    schedule 10.09.2015
comment
Что ж, без журналов все, что я могу предложить, - это попробовать то, что написано здесь, в программе развертывания оболочки karaf.apache.org/manual/latest-2.2.x/users-guide/deployer.html Вероятно, проблема в артефакте, который не подходит для карафа, но Ничего не могу поделать с тем, какой артефакт следует использовать.   -  person Jkike    schedule 10.09.2015


Ответы (1)


Ваша проблема в том, что camel-archetype-spring генерирует pom.xml только с помощью camel-maven-plugin, который, как вы заметили, позволяет запускать ваш код через mvn camel: run. Однако он не создает надлежащий манифест OSGi, поэтому Караф не распознает его как пакет OSGi.

Решение: добавьте maven-bundle-plugin следующим образом:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.3.7</version>
    <extensions>true</extensions>
</plugin>

и установите упаковку в пакет следующим образом:

<packaging>bundle</packaging>

Вы можете прочитать о других параметрах конфигурации, доступных для maven-bundle-plugin здесь. Я предлагаю вам проверить файл META-INF / MANIFEST.MF вашего jar-файла до и после внесения этих изменений, чтобы вы понимали, какие изменения там.

person jnupponen    schedule 10.09.2015