23.4 WS-Policyによる設定

WS-RM 1.2機能には,WS-RM Policyでの設定のほかに,WS-PolicyとしてWSDLに記述する独自の設定があります。ここではWSDLに追加するプロパティについて説明します。

WS-RM Policyの追加方法については,「34.4 WS-RM Policyの追加方法」を参照してください。

表23-4 WSDLに追加するプロパティ

項番プロパティ説明単位範囲デフォルト値
1<net35rmp:InactivityTimeout Milliseconds = "設定値"/>シーケンスの有効期限を設定します。アプリケーションメッセージの再送間隔を設定する場合,アプリケーションメッセージの再送間隔以上の値を設定してください。
設定した期間,通信されない場合
シーケンスの有効期限が切れ,シーケンスは自動的に終了します。
有効期限が切れたあとにメッセージを送信した場合
WebServiceExceptionの子クラスであるSequenceTerminatedException例外またはUnknownSequenceException例外が発生します。
有効期限が切れたあとにメッセージを受信した場合
SequenceTerminatedフォルトまたはUnknownSequenceフォルトを返信します。
通信を続ける場合
再度ポートのオブジェクトを取得し,シーケンスを生成し直す必要があります。
範囲外の値を指定した場合
警告メッセージを出力し,デフォルト値で動作します(KDJR16017-W)。
ミリ秒1~9,223,372,036,854,775,807600,000
2<cwsrm:MaxMessageNumber value="設定値"/>一つのシーケンスで扱える最大のメッセージ数を設定します。
設定したメッセージ数を超えてメッセージを送信した場合
WebServiceExceptionの子クラスであるMessageNumberRolloverException例外が発生します。
設定したメッセージ数を超えてメッセージを受信した場合
MessageNumberRolloverフォルトを返信します。
通信を続ける場合
既存のシーケンスを終了するため,ポートのオブジェクトをcom.sun.xml.ws.Closeableにキャストし,closeメソッドを呼び出します。その後,再度ポートのオブジェクトを取得し,シーケンスを生成し直す必要があります。
範囲外の値を指定した場合
警告メッセージを出力し,デフォルト値で動作します(KDJR16017-W)。
1~100,00010,000
3<metro:AckRequestInterval Milliseconds="設定値"/>WS-RM 1.2機能が自動的にバックグラウンドで送信するAckメッセージの送信間隔を設定します。タイミングによっては,設定値の2倍程度の間隔が開く場合があります。
範囲外の値を指定した場合,警告メッセージを出力し,デフォルト値で動作します(KDJR16017-W)。
ミリ秒1~9,223,372,036,854,775,8072,000
4<metro:RetransmissionConfig>
<metro:Interval Milliseconds="設定値"/>
</metro:RetransmissionConfig>
アプリケーションメッセージの再送間隔を設定します。
範囲外の値を設定した場合,警告メッセージを出力し,デフォルト値で動作します(KDJR16017-W)。
ミリ秒1~9,223,372,036,854,775,8072,000
5<metro:RetransmissionConfig>
<metro:MaxRetries>設定値</metro:MaxRetries>
</metro:RetransmissionConfig>
アプリケーションメッセージの再送回数を設定します。設定した再送回数を超えると,再送を停止し,アプリケーションに発生したエラーを返します。
0を指定した場合
再送回数は無限になります。
範囲外の値を設定した場合
警告メッセージを出力し,デフォルト値で動作します(KDJR16017-W)。
0~9,223,372,036,854,775,8073
(凡例)
-:なし

シーケンスの有効期限を300,000ミリ秒(5分)に,シーケンスの最大メッセージ数を1,000に設定するWS-RM Policyの例を次に示します。

 <wsp:Policy wsu:Id="WSRM_policy">
   <wsp:ExactlyOne>
     <wsp:All>
       <wsrmp:RMAssertion>
         <wsp:Policy>
           <wsrmp:DeliveryAssurance>
             <wsp:Policy>
               <wsrmp:ExactlyOnce/>
             </wsp:Policy>
           </wsrmp:DeliveryAssurance>
         </wsp:Policy>
       </wsrmp:RMAssertion>
       <wsaw:UsingAddressing/>
       <net35rmp:InactivityTimeout Milliseconds="300000"/>
       <cwsrm:MaxMessageNumber value="1000"/>
     </wsp:All>
   </wsp:ExactlyOne>
 </wsp:Policy>