Проект упаковки верблюда с банками cxf

Я только начал изучать Camel и начал с нескольких нестандартных примеров. Он отлично работает при использовании mvn camel:run. Я также пытаюсь упаковать это как одну банку uber и иметь возможность выполнять ее из командной строки.

Я использую плагин тени Maven для создания банки. Когда я пытаюсь выполнить его, я получаю эту ошибку:

Caused by: org.apache.cxf.BusException: No DestinationFactory was found for the namespace http://cxf.apache.org/transports/http.
    at org.apache.cxf.transport.DestinationFactoryManagerImpl.getDestinationFactory(DestinationFactoryManagerImpl.java:126)
    at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:88)
    at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:72)
    at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:149)

У меня есть эти зависимости вместе с некоторыми другими:

    <properties>
      <camel.version>2.8.0-fuse-04-01</camel.version>
      <cxf.version>2.4.3-fuse-02-02</cxf.version>
    </properties>


    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-cxf</artifactId>
        <version>${camel.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>${cxf.version}</version>
    </dependency>

Вот как трансформаторы определяются в плагине maven shadow:

    <transformers>
      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
       <mainClass>org.apache.camel.spring.Main</mainClass>
     </transformer>
     <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
      <resource>META-INF/spring.handlers</resource>
     </transformer
     <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
      <resource>META-INF/spring.schemas</resource>
    </transformer>
  </transformers>

Я не знаю, чего мне не хватает. Может ли кто-нибудь помочь мне решить эту проблему? Пожалуйста, дайте мне знать о любых альтернативных подходах.


person user1555517    schedule 26.07.2012    source источник


Ответы (2)


У вас может не быть cxf.xml в созданной банке.

Он должен находиться в META-INF/cxf/cxf.xml .

Shade может потребоваться более полная конфигурация (см. этот вопрос для экземпляр)

<configuration>
  <transformers>
    ...
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
        <resource>META-INF/cxf/cxf.extension</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
        <resource>META-INF/extensions.xml</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
        <resource>META-INF/cxf/extensions.xml</resource>
    </transformer>
  </transformers>
</configuration>
person cexbrayat    schedule 27.07.2012
comment
Я проверил, что файл cxf.xml доступен в банке. Все еще вижу ту же ошибку. - person user1555517; 27.07.2012

Я была такая же проблема. Я решил это, добавив org.apache.maven.plugins.shade.resource.AppendingTransformer для bus-extensions.txt.

Это сработало для меня:

            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <shadedArtifactId>${ivyExecutable}</shadedArtifactId>
                        <finalName>${ivyExecutable}</finalName>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                        <shadedArtifactAttached>true</shadedArtifactAttached>
                        <shadedClassifierName>exec</shadedClassifierName>
                        <artifactSet>
                            <includes>
                                <include>*:*</include>
                            </includes>
                        </artifactSet>

                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/*.SF</exclude>
                                    <exclude>META-INF/*.DSA</exclude>
                                    <exclude>META-INF/*.RSA</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/cxf/bus-extensions.txt</resource>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>${mainClass}</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-buildtools</artifactId>
                    <version>2.2.12</version>
                    <type>jar</type>
                    <scope>compile</scope>
                </dependency>
            </dependencies>
        </plugin>
person gdiamantidis    schedule 25.09.2013