2016-06-01 8 views
0

WSクライアントであっても、WS を呼び出すと動作します。SEIStub implを取得します。Apache CXFが依存関係にある場合でも、Apache CXFが

次に、Apache CXFの別のWS用の新しいクライアントがあります。 JAX-WSスタブを使って最初のWSを呼び出すと、今度はJaxWSClientProxyになり、Apache CXFがデフォルトの実装になるようです。そして、私はJAXWSとクライアントのJaxWsClientProxy

生成するのではなく、WSBindingProviderのために行われていた私の特別なヘッダー機能を使用することはできません。

  <plugin> 
       <groupId>org.jvnet.jax-ws-commons</groupId> 
       <artifactId>jaxws-maven-plugin</artifactId> 
       <version>${jaxws.plugin.version}</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>wsimport</goal> 
         </goals> 
         <configuration> 
          <packageName>fr.xxxx.commons.client.stub.y</packageName> 
          <sourceDestDir>${ws.java.target}</sourceDestDir> 
          <extension>true</extension> 
          <wsdlDirectory>${project.parent.basedir}/src/main/wsdl/v2.1/</wsdlDirectory> 
          <wsdlFiles> 
           <wsdlFile>XXXXWebServices_v2.1.wsdl</wsdlFile> 
          </wsdlFiles> 
          <xnocompile>false</xnocompile> 
          <vmArgs> 
           <vmArg>-Djavax.xml.accessExternalDTD=all</vmArg> 
           <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg> 
          </vmArgs> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

(キャストの)誤りがあるJAX-WSのインスタンス化

xStub = new XWebServicesV21(url, qnameXWebServices); 

xGetPort.set(xStub.getAutogenerate()); 

generateHeader(aApplicationID, aUserId, (WSBindingProvider) xGetPort.get(), xUrl); 

JAXWS implを強制する方法は?私はJDK8とApache CXF 2.3.11を使用します。

+0

私はあなたがwsdl2javaでスタブを作成していると思います。どのようにCXFクライアントをインスタンス化していますか?問題を理解するためのコードと設定を提供してください – pedrofb

+0

jaxwsの世代と、キャストが機能しなくなる問題を追加しました – bodtx

+0

XwebServicesV21がjavax.xml.ws.Serviceのインスタンスで、xStub.getAutogenerate()がアノテーション@WebEndpointと接続するエンドポイント。 ¿なぜWSBindingProviderを使用していますか?それはBindingProviderでなければなりません – pedrofb

答えて

1

Sunのjaxwsはcom.sun.xml.ws.developer.WSBindingProviderを使用しますが、CXFは使用しません。 org.apache.cxf.jaxws.JaxWsClientProxyjavax.xml.ws.BindingProvider

したがって、あなたがWSBindingProviderxGetPort.get()をキャストすることはできませんを実装しています。同様の方法でCXFでSOAPヘッダーを追加することWSBindingProvider.setOutboundHeadersチェックdocumentationをまたはSOAPメッセージの標準的な認証ヘッダを生成するために、CXF WS-Securityのサポートを使用するために

あなたはjarがであることを確認し、SunのJAXWSを使用したい場合前のクラスパス、またはcxfjaxwsの依存関係を削除します。

+0

さて、wsdlでまず最初に正しい方法は、wsdlのヘッダをdoc: _wsdlに追加することです.wsdlのメッセージに要素を追加してから、それらをsoap:ヘッダーとしてマークすることができますsoap:wsdlのバインディングセクション。 wsdl2javaツールは上記のように@WebParam(header = true)注釈を生成します。 ... – bodtx

+0

WSDLはヘッダーの定義をサポートしています。また、ヘッダをプログラムで定義するwsdl-firstアプローチを見つけるのも一般的です – pedrofb

関連する問題