南山大学 数理情報学部 情報通信学科 卒業研究 2004 年度卒業論文要旨集

非同期型 Web サービスに関する研究
2001MT021 服部 隆尚

2001MT066 森 晃

指導教員 青山 幹雄

1. はじめにクライアントA

現在 Web サービスは，組織間システム連携技術として注目されている．しかしビジネスプロセスの連携は多岐にわたり，多くの問題がある．なかでも Web サービスは，同期型であるため，長時間の処理や，一方向のサービス利用には適さない．本研究では，非同期型の Web サービスを提案，実装して，その有効性を評価する．

プロバイダB

メールサーバ

プロバイダC

Request Message １
Request Message 2
Response Message１

図 2： 非同期型 Web サービス

2. 同期型 Web サービスの問題点と解決策

3. 非同期型 Web サービスの実現

2.1. 同期型 Web サービスの問題点
同期型 Web サービスの多くは，トランスポートプロトコルに HTTP (HyperText Transfar Protocol)を使用した SOAP(Simple Object Access Protocol) over HTTP が使用される[1]．
クライアントは，図 1 に示すように，レスポンスメッセージが返信されるまで，実行を待ち合わせる．その間，待ち状態にあるクライアントは長時間，他の処理ができなくなる．同期型 Web サービスでは，サービスの形態によって長時間クライアントのリソースを消費する問題がおこる．さらに，同期型 Web サービスには，一方向のメッセージ送信ができない問題点もある．

3.1. SOAP over SMTP
SOAP メッセージを非同期で送信する場合，トランスポートプロトコルの選択が問題となる．本研究では以下の理由により SMTP(Simple Mail Transfar Protocol)を用いた
SOAP over SMTP を実現する．

クライアントA

プロバイダB

プロバイダC

Request Message １(1) 一方向のメッセージングが可能(2) 企業間などのファイアウォールを透過(3) 既存のメールサーバを使用可能
3.2. SOAP over SMTP による非同期メッセージング
SOAP over SMTP の非同期メッセージングを図 3 に示す
アーキテクチャで実現する[2]．サービスプロバイダにメールサーバを使用し，電子メールと同様にメールアドレスを指定して SOAP メッセージを送信する．
メールサーバResponse Message １

ネット
ワーク

Request Message 2

図 1： 同期型 Web サービス

プロトコルヘッダ

SOAP
メッセージ(メールヘッダ)
To:Service-a@xxx.org
From:aaa@yyy.org
Subject:

Web
サービス

・・・

2.2. 非同期型 Web サービスを用いた解決策
同期型 Web サービスの問題を，非同期型 Web サービスを用いて解決する方法を提案する．非同期型 Web サービ
スでは，図 2 に示すように，クライアントからの一方向型のリクエストメッセージ送信が可能である．そのため，レスポンスメッセージを待たず，次々にリクエストメッセージを送信できる．この結果，長時間の処理を必要とするサービスや，Web 上に通信網等の障害が発生してもクライアントが待ち状態にならない Web サービスを提供できると考える．

メールサーバSOAPエンベロープ
SOAPヘッダ

クライアントプログラム

SOAPボディリクエスタ

SOAPメッセージ

Webサービス
Web
サービス

プロバイダ

図 3：SOAP over SMTP による非同期メッセージング
3.3. SOAP メッセージの識別
SOAP メッセージの非同期での送受信は，一方向のみのメッセージングを行うためリクエストとレスポンスの対応関係を明確にし，メッセージを識別する必要がある．

