Webサービス相互運用性 (2)
Webサービスの互換性を検証するテストツール
Webサービスの相互運用性を向上させる目的で設立された「WS-I」から、2003年8月にBasic Profile 1.0が公開された。さらに相互運用ガイドラインへの適合性を検証するテストツールがWS-Iから提供されている。このテストツールの開発(国際化)に参加した筆者により基本的な使用方法を解説する。(編集局) |
株式会社ビーコンIT
岩本 幸男
2003/9/20
|
WS-IのBasic Profile 1.0、interoperability guidelineに適合した製品に与えられるWS-Iロゴ |
Webサービスのブームは高まる一方だが、ユーザーへの普及速度は当初の思惑に反し、かなり緩やかに見える。要因はさまざまだが、やはりユーザーが安心してWebサービスを採用するためには、各メーカーやベンダの提供する製品およびカスタムメイド・アプリケーション間での、高い相互運用性(インターオペラビリティ)を確保する必要がある。
このニーズを受け、2002年2月に米国を拠点とし、Webサービスを推進する主要ベンダによりWS-I(Web Services Interoperability Organization)が設立され、本年8月12日には、Webサービスの相互運用性を保証することを目的とした、Webサービスの仕様の実装範囲や解釈などをより厳密に行うための枠組みとしてBasic Profile 1.0がリリースされた(前回記事「WS-I:Webサービス互換性の実現に向けて」参照)。
本稿で解説するWS-Iテストツールは、WebサービスがWS-I Basic Profile 1.0のinteroperability guidelineに適合しているかどうかを検査するためのツールと位置付けられて提供されるものである。WS-Iテストツールは、Testing Tools and Materialsワーキンググループによって策定され、成果物としてテストツールと関連するドキュメント類が公開されている。執筆時点(2003年9月)ではWS-IのサイトにBeta Release 3 (v0.96)が公開されており、本稿ではそれを基に解説を行う。まもなくリリース版とともにテストツールのソースも公開される予定である。
|
このテストツールは、WebサービスがWS-I Basic Profile 1.0のinteroperability guidelineに適合しているかどうかを検査するツールであるが、検査の対象範囲は、HTTPトランスポート層を流れるメッセージと、そのWebサービスに関連するUDDI登録情報およびWSDL記述に限定される。つまり、サービスの実装形態やプラットフォーム関連ツール自体(例えばアプリケーション・サーバなど)の検査を行うわけではないところに注意が必要である。また、現在のところトランスポート層はHTTPに限定され、またSSLなどのセキュリティ仕様に関してはサポートされていない。
さて、図1のように、テストツールはモニターツール(Monitor)と解析ツール(Analyzer)の2つの機能により構成されている。
図1 WS-IテストツールはMonitorとAnalyzerから構成される |
■モニターツール(Monitor)
通常のリクエスタとWebサービス間は直接メッセージの交換を行うが、Monitorは、図1のようにリクエスタとWebサービスの間にプロキシのように割り込む形態をとる。例えば、平常時にリクエスタとWebサービスがport8080を使用して通信しているのであれば、リクエスタの使用するportを4040などに変更し、Monitorを疑似サービスとしてport4040で起動し本物のWebサービスの代理としてリクエスタと通信させ、一方で本物のWebサービスに対しては、port8080でMonitorがリクエスタの代理として通信を行う。Monitorは、このようにリクエスタとWebサービスの間に入り込むことにより、2者間で交換されるメッセージをインターセプトし、外部ログファイルへと書き出す。一言でいえば、Monitorの機能はリクエスタからWebサービス、そしてWebサービスからリクエスタへのメッセージを収集してログファイルを出力することである。
■解析ツール(Analyzer)
Monitorにより収集されたメッセージログは、次のステップとして、Analyzerにより解析される。Analyzerは、WebサービスがWS-I Basic Profile 1.0のinteroperability guidelineに適合しているかどうかを検査するために、Monitorにより収集されたメッセージログと、Webサービスで利用されたregistration (UDDI登録情報)およびdescription (WSDL記述)をTest Assertion Documentにより評価し、分析結果をレポート(図2)として出力する。このレポートは、かなり詳細な分析結果と、Test Assertion DocumentのもとになったWS-I Basic Profile 1.0への対応も示してくれる。つまりAnalyzerから出力されたレポートを見れば、WS-I Basic Profile 1.0のどの項目に違反したかが瞬時に判断可能であり、開発者にとっては効率よくWS-I Basic Profile 1.0準拠のサービスを構築する手助けになる。
図2 Analyzerによる分析結果のレポート |
なお、これらテストツール(MonitorおよびAnalyzer)はC#版とJava版の両方が提供されている。本稿ではJava版を例に解説を進めるが、C#版でも最終的なレポートは基本的にJava版と同様と考えていただいてよい。
|
Java版WS-Iテストツールの稼働に最低限必要な環境は Java2 Runtime Environment release 1.3.1またはそれ以上である。なお本稿は次の環境で実施している。
- ハードウェア:IBM ThinkPad X31/Pentium M プロセッサ 1.40GHz/512Mbytesメモリ
- OS:Windows XP Professional
- Java2 Runtime Environment、Standard Edition 1.4.1_02
- Apache Tomcat 4.1.24
- Axis Release 1.0
■テストツールのダウンロード
WS-IのWebサイトのImplementation ToolsページからJava版テストツールをダウンロードする。
- WSI-Test-Java-0.96-bin.zip (3,490Kbytes)
Zipファイルを解凍すると以下のようなディレクトリが展開される。
解凍されたテストツールのディレクトリ構成 |
wsi-test-tools README.txt LICENSE.txt (WS-Iライセンス) wsi-test-tools\common docs (User's Guide、MonitorSpecification、AnalyzerSpecification) profiles (BasicProfileTestAssertions.xml) schemas (すべてのXML schema documents) xsl (すべてのXSL files) wsi-test-tools\java releaseNotes.txt (Java release notes) bin (batch files and shell scripts) lib (wsi-test-tools.jar、prereq Jar files) licenses (licenses for prereq Jar files(Apache、etc.)) samples (Java specific samples(log.xml、report.xml)) |
■実行環境の設定
\wsi-test-tools\java\binにある、setenv.batを実行環境に合わせて修正する。
|
■Monitor 起動バッチファイル設定
\wsi-test-tools\java\binにある、Monitor.batを実行環境に合わせて修正する。
■Monitor Configurationファイルの設定
\wsi-test-tools\java\samplesにある、monitorConfig.xmlを実行環境に合わせて修正する。
下記の設定は、リクエスタからのport4040のリクエストをMonitorがインターセプトし、ローカルマシン上のport8080で起動しているWebサービスへリダイレクトすることを示している。
<wsi-monConfig:redirect> |
さて、環境設定がひととおり完了したら、早速試してみる。すでにWebサービスとリクエスタがあるのであれば、リクエスタに設定されるWebサービスのport番号をmonitorConfig.xmlで設定したport番号へ変更するだけでよい。
適当なWebサービスがなければ、下記のような簡単なWebサービスとリクエスタを用意する必要がある。本稿で使用するWebサービスとリクエスタは下記のとおり。
|
|
WSDL記述
WSDLはAxisで提供されるJava2WSDLコマンドを使用して生成した。
UDDI登録情報
本稿では、UDDIは使用していない。User's Guideを参考に各自トライしていただきたい。
■ログの採取を開始
準備が完了したら、次の手順でリクエスタとWebサービス間のログを採取する。
Step1
Webサービスを開始する。
Step2
Monitorを起動する。Monitorは起動後、バージョン・メッセージに続いてConfiguration情報を表示し、待機状態になる(図3)。
図3 Monitor起動 |
Step3
リクエスタを実行する。
Step4
リクエスタ終了後、Monitorコンソールから“exit”コマンドを入力し、Monitorを停止する。Monitorを停止しない場合、ログファイルが正しくクローズされないので、Analyzerによる分析を行う前には必ず停止しなければならない。
Step5
Monitorログの確認を行う。ログファイルはlog.xmlの名称で格納される。WS-I Testing Tools Log
Fileは図4のとおり「Monitor Tool Information」と「Log Entries」の2つのセクションから構成される。
図4 Monitorによるログファイル(log.xml) |
Monitor Tool Informationセクションには、Monitorツールのバージョン情報のほか、稼働プラットフォーム環境およびMonitor設定情報が出力される。
Log Entriesセクションには、インターセプトされたメッセージの一覧に続き、それぞれのメッセージについて、HTTPヘッダ情報および実際のSOAPメッセージが順に出力される。なお、本稿で使用したWebサービスはrequest/response型のMessage Typeのため、Entry:1のMessage Typeはrequest、Entry:2のMessage Typeはresponseとなる。
■Entry:1(request)
|
■Entry:2(response)
|
次ページでは、いよいよAnalyzerを実行して、問題個所の発見と原因究明の手順を紹介する。
1/2 |
Index | |
Webサービスの互換性を検証するテストツール(1/2) ・WS-Iテストツールの背景 ・WS-Iテストツールの概要 ・WS-Iテストツールのインストール(Java版) ・Monitorの実行 |
|
Webサービスの互換性を検証するテストツール(2/2) ・Analyzerの実行 ・テストツールの位置付けと意義 |
■「Webサービス相互運用性」
バックナンバー
1. WS-I:Webサービス互換性の実現に向けて
2. Webサービスの互換性を検証するWS-Iテストルーツ
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|