web-dev-qa-db-ja.com

CXF 2.4.2:名前空間http://schemas.xmlsoap.org/soap/httpのコンジットイニシエーターが見つかりませんでした

Wsdlから生成されたサービスクライアントがあります。リモートサービスを呼び出そうとしていますが、次に示すコンジットイニシエーターエラーが表示されます。私は多くの解決策を試しましたが成功しませんでした。

http-jetty extensionsの使用を推奨する解決策(古い投稿)を見つけました。サーバーがローカルで実行されていないため、これが意味をなさないと思います。

また、私に役立つ最も近い構成は、以下を含むサンプルcxf.xmlファイルであることもわかりました。

<bean class="org.Apache.cxf.transport.local.LocalTransportFactory"
    lazy-init="false">
    <property name="transportIds">
        <list>
            <value>http://cxf.Apache.org/transports/local</value>
            <value>http://cxf.Apache.org/transports/http</value>
            <value>http://schemas.xmlsoap.org/soap/http</value>
            <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
        </list>
    </property>
</bean>

この構成は、トランスポートファクトリを構成し、それを http://schemas.xmlsoap.org/soap/http にバインドする方法に関するガイダンスを提供します。 HTTPTransportFactoryでこれを試行すると、初期化できないという例外が発生します(そのようなメソッドエラーはありません)。

Caused by: org.Apache.cxf.BusException: No conduit initiator was found for the namespace http://schemas.xmlsoap.org/soap/http.
    at org.Apache.cxf.transport.ConduitInitiatorManagerImpl.getConduitInitiator(ConduitInitiatorManagerImpl.Java:112)
    at org.Apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.Java:73)
    at org.Apache.cxf.endpoint.UpfrontConduitSelector.prepare(UpfrontConduitSelector.Java:61)
    at org.Apache.cxf.endpoint.ClientImpl.prepareConduitSelector(ClientImpl.Java:708)
    at org.Apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.Java:476)
    at org.Apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.Java:309)
    at org.Apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.Java:261)
    at org.Apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.Java:73)
    at org.Apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.Java:127)

注意:この時点で、CXFクライアントを2.4.2にアップグレードする試みを中止し、動作する最も古いバージョン(2.2シリーズ)。これは理想的ではありません。

アップグレードを進めたいと思います。 CXF 2.4.Xを構成してクライアントのみのHTTP SOAP構成ワイヤを正しく構成できるようにする方法に関する提案は、非常に専門的です。

21
Dan Barber

以前の投稿で推奨されていたように、これはcxf-rt-transports-http-jettyをミックスに追加することで解決されます。

24

このエラーは、クライアントの無効なURL形式によって生成される可能性があります。たとえば、httpトランスポートを使用する場合は、「http:// localhost:8080/services/{smth}」のURLを定義する必要があります。また、http接頭辞なしで「localhost:8080/services/{smth}」を定義すると、このようなエラーが発生します。

16

Cxf-rt-binding-soap-2.4.x.jarをクラスパスに入れましたか?

4
Willem Jiang

最近cxf-rt-ws-securityを3.0.0にアップグレードしました。それから私はorg.Apache.cxf.BusExceptionを取得し始めました:名前空間のコンジットイニシエーターが見つかりません http://schemas.xmlsoap.org/soap/http 。 org.Apache.cxf.bus.managers.ConduitInitiatorManagerImpl.getConduitInitiator(ConduitInitiatorManagerImpl.Java:110)にあります。

この問題は、pom.xmlで以下のjarを3.0.0にアップグレードした後に解決されましたcxf-rt-frontend-jaxws cxf-rt-ws-policy cxf-rt-transports-http

3
Sudarshan

私も同じ問題に直面していました。 IntelliJを介してすべてが正常に機能していましたが、maven surefireがエラーをスローしていました。そして最後に答えを見つけました。ここにあります:

基本的に、cxfライブラリはそれぞれMETA-INF/cxf/bus-extensions.txtファイルを提供し、パッケージャのデフォルトの動作はそのファイルを置き換えることであり、ファイルが不完全になります。シェーダーを構成することにより、cxfを置き換えるのではなく追加することで、正しく動作します。

これをプラグインセクションのpomのビルドセクションに追加します。

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.4</version>
    <configuration>
      <createDependencyReducedPom>true</createDependencyReducedPom>
    </configuration>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <transformers>
            <transformer implementation="org.Apache.maven.plugins.shade.resource.AppendingTransformer">
              <resource>META-INF/cxf/bus-extensions.txt</resource>
            </transformer>
          </transformers>
          <filters>
            <filter>
              <artifact>*:*</artifact>
              <excludes>
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
              </excludes>
            </filter>
          </filters>
        </configuration>
      </execution>
    </executions>
  </plugin>

これは、元の投稿者のサンプルURLには特に当てはまりませんが、URLが正しくない場合にこのエラーが発生しました。つまり、URLパスに特定の文字列が1回ではなく2回リストされていました。

1
icfantv

私はこのエラーで同様の状況がありました、そしてこの問題のために次のjarの古いバージョンで来ているようです

cxf-core-2.x.jar
cxf-rt-frontend-jaxrs-2.x.jar
cxf-rt-rs-client-2.x.jar
cxf-rt-transports-http-2.x.jar

これらのjarの最新リリース(執筆時点では3.2.1)に切り替えたところ、エラーが解決しました。

0
N00b Pr0grammer

POMからこの依存関係を削除すると、エラーが修正されました

   <dependency>
        <groupId>org.Apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.1.1</version>
    </dependency>
0
Abhishek Galoda