Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

WS-ReliableMessaging の使用

最初の章で説明したように、Caché は、WS-ReliableMessaging 仕様の一部をサポートします。この仕様は、メッセージのシーケンスを確実に順番に送信するメカニズムを提供します。このサポートを使用する最も簡単な方法は、セキュリティ・ポリシーを作成し、Web サービス/クライアント構成ウィザードの [信頼性の高いメッセージ配信] オプションを使用することです。別のオプションは、この章で説明するように、信頼性の高いメッセージング手動で使用することです。この章では、以下のトピックについて説明します。

Web クライアントからメッセージのシーケンスを送信する

Caché Web クライアントから WS-ReliableMessaging をサポートする Web サービスにメッセージのシーケンスを確実に送信するには、以下の手順を実行します。

  1. 必要に応じて、Web クライアントのセキュリティ・ヘッダ要素を指定します。このドキュメントの前の各章を参照してください。

    前の章で説明したように WS-SecureConversation を使用している場合は、安全な通信を開始します。

  2. %SOAP.RM.CreateSequenceOpens in a new tabCreate() クラス・メソッドを呼び出します。クラスのインスタンスを返します。

    このメソッドには、以下のシグニチャがあります。

    classmethod Create(addressingNamespace As %String, 
                       oneWay As %Boolean = 0, 
                       retryInterval As %Float = 1.0, 
                       maxRetryCount As %Integer = 8, 
                       expires As %xsd.duration, 
                       SSLSecurity As %Boolean = 0) as %SOAP.RM.CreateSequence
    

    以下はその説明です。

    • addressingNamespace は、WS-Addressing をサポートするために使用されるネームスペースです。既定は "http://www.w3.org/2005/08/addressing" です。

    • oneWay は、要求シーケンスのみが作成される場合に True になります。

    • retryInterval は、再試行される前に待機する間隔の秒数です。

    • maxRetryCount は、アクティビティが発生しなかった場合の再試行の最大数です。

    • expires は、要求されるシーケンスの送信の有効期間を指定するXML 形式の有効期間です。

    • SSLSecurity は、Web クライアントが SSL を使用して Web サービスに接続するかどうかを指定します。

  3. Web クライアントの %StartRMSession() メソッドを呼び出し、%SOAP.RM.CreateSequenceOpens in a new tab のインスタンスを引数として渡します。

    %SOAP.RM.CreateSequenceOpens in a new tab のインスタンスは一度しか使用できません。つまり、このインスタンスを使用して、後で別のセッションを作成することはできません。

  4. 必要に応じて Web メソッドを呼び出します。

    毎回同じ Web クライアント・インスタンスを使用します。

  5. メッセージの送信を完了したときに Web クライアントの %CloseRMSession() メソッドを呼び出します。

Important:

また、次のセクションで説明するように、WS-ReliableMessaging ヘッダに署名してください。

WS-ReliableMessaging ヘッダに署名する

以下のいずれかの方法で、WS-ReliableMessaging ヘッダに署名できます。

SecurityContextToken を使用してヘッダに署名する

前の章の説明に従って WS-SecureConversation を使用している場合は、Web クライアントの SecurityContextToken プロパティには対称鍵が含まれ、これを WS-ReliableMessaging ヘッダ要素の署名に使用できます。そのためには、%SOAP.RM.CreateSequenceOpens in a new tab のインスタンスの AddSTR() メソッドを呼び出し、SecurityContextToken プロパティを引数として渡します。

 do createsequence.AddSTR(client.SecurityContextToken)

この処理は、%StartRMSession() を呼び出す前に実行します。

メッセージに署名するときにヘッダに署名する

メッセージの残りに署名するときと同じ方法で WS-ReliableMessaging ヘッダにも署名できます。このためには、%XML.SignatureCreate() メソッドまたは CreateX509() メソッドを呼び出す場合に、値 $$$SOAPWSIncludeRMHeaderssignatureOptions 引数に追加します。$$$SOAPWSIncludeRMHeaders マクロは、%soap.inc ファイルに含まれます。

WS-ReliableMessaging をサポートするように Web サービスを変更する

WS-ReliableMessaging をサポートするように Caché Web サービスを変更するには、以下が実行されるように Web メソッドを変更します。

  • 着信要求メッセージに WS-ReliableMessaging ヘッダが含まれることを確認します。

  • WS-ReliableMessaging ヘッダが署名されていることを確認します。

    Caché は、署名が有効かどうかを自動的に確認します。“着信メッセージの検証と解読” の章を参照してください。

  • 次のセクションの説明に従って、Web サービス・クラスのパラメータを指定して、Web サービスの動作を微調整できます。

ただし、セキュリティ・ポリシーを作成し、Web サービス/クライアント構成ウィザードの [信頼性の高いメッセージ配信] オプションを使用する方が簡単です。

Web サービスで信頼性の高いメッセージングを処理する方法を制御する

Web サービス・クラスの以下のパラメータを指定して、Web サービスの動作を微調整できます。

RMINORDER

WS-ReliableMessaging の InOrder ポリシー・アサーションに対応します。0 (False)、もしくは 1 (True) に指定します。詳細は、Web Services Reliable Messaging Policy 1.1 の仕様を参照してください。

既定では、このパラメータが指定されていない場合は、Caché Web サービスはメッセージの順序に関する SOAP フォルトを発行しません。

RMDELIVERYASSURANCE

WS-ReliableMessaging の DeliveryAssurance ポリシー・アサーションに対応します。"ExactlyOnce""AtLeastOnce"、または "AtMostOnce" に指定します。詳細は、Web Services Reliable Messaging Policy 1.1 の仕様を参照してください。

既定では、このパラメータが指定されていない場合は、Caché Web サービスはこのポリシー・アサーションに従った配信の失敗に関する SOAP フォルトを発行しません。

RMINACTIVITYTIMEOUT

Web サービスによって受信されるシーケンスでアクティビティがない場合のタイムアウトを秒数で指定します。既定値は 10 分です。

[信頼性の高いメッセージ配信] オプションを使用するセキュリティ・ポリシーを使用する Web サービス・クラスで同じパラメータを指定できます。

また、Web サービスの %OnCreateRMSession() コールバック・メソッドを実装することもできます。このメソッドは、%SOAP.RM.CreateSequenceResponse が返される前に、WS-ReliableMessaging セッションの開始時に呼び出されます。この時点では、応答引数は完全に作成されており、まだ返されていません。このコールバックによって、任意の必須セキュリティ・ヘッダ要素を Web サービスの SecurityOut プロパティに追加可能になります。WS-Policy が使用されている場合は、WS-Policy サポートによってこの操作が自動的に実行されます。メソッド・シグニチャについては、%SOAP.WebServiceOpens in a new tab のクラス・リファレンスを参照してください。

FeedbackOpens in a new tab