Menu Close

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

概要

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

WS-Policy RMAssertion の子

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

表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

Apache CXF rmManager Spring Bean に RMAssertion を追加して、標準の WS-RM ポリシー属性を設定できます。すべての 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>/