エンタープライズ:ニュース | 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を取得するのだ。
読者は、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); |
[David Chappell, Tony Hong,XML Magazine]