南山大学 数理情報学部 情報通信学科 卒業研究 2004 年度卒業論文要旨集
メッセージの識別には，メッセージにユニークな ID を付加する方法が利用可能である．SOAP メッセージへ ID を付加する方法として以下の 2 つが考えられる．
(1) SMTP ヘッダへの Message-Id・In-reply-to の付加
SMTP ヘッダ部に Message-Id を付加して送信し，それに対応するレスポンスメッセージには，リクエストメッセージのMessage-Id の値を In-reply-to に付加して返信する．
(2) SOAP ヘッダへの ID 要素の付加
SOAPヘッダにID要素を定義し，レスポンスメッセージにはリクエストメッセージに付けられた ID を付加して返すことにより，リクエストとの対応関係を明確にする．
(2)の方法は，単体のリクエストに対して複数のレスポンスに同一の ID を付加するなどの，一対多の対応関係や，リクエスト/レスポンス以外の関連性のあるメッセージに対して対応関係を示すことが可能である．そこで，本研究では SOAPヘッダに ID 要素を付加する方法を用いる．

4. SOAP over SMTP の実装

Apache JamesMailet
ネット
ワーク

Axis
Axis Engine

SOAP over SMTP

Web
サービス

メール
サーバ

図 5：Apache Axis と Apache James によるメッセージング
4.2. Apache Axis を用いた非同期メッセージの送信
SOAP over SMTP で SOAP メッセージを送信するために
図 6 に示すように，クライアント側の Apache Axis に SMTP
用の TransportSender である SMTPSender を実装・配置した．
SMTPSender では，各Handler で処理された SOAP メッセー
ジのバインディングヘッダに SMTP ヘッダを付加して，メールサーバにリクエストメッセージを送信する処理を行う．
クライアントアプリケーションはリクエストメッセージを送信するときに，トランスポートに”smtp”を，宛先にプロバイダのメールアドレスを指定することで，SMTPSender を用いたSOAP メッセージの送信を可能にする．
HTTPSenderServiceGlobal

サーバ
Web

（HTTP用TransportSender）

Transport

SOAPoverHTTP

SOAP
overSMTP
Axis Client（Axis Engine）

Apache Axis （クライアント）

サーバ
SMTP

クライアントアプリケーション

4.1. Apache Axis を用いた SOAP over SMTP の実現方法
SOAP over SMTP を用いた非同期型 Web サービスを実現するために，Apache Axis を拡張して SOAP over SMTPを実装した．
Apache Axis は図 4 に示すように，メッセージの処理を行う Handler と，一連の Handler を纏めた 3 つの Chain で構成されている[3]．各 Chain は責任を分離し，独立した処理を行う．Apache Axis に SOAP over SMTP を実装するには，メッセージを送信するための処理を行う TransportSender と，受信したメッセージを Axis Engine に渡す TransportListenerを SMTP 用に変更することで実現できると考える．

メールサーバに届いたメッセージを受信し，AxisEngine に渡す方法を提案する[4]．

SMTPSender（SMTP用TransportSender）

クライアントアプリケーション：Chain：Handler

図 6：クライアント側のメッセージパス

Apache Axis (プロバイダ)
TransportListener

Axis Client（Axis Engine）

ネット ワー ク

Apache Axis (クライアント)

Webサービス

Axis Server（Axis Engine）：TransportSender(Handler)：Provider(Handler)

図 4：Apache Axis のアーキテクチャ
SOAP over HTTP では，TransportListener に HTTP サー
ブレットを使用しているが，SOAP over SMTP ではメールサーバ上で Axis Engine を起動しなければならないため，サーブレットは使用できない．そこで，本研究では図5 に示す
ように TransportListener に Apache James の Mailet を用いて，4.3. Mailet を用いた Web サービスプロバイダ
前節で説明した方法を用いて SOAP over SMTP で送信された SOAP メッセージを受信し，AxisEngine を起動してWebサービスを呼び出すために，図7 に示すように ApacheJames の Mailet を用いて，TransportListener に Apache Axis用の Mailet である AxisMailet を実装・配置した．
AxisMailet は，Apache James メールサーバに，Web サービス用のメールアドレス宛にメッセージが届いたときに起動するように Apache James の設定ファイルを変更することで，サーバが受信する他のメールと区別をする．
前節の SMTP 用 TransportSender の実装を含む，Apache
Axis への SOAP over SMTP の実装で作成した Java プログ
ラムのソースコードは，計 411 行となった．

南山大学 数理情報学部 情報通信学科 卒業研究 2004 年度卒業論文要旨集
リクエスタ
GlobalService
Provider

