SOAP セッションの終了
セッションを終了する要求には、sessionId 属性と terminate 属性の両方を設定した sqlSession ヘッダーを指定する必要があります。sessionId 属性には、サーバー上のアクセス可能な状態の既知のセッションを識別する値を設定し、terminate 属性の値は true に設定します。
指定した ID のセッションが存在しない場合、sqlSession ヘッダーの terminate 属性と共に SOAP エラーが返されます。
セッションの開始時と異なるセキュリティ コンテキストまたはエンドポイントで要求が実行されると、SOAP エラーが返され、セッションはそのまま続行されます。
セッションの終了が明示的に行われると、そのセッションは新しい要求を受け付けなくなります。そのセッション内の最後のバッチを完了した時点でセッションが終了します。ただし、これがセッションの終了を実際に要求したバッチと必ずしも同じになるとは限りません。
例
SOAP セッションを終了する例を次に示します。セッションを終了しようとする SOAP クライアントが、次のような要求を送信しています。sessionId 属性に既知の有効な値が設定され、terminate 属性の値が true に設定されています。
<SOAP-ENV:Header
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
<!-- enlist in an existing session, and terminate it -->
<sqloptions:sqlSession terminate="true" sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>
セッションの終了要求は、本文が空でもメッセージ本文があってもかまいません。本文が存在する場合、メソッド実行時にエラーが発生したかどうかに関係なく、終了ヘッダーが処理され、受信確認が返されます。
その後サーバーから、次のようにセッションが終了したことを示す確認が返されます。
<SOAP-ENV:Header
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
<!-- response to terminating an existing session -->
<sqloptions:sqlSession terminate="true" sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>
通常は、終了処理が完了したことを確認するために、サーバーからの確認応答をクライアントがスキャンする必要があります。妥当な期間内に確認を受信しなかった場合、クライアントは終了要求を再試行する必要があります。
参照
関連項目
SOAP セッションの使用
ネイティブ XML Web サービス要求を送信する場合のサンプル アプリケーション
クライアント アプリケーションへの SOAP ヘッダーの追加