「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