エンタープライズ:ニュース 2003/05/13 01:29:00 更新


Webサービスをよりフレキシブルにするためには (3/6)

SOAPトランスポートにおけるJMS

 JMSはメッセージングに関するスタンダードベースのアプローチである。1998年に紹介されてからアプリケーション間でのSOAPメッセージのトランスポートに使われてきた。5つのメッセージタイプがあり、XMLベースであろうがなかろうが、各種のデータを搬送する機能を持つ。XMLデータに関しては、BytesMessage によるバイナリタイプ、また、TextMessage.によるストリングデータとして容易に扱えるのだ。

 エンド・ポイントにおいてAPIが使われてもいなくても、トランスポートレイヤにおけるJMSの利用は、HTTPの代替として考えることができる。サンプルにおいては、JMSのAPIとApache SOAPをブレンドした。JMSのAPIをconnectとsend、receiveに使い、Apache SOAPをSOAPエンベロープのconstructとdeconstructに利用した。not-too-distant機能においては、JMSはApache Axisトランスポートレイヤ下に、エンベッドされる。 JMSの選択は、ディプロイメントオプションとなるだろう。

 JMSはビルトインの同期型のrequest/replyモデルも持つ。このモデルは、非同期的にも動作する。リクエストは、ブロックする必然性がなく、レスポンスを待つ必要もない。 レスポンスは、後に非同期的に送信されるのだ。たとえ、リクエストとレスポンスに時間差があったとしても、また、失敗やリクエストプロセスのリカバーが発生しても、JMSはオリジナルのリクエストメッセージと、対応するレスポンスメッセージの関係を準備してくれる。

 XMethodsが提供するBabelFishサービスは、AltaVistaでポピュラーなBabelFishトランスレータに対する典型的なRPC SOAPインターフェースを表現するものだ。次に、このWebサービスの非同期バージョンであるAsynchBabelFishを目指すという。

 基本的に、このサービスはSOAPドキュメントの非同期でのエクスチェンジを伴うものだ。クライアントはサービスであるAsynchBabelFishトランスレーション・リクエスト・ドキュメントを送信し、その後にサービスはAsynchBabelFishトランスレーション・リザルト・ドキュメントをクライアントに返信する。エクスチェンジはメッセージング・キューの上で完了する。

 このシンプルなサンプルのメリットを証明するものは、たとえサービスがダウンしていてもクライアントが影響を受けないことであり、また、リクエストをサービスキューに保持できる点である。現状に問題が起こったとしても、後にサービス復旧時にはリクエストが実行される。また、非同期モデルの利用は、例えばサービス自身の判断においてサービスキューからメッセージを引き出すことが可能である。このため、サービスが入力されるメッセージに対する処理高率をコントロールすることができ、クライアントとサーバ双方による柔軟性が実現できるだろう。

 クライアントとAsynchBabelFishの間でエクスチェンジされることになる3つのドキュメントがある。translation request documentは、クライアントからサービスに送られるものだ。サービスからクライアントに返信される。そして、SOAP fault envelopeは、リクエストに問題があった場合、もしくは何らかの理由によりトランスレーション・リクエストが達成されなかった場合において、results documentに換ってクライアントに返信される。

 AsynchBabelFishサービスをイニシエートするためには、クライアントはストリングでtranslation request documentをクリエートし、それをAsynchBabelFishサービスのリクエストキューにテキストメッセージとしてenqueueする必要がある。

 translation requestエンベロープのボディは、ソーステキストの要素を保持し、ユーザがトランスレートする際にテキストのまま転送する。xml:langアトリビュートは、テキストの言語コードを指定するものだ。 translateToアトリビュートは、ユーザが訳したいと望む言語コードを指定する。サポートされる言語コードは、English (en) と German (de)、French (fr)、Italian (it)、Portuguese (pt) であり、ソーステキストに関しては150文字という制限がある。

前のページ | 1 2 3 4 5 6 | 次のページ

[David Chappell, Tony Hong,XML Magazine]