ws_rmサンプルを試す〜オープンソースソリューションのこれから
はじめに
本連載はCeltix 1.0に用意されているサンプルデモのREADME.txtファイルを日本語訳したものです。README.txtファイルにはWindowsとUNIXにおける作業手順が記載されています。
今回はサンプル23「ws_rm」デモについて解説します。
連載ではWindowsについてのみ確認を行い、足りない手順についての内容を追加しています。UNIXを利用する場合には、Windowsの手順を参照してください。
サンプル23 ws_rmのデモ
この「ws_rm」は、CeltixがサポートしているWS-ReliableMessagingをどのように有効にするかを示したデモです。クライアントとサーバともにWS-RMハンドラをインストールして、ハンドラ構成を利用します。
ハンドラは、メッセージの信頼性に関するプロパティを管理する「LogicalHandler(RMHandler)」とSOAPヘッダーのプロパ ティをエンコード/デコードする「ProtocolHandler(RMSoapHandler)」から構成されています。
WS-RMを利用するにはWS-Addressingが必要です。そのため「ws_addressing」サンプルと同様に、コンフィグレーション によって機能を有効にします。このとき、WS-Addressingの名前空間のURIが異なることに注意してください。ここでは 「http://www.w3.org/2005/08/addressing」ではなく「http://schemas.xmlsoap.org/ws /2004/08/addressing」を使用します。これは、WS-RMの仕様が未だに古いバージョンのWS-Addressingを基にしているた めです。
このデモを実行するために、次の2つのProtocolHandlerを構成します。
- 「HeaderSnooper」を利用し、クライアントとサーバの両方でSOAPヘッダーを参照してコンソー ルに表示します。送信側のRMプロトコルメッセージ(CreateSequenceおよびCreateSequenceResponse)とアプリケー ションレベルのメッセージのWS-RMヘッダー(Sequence、SequenceAcknowledgement、AckRequestedなど)の 使い方を示します。
- 「MessageLossSimulator」をサーバ側で使用し、アプリケーションレベルのメッセージを毎秒破棄し、メッセージロストの状況をシミュレーションします。このシミュレーションによって、送達確認できていないメッセージの再送処理を観察できます。
このデモでは、HTTPトランスポートを分けて使用します。例えばサーバからクライアントへのHTTPコネクションを応答送信のために利用し、モニ タ上で参照することができます。これはクライアントからサーバへのオリジナルコネクションの逆方向に「HTTP 202 Accepted」の応答が送られることで確認できます。
「ws_rm」サンプルは基本的に「hello_world」サンプルと同様の構成となっており、アプリケーションに影響なくWS- Addressingを利用できることを示しています。なお、通常の「hello_world」サンプルのWSDLに対して、サービスエンドポイントが WS-Addressingをサポートすることを示すために
「ws_rm」デモを実行する前に、以下の内容を確認してから作業してください。
必要条件
celtix.jarがCLASSPATHに登録されていて、JDKとantのbinディレクトリがPATHに登録されているのであれば、samplesディレクトリのREADMEにある環境変数の設定スクリプトを起動する必要はありません。
環境変数が正しく設定されていなかったり、デモをビルドする際にwsdl2java、javacあるいはjavaコマンドを利用する場合は、環境変数の設定スクリプトを起動する必要があります。