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


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

サービスを体験しよう

 サービスは、JMS reply-to fieldに指定されたresponse queueの中に、translation results document (もしくはSOAP fault) を置くことになる。そして、もしクライアントが望むのであれば、適切なrequest/response相関をクライアントが確認できるようにする必要がある。このためには、リクエストメッセージのJMS message IDを取り込み、レスポンスメッセージにマッチする相関IDをセットする必要がある。その後、クライアント要求により、レスポンスキューから完全なtranslation results documentを取得するのだ。

Image4.gif

Figure 4.■応答メッセージの経路。サーバは、待ち行列でクライアントに応答をする


 読者は、AsynchBabelFishを試すことが可能だ(See Resources online at www.xml-mag.com for accessing the AsynchBabelFish client package and the accompanying JMS client libraries.)。このパッケージは、クライアントソースおよびバイナリ、サードパーティのライブラリを含む。クライアントを利用するためには、XMethodsのアカウントと、自身のレスポンスキューを作成する必要がある(XMethodsはこのサービスからのSOAP返信のために、ユーザに対してmessageboxとして機能するresponse queueを提供する。将来の非同期サービスは開発中だ)。クライアント・パッケージに含まれるインストラクションは、個々のステップにおける詳細を提供する。クライアントパッケージ内のプログラムソースはTable 1で簡単に紹介されている。

 TranslatorRequestorは、リクエストを発行し、それをAsynchBabelFish request queueに送信し(Listing 2)、以下のように実行させる。

java asynchBabelFish.
TranslatorRequestor <username>
<password> <text> <fromLanguage>
<toLanguage> <responseQueue>

 TranslatorRequestorの幾つかのハイライトをウォークスルーする。このプログラムは、最初にAsynchBabelFish サービスキューに対するJMS connectionを作成する。続けて次のような処理を行う。

RequestEnvelope requestEnv=
new RequestEnvelope(userID,
password,sourceText,
sourceLanguage,toLanguage);

 RequestEnvelopeオブジェクトが渡されたパラメータを取り、内部的にはSOAP envelopeを構築する。toString() メソッドがコールされた際には、適切なフォームのtranslation request SOAP document を文字列で返す。この文字列を利用し、JMS TextMessageオブジェクトをクリエートされる。

TextMessage message=
queueSession.createTextMessage(
requestEnv.toString());

 メッセージに対し、JMS reply-to header に対するレスポンスキューハンドルを加える。

// Get a handle to the reply-to
// queue
Queue replyToQueue=queueSession.
createQueue(replyToQueueName);
// and add it to the reply-to
// field
message.setJMSReplyTo(
replyToQueue);

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

[David Chappell, Tony Hong,XML Magazine]