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);