【Axis2】WSDLから クライアントを作成する

概要

WSDLから コードを自動生成し、Webクライアントを作成する
 => * wsdl2javaを利用する

前提条件

 * 以下のように環境を設定しておく
http://blogs.yahoo.co.jp/dk521123/31944955.html
 * 以下を行い、サービスを立ち上げておくこと
http://blogs.yahoo.co.jp/dk521123/31984636.html

wsdl2javaコマンドオプション

-uri ... WSDLドキュメントの場所(リモートURLでも、ローカルファイルのパスでも可)
-s  ... 同期コードの生成
-o  ... 出力先を指定する。

■オプション
-u  ... 生成時にソースを別にする

詳細は下記の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/33842530.html

大まかな手順

 [1] wsdl2javaコマンドにより、クライアント側スタブを生成する
 [2] Javaプロジェクトを作成し、手順[1] のファイルを追加する
 [3] Axis2のjarファイルを追加
 [4] mainメソッドを実装し、ビルドする

手順・詳細

[1] クライアント側スタブを生成

コマンド構文

wsdl2java.bat -uri [wsdlのアドレス] -s -o [出力先]

コマンドプロンプトで以下を実行
cd C:\pg\axis2-1.6.2\bin
wsdl2java.bat -uri http://localhost:8080/Axis2Sample/services/HelloWorld?wsdl -s -o outclient

例2

コマンドプロンプトで以下を実行。事前にXSDLファイル「HelloWorld.xsdl」を「C:\pg\axis2-1.6.2\bin」に保存しておく。また、ソースを別々にしている
cd C:\pg\axis2-1.6.2\bin
wsdl2java.bat -uri HelloWorld.xsdl -u -s -o outclient

出力結果(スタブ)

build.xml         :Ant用ファイル
srcフォルダ       :スタブコード

[2] プロジェクトにスケルトンコードを追加

 [2-1] Eclipseで、「File]-[New]-[Java Project]でプロジェクトを追加(「HellowWorldClient」とする)
 [2-2] 追加したプロジェクト「HellowWorldServer」を右クリックし、[Import]-[General]-[File System]を選択
 [2-3] Browseボタン押下し、wsdl2javaコマンドより生成したファイルを追加(例の場合「C:\pg\axis2-1.6.2\bin\outclient」)
 [2-4] 「Select All」ボタンを押下し、全てを選択(build.xml含む)し、「Finish」ボタン押下

[3]Axis2のjarファイルを追加

 [3-1] C:\pg\axis2-1.6.2\libをEclipseの「HellowWorldClient」にドラッグ&ドロップ
 [3-2] プロジェクト「HellowWorldClient」を右クリックし、[Propaties]-[Java Build Path]-[Libralies]で
    「Add External JARs」で手順[3-1]で追加したjarファイルを全て追加する

[4]mainメソッドを実装し、ビルドする

 [4-1] mainメソッド用のクラスファイル(仮に「HelloWorldClient.java」)を追加する
 [4-2] mainメソッドを実装する(下記「サンプル」を参照のこと)
 [4-3] build.xmlを右クリックし、[Run As]-[Ant Build]を選択し、ターゲットを「jar.server」にして「OK」ボタン押下で、ビルドする
 [4-4] HelloWorldClientを右クリックし、[Run As]-[Java Application]を選択
 → コンソールには「Hello, Bob」が表示される

サンプル

HelloWorldClient.java

package demo.webservices;

public class HelloWorldClient {

  public static void main(String[] args) {
    try {
      HelloWorldStub stub = new HelloWorldStub(
                           "http://localhost:8080/Axis2Sample/services/HelloWorld");
      HelloWorldStub.SayHello request = new HelloWorldStub.SayHello();
      request.setName("Bob");
      HelloWorldStub.SayHelloResponse response = stub.sayHello(request);
      System.out.println(response.get_return());
    } catch (Exception ex) {
      ex.printStackTrace();
      System.err.println("\n\n");
    } finally {
    }
  }
}

トラブルシューティング

 * SSL通信時でのエラー

「AxisFault: Connection has been shutdown: javax.net.ssl.SSLHandshakeException」が表示

http://blogs.yahoo.co.jp/dk521123/33014445.html


関連記事

Antで、WSDLファイルからソースの自動生成(クライアント・サーバー)を行う
* 自動生成するのにいちいちコマンドを入力するのは面倒なのでAntを使用するための記事
http://blogs.yahoo.co.jp/dk521123/34445295.html
Axis2 の自動生成のコマンドオプション - WSDL2Java / Java2WSDL -
http://blogs.yahoo.co.jp/dk521123/33842530.html
WSDL について ~知識編~
http://blogs.yahoo.co.jp/dk521123/folder/735280.html
WSDLから Webサービス/クライアントを作成時に発生したトラブル
http://blogs.yahoo.co.jp/dk521123/32009389.html

クライアント関連

WSDLから クライアントを作成する
http://blogs.yahoo.co.jp/dk521123/31984636.html
Axis2 で、クライアント・スタブから、Cookie を設定する
http://blogs.yahoo.co.jp/dk521123/33122558.html
Axis2 のクライアント・スタブで、タイムアウト時間を変更するには...
http://blogs.yahoo.co.jp/dk521123/33139822.html