21.2. WS-RM インターセプター

概要

Apache CXF では、WS-RM 機能がインターセプターとして実装されます。Apache CXF ランタイムは、インターセプターを使用して、送受信されている生のメッセージを傍受して処理します。トランスポートはメッセージを受信すると、メッセージオブジェクトを作成し、そのメッセージをインターセプターチェーンを介して送信します。アプリケーションのインターセプターチェーンに WS-RM インターセプターが含まれている場合、アプリケーションは信頼性の高いメッセージングセッションに参加できます。WS-RM インターセプターは、メッセージチャンクの収集と集約を処理します。また、すべての確認応答および再送信ロジックを処理します。

Apache CXF -RM インターセプター

Apache CXF WS-RM の実装は、表21.1「Apache CXF WS-ReliableMessaging インターセプター」 で示されているように 4 つのインターセプターで設定されています。

表21.1 Apache CXF WS-ReliableMessaging インターセプター

インターセプター説明

org.apache.cxf.ws.rm.RMOutInterceptor

送信メッセージの信頼性保証を提供する論理的な側面を扱います。

CreateSequence リクエストを送り、CreateSequenceResponse 応答を 待ちます。

また、アプリケーションメッセージのシーケンスプロパティー (ID とメッセージ番号) を集約するロールも果たします。

org.apache.cxf.ws.rm.RMInInterceptor

アプリケーションメッセージに Piggy backed である RM プロトコルメッセージと SequenceAcknowledgement メッセージの傍受および処理を行います。

org.apache.cxf.ws.rm.RMCaptureInInterceptor

永続ストレージ用の着信メッセージのキャッシュ。

org.apache.cxf.ws.rm.RMDeliveryInterceptor

アプリケーションへのメッセージの InOrder 配信を保証します。

org.apache.cxf.ws.rm.soap.RMSoapInterceptor

信頼性プロパティーを SOAP ヘッダーとしてエンコードおよびデコードする責任があります。

org.apache.cxf.ws.rm.RetransmissionInterceptor

将来の再送信のためにアプリケーションメッセージのコピーを作成する責任があります。

WS-RM の有効化

インターセプターチェーンに WS-RM インターセプターが存在することで、必要に応じて WS-RM プロトコルメッセージが交換されます。たとえば、アウトバウンドインターセプターチェーンで最初のアプリケーションメッセージをインターセプトすると、 RMOutInterceptorCreateSequence リクエストを送信し、CreateSequenceResponse 応答を受信するまで元のアプリケーションメッセージを処理するのを待ちます。さらに、WS-RM インターセプターは、シーケンスヘッダーをアプリケーションメッセージに追加し、宛先側でメッセージから抽出します。メッセージの交換を信頼できるものにするために、アプリケーションコードに変更を加える必要はありません。

WS-RM を有効にする方法の詳細については、「WS-RM の有効化」 を参照してください。

WS-RM 属性の設定

設定を通じて、シーケンスの境界設定や信頼性の高い交換の他の側面を制御します。たとえば、デフォルトでは、Apache CXF はシーケンスの存続期間を最大化しようとするため、帯域外 WS-RM プロトコルメッセージによって発生するオーバーヘッドが削減されます。アプリケーションメッセージごとに別のシーケンスを使用するようにするには、WS-RM ソースシーケンス終了ポリシーを設定します (最大シーケンスの長さを 1 に設定)。

WS-RM 動作の設定の詳細については、「WS-RM の設定」 を参照してください。