「Axis」Web サービスのクライアントを作成する

以下のエントリーで作成した Web サービスを利用するクライアントを作ってみます。

・「Axis」Web サービスを登録する - プログラム日記
http://a4dosanddos.hatenablog.com/entry/2014/08/24/165249


さっそくいきます。

1. WSDL2Java を使用してスタブ等を生成する

作業ディレクトリは「/usr/local/tmp/java/axisTest/」とします。

mkdir -p /usr/local/tmp/java/axisTest/

パラメータに wsdl の URL を指定して WSDL2Java を実行します。

java -cp .:$AXIS_HOME/lib/* org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/services/TestService?wsdl

※ クライアントがリモートの場合は、パラメータの部分 localhost じゃなくて IP アドレスとかにしてやる必要がありそうです。生成されたスタブの中身みるとわかりますが、上記でやると「http://localhost:8080/axis/services/TestService」とハードコードされてました。

すると、以下の感じでスタブ等が生成されます。

ls _4/_1/_168/_192/axis/services/TestService
Test.java  TestService.java  TestServiceLocator.java  TestServiceSoapBindingStub.java


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

■ AxisClient.java

import _4._1._168._192.axis.services.TestService.*;

public class AxisClient {

  public static void main(String[] args) throws Exception{
    TestServiceLocator locator = new TestServiceLocator();
    Test test = locator.getTestService();

    String s1 = test.hello();
    System.out.println(s1);

    String s2 = test.greet("hoge");
    System.out.println(s2);

    int i = test.add(10, 20);
    System.out.println(i);
  }
}

※ "_4._1._168._192" って端末の IP アドレスになっちゃう・・・なんでや。


3. コンパイル、実行

コンパイルして実行する。

javac -cp .:$AXIS_HOME/lib/* AxisClient.java
java -cp .:$AXIS_HOME/lib/* AxisClient

以下の結果が得られます。ちゃんと実行できてますね。

hello
hoge greet
30


以上です。

[ 環境情報 ]
CentOS 6.2
Apache Tomcat 6.0.14
Apache Axis 1.4
Java SE 6 Update 14