SOAPoverSMTP

AxisMailet（TransportListener）

Axis Server（Axis Engine）

サービス ︵ビジネスロジック︶
Web

Transport

ションに処理が戻らない状態となる．クライアントがサービス利用に必要とする時間 Ts は式(1)で定義できる．
Ts = T1 + Tp + T2

(1)

Tp : PS ファイルから PDF ファイルへの変換処理時間
T1 : SOAP over HTTP リクエスト送信時の遅延時間
T2 : レスポンス受信時の遅延時間

図 7：プロバイダ側のメッセージパス
4.4. WS-Routing を用いた SOAP ヘッダへの ID 付加
3.3 節で議論した SOAP メッセージへの ID の付加をWS-Routing を用いて実現する[5]．
WS-Routing にはメッセージを識別し，あるメッセージを他のメッセージに対応付けるid要素とreleaseTo要素が定義されている．この 2 つの要素を SOAP ヘッダに記述することでメッセージを識別する．
識別する ID の値には，可能な限りの一意性を持たせるために UUID(Universally Unique IDentifier)を用いる．

T1
Tp

Ts

T2

Tp

Ts

リクエスタ

5. PDF 変換サービスの試作と評価
SOAP over SMTP で送信される非同期型の Web サービスを用いることで，効率的なメッセージ送信を行うことができるかどうかを評価するために，プロバイダで長時間の処理を行うPDF変換サービスを同期型と非同期型の2つの方法で試作・実行し，Web サービスの動作の違い，効率等を比較した．
5.1. PDF 変換サービスの試作
PDF (Portable Document Format)変換サービスは，PS(PostScript)ファイルを PDF ファイルに変換するサービスである．クライアントは，PS ファイルをリクエストメッセージに添付してプロバイダに送信する．プロバイダは，受信した PSファイルを Adobe Acrobat Distiller に渡し，PDF ファイルに変換する．変換された PDF ファイルは SOAP over HTTP ではレスポンスメッセージに添付し，SOAP over SMTP ではリクエストで指定したアドレスへメールに添付して返信する．
PDF 変換サービスを試作するために実装した Java プログラ
ムのソースコードは，550 行となった．
5.2. 同期型・非同期型 Web サービスの動作比較
図8に同期型PDF変換サービスのシーケンス図を示す．
同期型 PDF 変換サービスでは，クライアントアプリケーシ
ョンから PS ファイルを送信すると TransportSender は SOAPメッセージを送信する．しかし同期型では，SOAP メッセー
ジの送信が完了しても，プロバイダで PDF 変換処理が終了し，PDF ファイルを受信するまでは，クライアントアプリケー

プロバイダ

図 8：同期型 PDF 変換サービスのシーケンス図
次に，非同期型 PDF 変換サービスのシーケンス図を図 9に示す．

T3

TaT4

Tp

TaTp

リクエスタ

プロバイダ

図 9：非同期型 PDF 変換サービスのシーケンス図
非同期型 PDF 変換サービスではクライアントアプリケーションから PS ファイルを送信すると SMTPSender が SOAPメッセージを送信する．ここで，非同期型は送信が完了すると直ちにクライアントアプリケーションに処理が戻される．プ
ロバイダ側で前のリクエストの PDF 変換処理が終了していなくても，連続して PS ファイルを送信可能となった．
非同期型でクライアントがサービス利用に必要とする時
間 Ta は式(2)で定義できる．

南山大学 数理情報学部 情報通信学科 卒業研究 2004 年度卒業論文要旨集
Ta = T3 + T4

(2)

T3 : SOAP over SMTP でリクエスト送信時の遅延時間
T4 : クライアントアプリケーションへ処理を返す時間以上のことから，同期型と非同期型 PDF 変換サービスの処理時間の差は式(3)の⊿t の値で求められる．
⊿t = Ts−Ta = (T1 + Tp + T2)−(T3 + T4)(3)

