21.5. WS-RM の設定


21.5.1. Apache CXF 固有の WS-RM 属性の設定

概要

Apache CXF 固有の属性を設定するには、rmManager Spring Bean を使用します。以下を設定ファイルに追加します。

例21.4「Apache CXF 固有の WS-RM 属性の設定」 簡単な例を示します。

例21.4 Apache CXF 固有の WS-RM 属性の設定

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd">
...
<wsrm-mgr:rmManager>
<!--
  ...Your configuration goes here
-->
</wsrm-mgr:rmManager>

rmManager Spring bean の子

表21.2「rmManager Spring Bean の子」 は、http://cxf.apache.org/ws/rm/manager namespace で定義される rmManager Spring Bean の子要素を表示します。

表21.2 rmManager Spring Bean の子
要素説明

RMAssertion

RMAssertion 型の要素

deliveryAssurance

適用すべき配信保証を記述する DeliveryAssuranceType の要素

sourcePolicy

RM ソースの詳細を設定できるようにするタイプ SourcePolicyType の要素

destinationPolicy

RM 宛先の詳細を設定できるようにするタイプ DestinationPolicyType の要素

例は、「未確認メッセージの最大しきい値」 を参照してください。

21.5.2. 標準の WS-RM ポリシー属性の設定

概要

次のいずれかの方法で、標準の WS-RM ポリシー属性を設定できます。

WS-Policy RMAssertion の子

表21.3「WS-Policy RMAssertion 要素の子」 は、http://schemas.xmlsoap.org/ws/2005/02/rm/policy 名前空間で定義される要素を表示します。

表21.3 WS-Policy RMAssertion 要素の子
名前説明

InactivityTimeout

エンドポイントが非アクティブのために RM シーケンスが終了したと見なす前に、メッセージを受信せずに経過する必要がある時間を指定します。

BaseRetransmissionInterval

特定のメッセージについて RM ソースが確認応答を受信する必要がある間隔を設定します。BaseRetransmissionInterval によって設定された時間内に確認応答が受信されなかった場合、RM ソースはメッセージを再送信します。

ExponentialBackoff

一般的に知られている指数バックオフアルゴリズム (Tanenbaum) を使用して再送信間隔が調整されることを示します。

詳細は、Computer Networks、Andrew S. Tanenbaum、Prentice Hall PTR、2003 を参照してください。

AcknowledgementInterval

WS-RM では、確認応答は返信メッセージで送信されるか、スタンドアロンで送信されます。確認応答を送信するための返信メッセージが利用できない場合、RM 宛先は、スタンドアロン確認応答を送信する前に、確認応答間隔まで待機できます。確認応答されていないメッセージがない場合、RM 宛先は確認応答を送信しないことを選択できます。

より詳細な参照情報

各要素のサブ要素と属性の説明を含む、より詳細な参照情報は、http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd を参照してください。

rmManager Spring bean の RMAssertion

標準の WS-RM ポリシー属性を設定するには、Apache CXF rmManager Spring Bean 内に RMAssertion を追加します。これは、すべての WS-RM 設定を同じ設定ファイルに保持する場合に最適なアプローチです。つまり、Apache CXF 固有の属性と標準の WS-RM ポリシー属性を同じファイルで設定する場合です。

たとえば、例21.5「rmManager Spring Bean で RMAssertion を使用して WS-RM 属性を設定する」 の設定では次を示します。

  • rmManager Spring Bean 内で RMAssertion を使用して設定された標準の WS-RM ポリシー属性である BaseRetransmissionInterval
  • 同じ設定ファイルで設定された Apache CXF 固有の RM 属性 intraMessageThreshold

例21.5 rmManager Spring Bean で RMAssertion を使用して WS-RM 属性を設定する

<beans xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
       xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
...>
<wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
    <wsrm-policy:RMAssertion>
        <wsrm-policy:BaseRetransmissionInterval Milliseconds="4000"/>
    </wsrm-policy:RMAssertion>
    <wsrm-mgr:destinationPolicy>
        <wsrm-mgr:acksPolicy intraMessageThreshold="0" />
    </wsrm-mgr:destinationPolicy>
</wsrm-mgr:rmManager>
</beans>

機能内のポリシー

例21.6「機能内のポリシーとしての WS-RM 属性の設定」 に示すように、機能内で標準の WS-RM ポリシー属性を設定できます。

例21.6 機能内のポリシーとしての WS-RM 属性の設定

<xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:wsa="http://cxf.apache.org/ws/addressing"
        xmlns:wsp="http://www.w3.org/2006/07/ws-policy"
        xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        xsi:schemaLocation="
