2011-02-02 12 views
2

Webサービスクライアントの作成方法を理解できません。 ストーリーは、私がWebサービスを呼び出す必要があるということです。私はそれを理解するので、私は何とかWebサービスの正しいクラスを取得するためにWebサービスを消費する必要があります。WSDLの消費 - どのツールを使用するのですか?

私はこれを行うためのさまざまな方法を調査しました。私はスクリプトでそれらを消費し、次にクラスをインポートしようとしました。

しかし私が既にMaven-2を使用しているので、私はMaven-plugin wsdl2codeを使ってみることを勧めました。これを行うと、私はそれを見るように多くのジャンクファイルを作成します。 I私のpom.xmlファイルに次のように追加しました:これは、ファイルを正常に作成しますが、言ったように、ジャンクたくさんのファイル( xmlsoap /スキーマ/石鹸/エンコーディングは/ ...)もあります

<plugin> 
    <groupId>org.apache.axis2</groupId> 
    <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>wsdl2code</goal> 
      </goals> 
      <configuration> 
       <packageName>ws.client.test</packageName> 
       <wsdlFile>http://localhost:8088/test?WSDL</wsdlFile> 
       <databindingName>xmlbeans</databindingName> 
       <outputDirectory>target/ws/test</outputDirectory> 
      </configuration> 
     </execution> 
     </executions> 
</plugin> 

少なくとも私が試した他のWSDLのコンサムよりも(私が見ているように)使用しないためのファイルがたくさんあります。

質問

  • Webサービスを利用する方法に 一般的なガイドラインはありますか? WSDL ファイルが外部にあるので、それはまた 変化する可能性があり、そしてそのための私はそれが( WSDLが突然変更された場合は が...他の副作用があるでしょうが)、これはMavenの中に自動的に を行って良好な可能性があり を考えました。

  • wsdl2codeが良い選択である場合は、すべてのファイルは常にそう
    MVNクリーン実行するとき、彼らは削除されることを目標catalougeに作成する必要がありますか)?

  • 他に適しているツールはありますか?

更新/編集
例えばJAX-WSのwsimportのを使用することで、私は私が望む生成されたファイルを取得します。 しかし、これらを/ target-folderに作成することで、私は実際にWebサービスを呼び出すために同じプロジェクトでそれらにアクセスしたいと思います。これは可能ですか?

答えて

3

java-1.6をお持ちの場合は、jax-wsを使用することができます(非常に使いやすいオンボードのJavaツールを使用できます)。追加の依存関係なしで使用できるWebサービスクライアントを作成する良いmavenプラグインがあります。ご覧くださいhttp://jax-ws-commons.java.net/jaxws-maven-plugin/

詳細なウォークスルーについては、http://blogs.oracle.com/enterprisetechtips/entry/using_jax_ws_with_mavenを参照してください。

+0

ありがとう! wsimportが私の仕事をしているようだ。これは私のために別の問題を提起しました。アイデアがあれば投稿を更新しました。 – user373455

+0

同じプロジェクトや依存しているプロジェクトで問題なく呼び出しても問題ありません。m2eclipseを使用している場合は、余分なプロジェクト構成プロジェクトが必要になります。または、source lookupパスにtarget/generated-sources/wsimportを手動で入れてください。いずれにしても、Maven自体は問題なくプロジェクトを構築する必要があります。 – mglauche

1

CXF wsdl2java pluginを試すことができます。混乱を避けるために、生成されたソースを別のソースフォルダに保存することも良い考えです。最後に設定は次のようになります。

 <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>2.3.0</version> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <sourceRoot>src/main/generated</sourceRoot> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>src/main/resources/your-service.wsdl</wsdl> 
          </wsdlOption> 
         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.4.1</version> 
      <executions> 
       <execution> 
        <id>auto-clean</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <filesets> 
        <fileset> 
         <directory>src/main/generated</directory> 
         <includes> 
          <include>**/*.java</include> 
         </includes> 
         <followSymlinks>false</followSymlinks> 
        </fileset> 
       </filesets> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <version>1.5</version> 
      <executions> 
       <execution> 
        <id>add-source</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>src/main/generated</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

ありがとう!結局私はwsimportを使うことを選んだ。別のソースフォルダに保存してもらっていただきありがとうございます。 – user373455

関連する問題