図 10 に，異なるサイズの 2 つの PS ファイルを PDF ファイルに変換したときのクライアントのサービス処理時間を示
す．2 つの PS ファイルの PDF 変換処理時間(Tp)は，Tp1 が約 7 秒，Tp2 は約 15 秒である．同期型のサービス処理時間は，全体の70%以上がTp であるため，Tp に大きく影響を受ける．一方，非同期型は Tp の影響を受けないので，利用回数が増加しても利用時間の増加量は少ない．このことから，サービスを利用する回数(n)と， Tp の増加により，同期型と非同期型の処理時間差⊿t が増大する．
PDF 変換サービスの評価結果から，非同期型 Web サー
ビスを用いることは，リクエスタのサービス処理時間を短縮し，効率の良いサービスの利用を実現できる有効な方法であることがわかる．
サービス処理時間(ミリ秒)

120000100000係を持つことができる．これにより，複数のリクエストを集計し結果を返すような，多重処理を行う Web サービスを実現することも可能である．
待ち状態を持たず，一方向型メッセージを行う非同期の特性を活かすことで，新たな Web サービスの利用形態にも対応が可能になると考える．

ネットワーク速度
１００Mｂｐｓ

7. 今後の課題
今後の課題としては，以下のような項目が挙げられる．
(1) 応答メッセージのポーリング
本研究では，一方向型の非同期型 Web サービスを実現した．しかし，非同期型Webサービスでも，レスポンスメッセージを期待する双方向型のメッセージ形態が考えられる．
今後は，双方向型のメッセージ形態にも対応するため，リクエスタに応答メッセージをポーリングして，メッセージを受信する機能を付加する必要があると考えられる．
(2) リクエストの認証
実際に非同期型の Web サービスを提供するためには，不正なサービスの利用を防ぐ方法が必要となる．例えばメッセージ送信時にサービスを利用できるユーザであるかどうかをユーザアカウントやパスワードで認証する方法が考えられる．

80000

8. まとめ

60000
40000
20000
0
同期 Tp1
同期 Tp2
非同期 Tp1
非同期 Tp2

1回

2回

10994
20985
860
1375

21603 32244 42854
42469 63904 85029
1704
2641
3610
2625
3938
5219
サービス利用回数(n)

3回

4回

5回
53651
1062004454
6610

本研究では同期型Webサービスが持つ問題点を解決するために，SOAP over SMTP を利用した非同期型 Web サービスを実現する方法の提案と評価を行った．非同期型
Web サービスを用いることで一方向型のメッセージングが可能となり，プロバイダからのレスポンスを待機することなく，効率の良いサービスの利用が可能になり，Web サービスの利便性の増大が期待できる．

図 10：PDF 変換サービス処理時間

参考文献
6. 考察
Web サービス形態の多様化により，同期型のみではWeb サービスの利便性を十分に生かせない． そこで，本研究では，SOAP over SMTP による非同期型Web サービスを提案した．この方法により，リクエストメッセージを SMTPで送信する一方向型のメッセージングが実現され，長時間処理を行うサービスのクライアントの処理時間を短縮することが可能となる．例えば，試作した PDF 変換サービスでは，プロバイダ側の PDF 変換処理時間に影響されず，リクエストの送信処理の時間間隔でサービスが利用可能となる．
さらに，非同期型メッセージに ID を付加し，メッセージ間の関連を明らかにすることで，複数のメッセージに対応関

[1]
[2]
[3]
[4]
[5]

日本ユニテック, SOAP/UDDI/WSDL Web サービス技
術基礎と実践 徹底解説, 技術評論社, 2002.
本 俊也, 最新 Web サービスマスタリングハンドブック，秀和システム, 2004.
The Apache Software Foundation: Axis Documentation,
http://ws.apache.org/axis/java/index.html.
The Apache Software Foundation, James Documentation,
http://james.apache.org/documentation_2_1.html.
MSDN Online, Web Services Routing Protocol(WS-Routing), 2001,
http://www.microsoft.com/japan/msdn/webservices/dnsrv
spec/ws-routing.asp.