Menu Close

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

概要

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

Apache CXF WS-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

アプリケーションメッセージに付随する RMプロトコルメッセージおよび SequenceAcknowledgement メッセージをインターセプトして処理します。

org.apache.cxf.ws.rm.RMCaptureInInterceptor

永続ストレージ用に受信メッセージをキャッシュします。

org.apache.cxf.ws.rm.RMDeliveryInterceptor

メッセージが順序どおりにアプリケーションに配信されるようにします。

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 の設定」を参照してください。