Axis2 で SOAP クライアントの作成

Axis2SOAP クライアントを作成してみたので、その時のメモ。

[ 環境情報 ]
Windows 7 SP1
Java SE 7
Apache Axis2 1.6.1

環境変数AXIS2_HOME を設定しておきます。

使用する Web サービスは以下のエントリーで作成したものにします。

・「WebサービスAxis2 の環境に Web サービスを登録する - プログラム日記
http://a4dosanddos.hatenablog.com/entry/2013/11/27/012859


1. スタブの作成

wsdl2java を wsdl を公開している URL を引数に指定して実行する。

wsdl2java -uri http://***.***.***.***:8080/axis2/services/Axis2Sample?wsdl

すると、src というフォルダと build.xml が生成される。src 配下にある今回で言えば "org.apache.ws.axis2.Axis2SampleStub" がスタブになります。


2. クライアントコードの作成

以下の感じです。

package org.apache.ws.axis2;

public class Client {
	public static void main(String[] args) throws Exception {
		Axis2SampleStub stub = new Axis2SampleStub("http://***.***.***.***:8080/axis2/services/Axis2Sample");
		
		Axis2SampleStub.Hello req1 = new Axis2SampleStub.Hello();
		Axis2SampleStub.HelloResponse res1 = stub.hello(req1);
		System.out.println(res1.get_return());
		
		Axis2SampleStub.GetUpperString req2 = new Axis2SampleStub.GetUpperString();
		req2.setArgs0("abcde");
		Axis2SampleStub.GetUpperStringResponse res2 = stub.getUpperString(req2);
		System.out.println(res2.get_return());
		
		Axis2SampleStub.Add req3 = new Axis2SampleStub.Add();
		req3.setArgs0(1);
		req3.setArgs1(2);
		Axis2SampleStub.AddResponse res3 = stub.add(req3);
		System.out.println(res3.get_return());
	}
	
}

※ クライアントコードの作成ですがスタブのコードが大きくて読むのが大変です。Eclipse とか使った方が楽だと思います。


3. コンパイル

javac -cp ".;%AXIS2_HOME%\lib\*" org\apache\ws\axis2\*java


上記で SOAP クライアントの作成完了。以下の感じの出力が得られればとりあえず成功かと思います。

java -cp ".;%AXIS2_HOME%\lib\*" org.apache.ws.axis2.Client
hello
ABCDE
3

※ パケット見ると SOAP 通信の内容が確認できます。


ドキュメントとか見てるとスタブ使わずにやる方法とかありそうだけど ( 完全に妄想です・・・ )、今日はここまでで。

以上です。