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 つのインターセプターで構成されています。
インターセプター | 説明 |
---|---|
| 送信メッセージの信頼性保証を提供する論理的な側面を扱います。
また、アプリケーションメッセージのシーケンスプロパティー (ID とメッセージ番号) を集約するロールも果たします。 |
|
アプリケーションメッセージに Piggy backed である RM プロトコルメッセージと |
| 永続ストレージ用の着信メッセージのキャッシュ。 |
| アプリケーションへのメッセージの InOrder 配信を保証します。 |
| 信頼性プロパティーを SOAP ヘッダーとしてエンコードおよびデコードする責任があります。 |
| 将来の再送信のためにアプリケーションメッセージのコピーを作成する責任があります。 |
WS-RM の有効化
インターセプターチェーンに WS-RM インターセプターが存在することで、必要に応じて WS-RM プロトコルメッセージが交換されます。たとえば、アウトバウンドインターセプターチェーンで最初のアプリケーションメッセージをインターセプトすると、RMOutInterceptor
は CreateSequence
リクエストを送信し、CreateSequenceResponse
応答を受信するまで元のアプリケーションメッセージを処理するのを待ちます。さらに、WS-RM インターセプターは、シーケンスヘッダーをアプリケーションメッセージに追加し、宛先側でメッセージから抽出します。メッセージの交換を信頼できるものにするために、アプリケーションコードに変更を加える必要はありません。
WS-RM を有効にする方法の詳細は、「WS-RM の有効化」 を参照してください。
WS-RM 属性の設定
設定を通じて、シーケンスの境界設定や信頼性の高い交換の他の側面を制御します。たとえば、デフォルトでは、Apache CXF はシーケンスの存続期間を最大化しようとするため、帯域外 WS-RM プロトコルメッセージによって発生するオーバーヘッドが削減されます。アプリケーションメッセージごとに別のシーケンスを使用するようにするには、WS-RM ソースシーケンス終了ポリシーを設定します (最大シーケンスの長さを 1
に設定)。
WS-RM 動作の設定の詳細は、「WS-RM の設定」 を参照してください。