【XML】【Axis2】WSDL について ~知識編~

WSDL : Web Services Description Langurage

 * Web Services Description Langurage : Webサービス記述言語
 * Webサービスの定義を行うXML文書
 * 以下の事項を定義してある
 [1] Webサービスが、どこにあるのか
 [2] Webサービスが、どんなフォーマットのメッセージを使って利用するのか
 [3] Webサービスが、どんな通信プロトコルを使ってメッセージをやり取りするのか

利点

 * 開発ツールにWSDL文書を読み込ませることによって、Webサービスを呼び出すモジュールのコードを自動生成できる
 →Axisには、WSDLからWebサービス・クライアント用のクラスを自動生成する機能が用意されている
 →WSDLからJavaのクラスを生成するには、「WSDL2Java」というツールを使う

用語

スタブ

クライアント側のインターフェイス

ケルト

サーバ側のインターフェイス

WSDL構成要素

http://www.atmarkit.co.jp/ait/articles/0301/23/news001_3.html
の「WSDLファイルの構造」が分かりやすい。
http://www.atmarkit.co.jp/ait/articles/0305/14/news001.html
http://www.atmarkit.co.jp/ait/articles/0303/18/news003.html
も見ておくといいかも。

 * WSDLファイルは大きく5つの部分に分かれている

(0) 全体の構造

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
  xmlns:apachesoap="http://xml.apache.org/xml-soap"
  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns="">http://schemas.xmlsoap.org/wsdl/">

  【(1)-(4)を記述】

</wsdl:definitions>

 * wsdl:definitions要素
   => WSDL文書の最上位要素

(1) メッセージ定義

 * SOAPでやりとりされるメッセージ (message)の種類とそのデータ型 (types)を定義
 * wsdl:types要素
   => メッセージのフォーマットを定義する際に使用する型を定義する。

(2) ポートタイプ定義

 * ポートタイプ (portType)には、抽象操作のセットを定義
 *(1)で定義されたメッセージがどのような操作(operation)があるかを定義
 * 操作(operation)には、入力(input)と出力(output)になっているを定義

(3) バインディング定義

 * (1)(2)の機能がの具体的なプロトコルデータ形式を定義
 * 種類は「RPC指向(リモート・プロシージャ型)」「document指向(文書)」がある

(4) サービス定義

 * ポート(port)は、(3)で定義したバインディング情報を持つWebサービスがどのURLにて利用できるかを定義
 * サービス (service)は、関連するポートを集約したもの


関連記事

Javaソースから WSDL を 自動生成 する

http://blogs.yahoo.co.jp/dk521123/34495744.html

WSDLファイルから独自例外作成し、その例外をキャッチする

http://blogs.yahoo.co.jp/dk521123/34666754.html

XSD (XML Schema Definition / XMLスキーマ定義) ~知識編~

http://blogs.yahoo.co.jp/dk521123/6745945.html