SOAP/WSDLについての概要&クライアント作成手順(2007/08/14(火) 02:21:15)
最近SOAP/WSDLについての仕事ばかりやってたのでメモ。
SOAP
SOAP通信はHTTP、FTP、SMTPなどのプロトコルを使ってWebサービスを呼び出すもので、
通信にはXML文書が用いられる。
サーバとクライアント双方がSOAPを生成・解釈するためのエンジンを
持つことにより、異なる環境間での通信が容易になる。
また、HTTP等による通信なので企業間で利用する場合でもファイアウォールなどを
安全に通過することができ、B2Bでの通信に向いている。
WSDL(良くWDSLといい間違える)
XMLを用いてWebサービスが記述されたもの。
Webサービスのアドレスの最後に『?wsdl』と追加すると閲覧、使用することができる。
Apache Axisや.Net等を使用することで、WSDLからスタブ(WebサービスのSOAP通信の部分等・・)を自動生成することができ、
XMLやSOAPを意識することなく、簡単にクライアントが作成できる。
Apache Axisでのスタブ自動生成
java org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/services/Webservice?wsdl
のように、ローカルなファイルからだけでなく、直接Web上のWSDLを指定してスタブを生成することもできる。
Apache Axisに付属のEchoHeadersサービスのJavaでの例
まずスタブを作成する
(Tomcat5.5のデフォルト設定ででAxisをデプロイした場合はこうなる?)
http://localhost:8080/axis/EchoHeaders.jws?wsdl
クライアントのソースを書く
import localhost.axis.EchoHeaders_jws.*; import javax.xml.rpc.ServiceException; import java.rmi.RemoteException; public class EchoHeadersClient { public static void main(String[] args) throws ServiceException, RemoteException{ EchoHeadersService service = new EchoHeadersServiceLocator(); EchoHeaders eh = service.getEchoHeaders(); System.out.println(eh.echo("Hellow SOAP!")); } }
実行結果
Hellow SOAP!
Apache Axisに付属のEchoHeadersサービスのC#.Netでの例
まずスタブを作成する
Web参照の追加メニューより、WSDLのアドレスを入力し、追加ボタンを押す。
クライアントのソースを書く
using System; using System.Collections.Generic; using System.Text; using EchoHeadersCSClient.localhost; namespace EchoHeadersCSClient { class Program { static void Main(string[] args) { EchoHeadersService eh = new EchoHeadersService(); Console.WriteLine(eh.echo("Hellow SOAP!")); } } }