【Axis2】WSDLから Webサービスを作成する

概要

WSDLから コードを自動生成し、Webサービスを作成する
 => * wsdl2javaを利用する

wsdl2javaコマンドオプション

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

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

-p  ... 生成したコードに対して独自のpackage名を指定
-ns2p  ... WSDLスキーマ内の特定の各namespaceに対して、独自のpackage名を指定
-ssi   ... サービスの実装に対して、インターフェースを生成(XxxxxxSkeletonInterface.java)

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

補足:スケルトンについて

http://blogs.yahoo.co.jp/dk521123/31950737.html
より抜粋

 * スケルトン : サーバ側のインターフェイス

大まかな手順

 [1] wsdl2javaコマンドにより、サーバ側スケルトンを生成する
 [2] Javaプロジェクトを作成し、手順[1] のファイルを追加する
 [3] スケルトンを実装し、ビルドする
 [4] AARファイルをアップロードする

手順・詳細

[0] 前提条件:環境設定

 * 以下のように環境を設定しておく
http://blogs.yahoo.co.jp/dk521123/31944955.html

[1] サーバ側スケルトンを生成

コマンド構文

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

例1

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

例2

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

出力結果(スケルトン)

build.xml         :Ant用ファイル
srcフォルダ       :スケルトンコード
resourcesフォルダ :WSDLファイルのコピー

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

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

[3]スケルトン「XxxxSkeleton.java」を実装し、ビルドする

 [3-1] スケルトン「XxxxSkeleton.java」を実装する(下記「サンプル」を参照のこと)
 [3-2] パッケージ名「HellowWorldServer」を右クリックし、[Propaties]-[Java Build path]-[Libraries]-[Add External JARs]で「C:\pg\axis2-1.6.2\lib」配下のJarファイルを全て追加する
 [3-3] build.xmlを右クリックし、[Run As]-[Ant Build]を選択し、ターゲットを「jar.server」にして「OK」ボタン押下で、ビルドする
  →ビルドが正常に完了した場合、「HellowWorldServer\build\lib」にAARファイル「HelloWorld.aar」が作成できている

サンプル

HelloWorldSkeleton.java

/**
 * HelloWorldSkeleton.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis2 version: 1.6.2  Built on : Apr 17, 2012 (05:33:49 IST)
 */
package demo.webservices;
/**
 *  HelloWorldSkeleton java skeleton for the axisService
 */
public class HelloWorldSkeleton implements HelloWorldSkeletonInterface{

    /**
     * Auto generated method signature
     * 
     * @param sayHello0 
     * @return sayHelloResponse1 
     */
     public demo.webservices.SayHelloResponse sayHello(demo.webservices.SayHello sayHello0)
     {
          // 自分で追加したコード/ここから
          demo.webservices.SayHelloResponse response = new demo.webservices.SayHelloResponse();
	  response.set_return("Hello, " + sayHello0.getName());
	  return response;
          // 自分で追加したコード/ここまで
     }
}

[4]AARファイルをアップロードする

 [4-1] 以下からWARファイル(WAR Distribution)をダウンロードし、
    Tomcatの「【TOMCAT_HOME】/webapps」に置く
http://axis.apache.org/axis2/java/core/download.cgi
 [4-2] Tomcatサーバを立ち上げ、以下をブラウザで表示する
[http://localhost:8080/axis2/]
 [4-3] 「【TOMCAT_HOME】/webapps/axis2/WEB-INF/services」配下に
    [3-3]で作成したAARファイル「HelloWorldService.aar」を置く

■サーバが遠隔の場合
 [4-3'] リンク「Administration」を押下
 [4-4'] Username/Password を入力し、「Login」ボタン押下
  * デフォルトの場合「Username:admin」「Password :axis2」
  * C:\pg\axis2-1.6.2\conf内にある「axis2.xml」内に記載されている
 [4-5'] リンク「Upload Service」を押下
 [4-6'] 「ファイルを選択」ボタンを押下し、手順[3-2]で作成したAARファイルを追加する
 [4-7'] 「Upload」ボタンを押下
  →成功した場合「File HelloWorld.aar successfully uploaded」が表示される

[5]動作確認

 [5-1] 以下をブラウザで表示する
[http://localhost:8080/axis2/services/HellowWorld/sayHello?name=Mike]


関連記事

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/31950737.html

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

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

WSDLから Webサービス/クライアントを作成時に発生したトラブル

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