2017-01-15 8 views
1

Apache CXF Mavenプラグインの目標wsdl2javaを使用してWebサービスクライアントを生成しようとしています。私はWSDL URLリンクを持っていますが、Mavenプラグインを使用している場合、ソースを生成していません。サンプルWSDLリンクはhttp://www.webservicex.com/globalweather.asmx?WSDLです。オンラインWSDL URLリンク用のCXF wsdl2javaを使用してWebServiceクライアントを生成する方法

<properties> 
     <src.generated.dir>src/main/java</src.generated.dir> 
     <artifact.cxf.version>3.1.6 </artifact.cxf.version> 
     <xerces.version>2.11.0</xerces.version> 
     <inbound.wsdl>http://www.webservicex.com/globalweather.asmx?WSDL</inbound.wsdl> 
     <inbound.wsdl.location>http://www.webservicex.com/globalweather.asmx?WSDL</inbound.wsdl.location> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.cxf</groupId> 
       <artifactId>cxf-codegen-plugin</artifactId> 
       <version>${artifact.cxf.version}</version> 
       <executions> 
        <execution> 
         <id>generate-sources</id> 
         <phase>generate-sources</phase> 
         <configuration> 
          <sourceRoot>${src.generated.dir}</sourceRoot> 
          <defaultOptions> 
           <noAddressBinding>true</noAddressBinding> 
           <faultSerialVersionUID>3105839350746982386</faultSerialVersionUID> 
          </defaultOptions> 
          <wsdlOptions> 
           <wsdlOption> 
            <wsdl>${inbound.wsdl}</wsdl> 
            <wsdlLocation>${inbound.wsdl.location}</wsdlLocation> 
            <serviceName>webservicex</serviceName> 
            <extraargs> 
             <extraarg>-client</extraarg> 
             <extraarg>-verbose</extraarg> 
             <extraarg>-p</extraarg> 
             <extraarg>http://webservicex.ent.com/arm/=com.ent.webservicex.arm</extraarg> 
            </extraargs> 
           </wsdlOption> 
          </wsdlOptions> 
         </configuration> 
         <goals> 
          <goal>wsdl2java</goal> 
         </goals> 
        </execution> 
       </executions> 
       <dependencies> 
        <dependency> 
         <groupId>xerces</groupId> 
         <artifactId>xercesImpl</artifactId> 
         <version>${xerces.version}</version> 
        </dependency> 
       </dependencies> 
      </plugin> 
     </plugins> 
    </build> 

答えて

1

この問題は、WSDLファイルへのHTTPリンクの使用には関係しません。 CXF codegenのプラグインが返すエラーは次のとおりです。

ませサービスはWSDLで見つからなかった:webservicex

http://www.webservicex.com/globalweather.asmx?WSDLでホストされているWSDLのみGlobalWeatherという名前の単一のサービスを持っているので、これは正常です。 webservicexというサービスはありません。 WSDL corresponds to a wsdl:service elementのサービス定義、およびあなたがWSDLに覗いた場合、あなただけのこのように、あなたは

<serviceName>GlobalWeather</serviceName> 

、あるいは完全にパラメータを省略するあなたのCXFの設定を変更する必要があり

<wsdl:service name="GlobalWeather"> 
    <!-- ... --> 
</wsdl:service> 

が表示されますプラグインが自動的に生成させるようにします(サービスは1つだけなので)。


それは変わらないのがベストでしょう、あなたの現在の構成を持つ他の関連する注記があります。

  • を決して、これまでは、それが現在で行われているように、メインのソースディレクトリsrc/main/java内のコードを生成し、

    <src.generated.dir>src/main/java</src.generated.dir> 
    

    生成されたコードは常にビルドディレクトリ(デフォルトではすなわちtarget)の下に配置する必要があります。これは、生成されたコードが実際のソースファイルではないため、バージョンコントロールでチェックインしないでください。デフォルトでは、これはプラグインが行っているもので、target/generated-sources/cxfにコードを生成しています。そのため、<sourceRoot>${src.generated.dir}</sourceRoot>を削除するだけです。また、生成されたソースコードをソースフォルダとして自動的に追加するので、すべてがコンパイルされます。

  • プラグインが機能するためには、xerces依存関係は必要ありません。プラグインの<dependencies>セクション全体を削除することができます。

  • <wsdlLocation>パラメータはありませんので、削除することもできます。何もしません。

関連する問題