SOAP セッション管理
SOAP Web サービスは本質的にステートレスのため、セッションを管理しません。ただし、Web クライアントと Web クライアントが使用する Web サービスとの間のセッション管理が有用な場合がよくあります。InterSystems IRIS® データ・プラットフォームの SOAP サポートは、これを実行するための方法を提供します。
"カスタムの HTTP 要求の指定" も参照してください。
また、"生成された WSDL の詳細" の "InterSystems IRIS SOAP セッションの WSDL の相違点" を参照してください。
SOAP セッションの概要
Web クライアントと InterSystems IRIS Web サービスとの間のセッションを管理できます。このサポートは以下のツールで構成されています。
-
Web セッション管理 (InterSystems IRIS および InterSystems Web ゲートウェイで管理)
-
簡単な専用ヘッダである InterSystems IRIS SOAP セッション・ヘッダ
全体的な流れは、以下のとおりです。
-
Web クライアントは、初期メッセージを Web サービスに送信します。このメッセージには、InterSystems IRIS SOAP セッション・ヘッダは含まれません。
-
Web サービスは、メッセージを受信し、新しい Web セッションを開始します。
-
Web サービスは、その返信を送信するときに、メッセージに InterSystems IRIS SOAP セッション・ヘッダを追加します。
-
応答を受信した Web クライアントでは、その SOAP セッション・ヘッダを検出し、セッションの cookie を抽出する必要があります。Web クライアントでは、以降のメッセージを送信するときに、その cookie を使用してメッセージに SOAP セッション・ヘッダを作成する必要があります。
メモ :
-
クライアントが InterSystems IRIS Web クライアントである場合、セッション cookie は自動的にその Web クライアントの SessionCookie プロパティに保存されます。また、そのクライアントのインスタンスで SOAP セッション・ヘッダが自動的に作成され、そのクライアントから送信するすべてのメッセージにそのヘッダが追加されます。
-
セッションで発生するすべての SOAP メッセージに同じクライアント・インスタンスを使用する場合は、この手順が .NET Web クライアントでも自動的に実行されます。その他のクライアント・プラットフォームでは追加のコードが必要な場合があります。
-
-
Web サービスは、次の応答を受信し、Web セッションを続行して、Web サービスによる応答時に SOAP セッション・ヘッダを再度追加します。
ログ・アウトのメソッドを追加する必要はありません。Web セッションは、短い時間の経過後 (Web アプリケーションのタイムアウト期間が経過した後) にタイムアウトします。
セッションの有効化
SOAP セッションに対する InterSystems IRIS サポートを使用するには、InterSystems IRIS Web サービスを使用している必要があります。
-
Web クライアントが InterSystems IRIS を使用して作成されている場合、SOAP セッションのサポートを有効にするために必要な手順は 1 つだけです。Web サービス・クラスで、SOAPSESSION パラメータを 1 に設定します。
-
Web クライアントの作成にサードパーティのツールを使用している場合は、初期応答で InterSystems IRIS SOAP セッション・ヘッダ要素を検出する必要があり、またセッションの有効期間中のすべての要求にこのヘッダ要素が Web クライアントによって追加されるようにする必要があります。このヘッダ要素の形式は、以下のとおりです。
<csp:CSPCHD xmlns:csp="https://www.intersystems.com/SOAPheaders"><id>value of CSPCHD token</id></csp:CSPCHD>
セッション情報の使用
セッションが有効な場合、Web サービスは、%CSP.SessionOpens in a new tab のインスタンスである、変数 %session を使用できます。このオブジェクトのプロパティには、システム情報およびユーザが追加するように選択した情報が含まれます。以下は、一般的に使用されるプロパティの一部です。
-
SessionID — このセッションの一意の識別子。
-
EndSession — 通常、これは 0 です。セッションを終了するには、このプロパティを 1 に設定します。
-
Data — カスタム・データの格納に使用される InterSystems IRIS 多次元配列。
-
NewSession — このセッションが新しいセッションの場合は 1 です。
-
AppTimeout — セッションのタイムアウト値を秒単位で指定します。
%session オブジェクトには、その他の多くのプロパティを初め、セッションに関連するタスクに使用できるいくつかのメソッドがあります。詳細は、%CSP.SessionOpens in a new tab のクラス・ドキュメントを参照してください。