http://www.w3.org/2006/07/ws-policy http://www.w3.org/2006/07/ws-policy.xsd
http://cxf.apache.org/ws/addressing http://cxf.apache.org/schema/ws/addressing.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <jaxws:endpoint name="{http://cxf.apache.org/greeter_control}GreeterPort" createdFromAPI="true">
        <jaxws:features>
               <wsp:Policy>
                   <wsrm:RMAssertion xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm/policy">
                     <wsrm:AcknowledgementInterval Milliseconds="200" />
                   </wsrm:RMAssertion>
                   <wsam:Addressing xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata">
                       <wsp:Policy>
                            <wsam:NonAnonymousResponses/>
                       </wsp:Policy>
                   </wsam:Addressing>
              </wsp:Policy>
        </jaxws:features>
    </jaxws:endpoint>
</beans>

WSDL ファイル

WS-Policy フレームワークを使用して WS-RM を有効にする場合は、WSDL ファイルで標準の WS-RM ポリシー属性を設定できます。これは、サービスを相互運用して、他のポリシー対応 Web サービススタックにデプロイされたコンシューマーとシームレスに WS-RM を使用する場合に適したアプローチです。

例は、「WS-Policy フレームワーク。暗黙的にインターセプターを追加する」を参照してください。ここで、基本再送信間隔は WSDL ファイルで設定されます。

外部アタッチメント

標準の WS-RM ポリシー属性を外部の添付ファイルで設定できます。これは、WSDL ファイルを変更できない、または変更したくない場合に適したアプローチです。

例21.7「外部アタッチメントでの WS-RM の設定」 は、特定の EPR に対して WS-A と WS-RM の両方 (基本再送信間隔 30 秒) を有効にする外部接続を示しています。

例21.7 外部アタッチメントでの WS-RM の設定

<attachments xmlns:wsp="http://www.w3.org/2006/07/ws-policy" xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <wsp:PolicyAttachment>
        <wsp:AppliesTo>
           <wsa:EndpointReference>
                <wsa:Address>http://localhost:9020/SoapContext/GreeterPort</wsa:Address>
            </wsa:EndpointReference>
        </wsp:AppliesTo>
        <wsp:Policy>
            <wsam:Addressing xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata">
                <wsp:Policy/>
            </wsam:Addressing>
            <wsrmp:RMAssertion xmlns:wsrmp="http://schemas.xmlsoap.org/ws/2005/02/rm/policy">
                <wsrmp:BaseRetransmissionInterval Milliseconds="30000"/>
            </wsrmp:RMAssertion>
        </wsp:Policy>
    </wsp:PolicyAttachment>
</attachments>/

21.5.3. WS-RM 設定のユースケース

概要

このサブセクションでは、ユースケースの観点から WS-RM 属性を設定することに焦点を当てます。属性が http://schemas.xmlsoap.org/ws/2005/02/rm/policy/ namespace で定義された標準の WS-RM ポリシー属性である場合、rmManager Spring Bean 内の RMAssertion で設定する例のみが表示されます。機能内のポリシーなどの属性を設定する方法の詳細は、WSDL ファイルまたは外部添付ファイルで、「標準の WS-RM ポリシー属性の設定」 を参照してください。

次のユースケースを説明します。

基本再送間隔

BaseRetransmissionInterval 要素は、まだ確認されていないメッセージを RM ソースが再送信する間隔を指定します。これは、http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd スキーマファイルで定義されています。デフォルト値は 3000 ミリ秒です。

例21.8「WS-RM ベースの再送間隔の設定」 WS-RM ベースの再送間隔を設定する方法を示します。

例21.8 WS-RM ベースの再送間隔の設定

<beans xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy
...>
<wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
    <wsrm-policy:RMAssertion>
        <wsrm-policy:BaseRetransmissionInterval Milliseconds="4000"/>
    </wsrm-policy:RMAssertion>
</wsrm-mgr:rmManager>
</beans>

再送信の指数バックオフ

ExponentialBackoff 要素は、承認されていないメッセージの連続する再送信試行が指数関数間隔で実行されるかどうかを判断します。

ExponentialBackoff 要素が存在すると、この機能が有効になります。デフォルトで 2 の指数バックオフ比率が使用されます。ExponentialBackoff はフラグです。要素が存在する場合、指数バックオフが有効になります。要素が存在しない場合、指数バックオフは無効になります。値は必要ありません。

