Web サービスのカスタム転送の指定
ここで説明するように、既定では、InterSystems IRIS® データ・プラットフォーム Web サービスは、指定した方法で転送するよう応答します。この動作をカスタマイズできます。
背景
InterSystems IRIS Web サービスが SOAP メッセージを受け取ると、この Web サービスは、OnSOAPRequest() クラス・メソッドを実行します。既定では、このメソッドは以下を実行します。
-
Initialize() メソッドを呼び出すことにより、Web サービス・インスタンスを初期化します。このメソッドは、着信 SOAP メッセージを解析し、情報の複数の部分を参照によって返し、セキュリティ・ヘッダを処理します。%SOAP.WebServiceOpens in a new tab クラスのドキュメントを参照してください。
-
SoapFault などの Web サービス・インスタンスのプロパティを設定します。
-
応答ストリームを初期化します。
-
Web サービスの Process() メソッドを呼び出して、このメソッドに SOAP アクションおよび呼び出すメソッドを渡します。
-
Reset() メソッドを呼び出すことにより、Web サービス・インスタンスをリセットします。
-
結果を応答ストリームにコピーします。
Web サービスのカスタム転送の定義
独自の転送を使用して Web サービスを実装するには、転送を使用して SOAP メッセージをストリームとして取得し、Web サービス・クラスをインスタンス化して、その OnSOAPRequest() クラス・メソッドを呼び出します。
OnSOAPRequest() メソッドは、要求を Web サービスに転送して、応答を取得する必要があります。エラーを示す場合は、応答ストリームで SOAP フォルトを返します。このメソッドのシグニチャは、以下のようにする必要があります。
Method OnSOAPRequest(action,requestStream, responseStream)
以下はその説明です。
-
action は、SOAP アクションを指定する %StringOpens in a new tab です。最後の "." の後のアクション文字列の部分は、正しい記述子クラスを使用するためのメソッド名として使用されます。アクションが NULL の場合、SOAP 本文の最初の要素 (ラップ要素) の要素名が、メソッド名として使用されます。
-
requestStream は、XML 指示文のエンコード属性に従ってエンコードされた SOAP 要求メッセージを含むストリームです。
-
responseStream は、UTF-8 でエンコードされた応答 SOAP メッセージを含む SOAP 応答として生成された文字ストリームです。OnSOAPRequest() を呼び出す前にこの引数を作成して、メソッド呼び出しでこの引数を渡すことができます。または、この引数を、参照によって渡される変数にすることもできます。この場合、OnSOAPRequest() では、応答が組み込まれた %FileCharacterStreamOpens in a new tab のインスタンスと等しくなるように、これを設定する必要があります。