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 要素の子
| Name | 説明 |
|---|---|
|
| エンドポイントが非アクティブのために RM シーケンスが終了したと見なす前に、メッセージを受信せずに経過する必要がある時間を指定します。 |
|
|
特定のメッセージについて RM ソースが確認応答を受信する必要がある間隔を設定します。 |
|
| 一般的に知られている指数バックオフアルゴリズム (Tanenbaum) を使用して再送信間隔が調整されることを示します。 詳細については、Computer Networks、Andrew S. Tanenbaum、Prentice Hall PTR、2003 を参照してください。 |
|
| 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 属性を設定する」 の設定では次を示します。
-
rmManagerSpring 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>/