例21.9「WS-RM 指数バックオフプロパティーの設定」 は、再送信のために WS-RM 指数バックオフを設定する方法を示しています。

例21.9 WS-RM 指数バックオフプロパティーの設定

<beans xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy
...>
<wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
    <wsrm-policy:RMAssertion>
        <wsrm-policy:ExponentialBackoff/>
    </wsrm-policy:RMAssertion>
</wsrm-mgr:rmManager>
</beans>

確認間隔

AcknowledgementInterval 要素は、WS-RM 宛先が非同期確認応答を送信する間隔を指定します。これらは、着信メッセージの受信時に送信する同期確認応答に追加されます。デフォルトの非同期確認間隔は 0 ミリ秒です。つまり、AcknowledgementInterval が特定の値に設定されていない場合、確認応答は即座に送信されます (つまり、利用可能な最初の機会)。

非同期確認応答は、次の両方の条件が満たされた場合にのみ RM 宛先によって送信されます。

  • RM 宛先は匿名以外の wsrm:acksTo エンドポイントを使用しています。
  • 応答メッセージに確認応答をピギーバックする機会は、確認応答間隔が満了する前には発生しません。

例21.10「WS-RM 確認応答間隔の設定」 WS-RM 確認応答間隔を設定する方法を示します。

例21.10 WS-RM 確認応答間隔の設定

<beans xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy
...>
<wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
    <wsrm-policy:RMAssertion>
        <wsrm-policy:AcknowledgementInterval Milliseconds="2000"/>
    </wsrm-policy:RMAssertion>
</wsrm-mgr:rmManager>
</beans>

未確認メッセージの最大しきい値

maxUnacknowledged 属性は、シーケンスが終了する前に、シーケンスごとにアクセッジできる承認されていないメッセージの最大数を設定します。

例21.11「WS-RM の未確認メッセージの最大しきい値の設定」 は、WS-RM の未確認メッセージの最大しきい値を設定する方法を示しています。

例21.11 WS-RM の未確認メッセージの最大しきい値の設定

<beans xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager
...>
<wsrm-mgr:reliableMessaging>
    <wsrm-mgr:sourcePolicy>
        <wsrm-mgr:sequenceTerminationPolicy maxUnacknowledged="20" />
    </wsrm-mgr:sourcePolicy>
</wsrm-mgr:reliableMessaging>
</beans>

RM シーケンスの最大長

maxLength 属性は、WS-RM シーケンスの最大長を設定します。デフォルト値は 0 で、WS-RM シーケンスの長さがバインドされないことを意味します。

この属性が設定されている場合、RM エンドポイントは、制限に達したとき、および以前に送信されたメッセージのすべての確認応答を受信した後に、新しい RM シーケンスを作成します。新しいメッセージは、newsequence を使用して送信されます。

例21.12「WS-RM メッセージシーケンスの最大長の設定」 RM シーケンスの最大長を設定する方法を示します。

例21.12 WS-RM メッセージシーケンスの最大長の設定

<beans xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager
...>
<wsrm-mgr:reliableMessaging>
    <wsrm-mgr:sourcePolicy>
        <wsrm-mgr:sequenceTerminationPolicy maxLength="100" />
    </wsrm-mgr:sourcePolicy>
</wsrm-mgr:reliableMessaging>
</beans>

メッセージ配信保証ポリシー

次の配信保証ポリシーを使用するように RM 宛先を設定できます。

  • AtMostOnce: RM 宛先はメッセージを 1 度のみアプリケーションの宛先に配信します。メッセージが複数回配信されると、エラーが発生します。シーケンス内の一部のメッセージが配信されない可能性があります。
  • AtLeastOnce: RM 宛先は少なくとも 1 回アプリケーションの宛先にメッセージを配信します。送信されたすべてのメッセージが配信されるか、エラーが発生します。一部のメッセージは複数回配信される場合があります。
  • InOrder: RM 宛先は、送信順にアプリケーションの宛先にメッセージを配信します。この配信保証は、AtMostOnce または AtLeastOnce 保証と組み合わせることができます。

例21.13「WS-RM メッセージ配信保証ポリシーの設定」 WS-RM メッセージ配信保証を設定する方法を示します。

例21.13 WS-RM メッセージ配信保証ポリシーの設定

<beans xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager
...>
<wsrm-mgr:reliableMessaging>
    <wsrm-mgr:deliveryAssurance>
        <wsrm-mgr:AtLeastOnce />
    </wsrm-mgr:deliveryAssurance>
</wsrm-mgr:reliableMessaging>
</beans>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.