JAX-WSで簡単Webサービスクライアント

今回はWebサービスクライアントの簡単な作成方法について。
Webサービスクライアントの作成方法については結構Web上にも情報はあるんだけど、情報過多だったり特定のIDEを使った方法であったりと…ちょっと分かりづらいなと思ったので簡単にまとめる。

対向のWebサービス
apache CXF+SpringでWebサービス作成時にWSDLを分離しない方法 - ITエンジニアとして生きる
で紹介したものを使用する。

では早速Webサービスクライアントの作成に入る。

package org.ws.sample.stub.client;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import org.ws.sample.stub.service.StubService;

public class StubClient {

	public String execute(String data) throws MalformedURLException {

		URL url = new URL("http://localhost:8888/webapp/ws/StubService?wsdl");
		QName qname = new QName("http://impl.service.stub.sample.ws.org/",
				"StubService");

		Service service = Service.create(url, qname);
		StubService stub = service.getPort(StubService.class);

		return stub.stubMethod(data);
	}
}

はい、コレだけ。
欲しい情報としては

  • WSDLのURL
  • ターゲットネームスペース
  • サービス名
  • SEI(サービスエンドポイントインタフェース)クラス

の4つ。
それぞれ

WSDLのURL

URL url = new URL("http://localhost:8888/webapp/ws/StubService?wsdl");

◆ターゲットネームスペース
◆サービス名

QName qname = new QName("http://impl.service.stub.sample.ws.org/",
				"StubService");

◆SEI(サービスエンドポイントインタフェース)クラス

StubService stub = service.getPort(StubService.class);

が該当の箇所。


あとはこんな感じで実行すれば動作確認ができる。

StubClient client = new StubClient();
String result = client.execute("test data...");
System.out.println(result);