2

私は Camel を調べ始めたばかりで、すぐに使用できるいくつかの例から始めました。mvn を使用するとうまく機能しますcamel:run。また、これを 1 つの uber jar としてパッケージ化して、コマンド ラインから実行できるようにしようとしています。

jar をビルドするために 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 シェード プラグイン内でトランスフォーマーを定義する方法は次のとおりです。

    <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>

何が欠けているのかわからない。誰かがこの問題を解決するのを手伝ってくれますか? 代替手段があれば教えてください。

4

2 に答える 2

2

作成した jar に 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>
于 2012-07-27T11:43:17.340 に答える