2.2.4 Webサービス(SOAP通信)の場合のCookie情報
ビジネスプロセスからSAP ERP 6.0上のサービスを呼び出す場合,更新系の処理によって返却されたCookie情報を引き継ぐ必要があります。SAP ERP 6.0以外のサービスを呼び出す場合,Cookie情報の引き継ぎは不要です。
SAP ERP 6.0上のサービスを呼び出す場合で,Cookie情報を引き継ぐには,HCSCランタイム定義ファイルのcookie-parsingプロパティの指定によって,Cookie情報の引き継ぎを有効にする方法と,ビジネスプロセスのヘッダ割当変数にHTTPヘッダ名を設定する方法があります。ビジネスプロセスのヘッダ割当変数にHTTPヘッダ名を設定する方法の詳細については,「2.2.5 Webサービス(SOAP通信)の場合のHTTPヘッダ引き継ぎ」を参照してください。
Cookie情報の引き継ぎの流れを次の図に示します。
Cookie情報としてサービス部品が発行するSet-Cookieヘッダの情報が引き継がれます。
次に示すCookie情報の引き継ぎ条件をすべて満たす場合は,Set-Cookieヘッダの属性がCookieヘッダに設定されます。
-
Set-CookieヘッダのCookie名とその値(NAME=VALUE)だけを設定する。
-
複数のCookie情報がある場合,「;」で区切って設定する。
条件を満たさない場合は,Cookieヘッダに何も設定されません。
Cookie情報の引き継ぎ範囲,引き継ぎ条件,およびログ出力について説明します。また,Cookie情報の引き継ぎに関する注意事項を示します。
(1) Cookie情報の引き継ぎ範囲
Cookie情報を引き継ぐビジネスプロセスの範囲を次に示します。
-
初回のサービス呼び出しから,受付アクティビティおよび応答アクティビティを実行するまで
-
初回のサービス呼び出しから,ビジネスプロセスインスタンスが終了するまで
1.の範囲では,次に示す場合でもCookie情報が引き継がれます。
-
階層的にビジネスプロセスを呼び出す場合
呼び出し先のビジネスプロセスに受付アクティビティおよび応答アクティビティがあってもCookie情報は引き継がれます。
-
受付アクティビティが非同期のビジネスプロセスを呼び出す場合
通信モデルが非同期の場合,受付アクティビティで定義したオペレーション名に対する応答アクティビティは配備できません。この場合はサービス呼出アクティビティ間に受付アクティビティがないときだけCookie情報が引き継がれます。
-
応答アクティビティのあとにアクティビティが定義されているビジネスプロセスを呼び出す場合
この場合は,サービス呼出アクティビティ間に受付アクティビティがないときだけCookie情報が引き継がれます。
-
待機アクティビティが定義されているビジネスプロセスを呼び出す場合
応答アクティビティが実行されたあとに待機アクティビティがある場合,その待機アクティビティの前後にサービス呼出アクティビティがあっても,Cookie情報は引き継がれます。
ただし,次の場合は引き継ぎ範囲に関係なく,Cookie情報は引き継がれません。
-
実行環境のプロセスがダウンした場合
-
複数の実行環境のプロセスでリクエストを処理する場合
-
プロセスインスタンスを再実行した場合
(2) Cookie情報の引き継ぎ条件
サービス部品を呼び出すときの情報と呼び出し先の情報に関して,次に示す条件をすべて満たす場合にCookie情報が引き継がれます。
-
HCSCランタイム定義ファイルのcookie-parsingプロパティにONを指定している,またはSOAPアダプタを呼び出しているサービス呼出アクティビティで,ヘッダ割当変数にCookie情報を設定している。
-
「サービス部品のホスト名:ポート番号」の文字列が完全一致する。
ホスト名の指定形式が異なっていると,それぞれ別のURLとして扱われます。例えば,同じホストを指定する場合に,ホスト名で指定しているものとIPアドレスで指定しているものが混在しているときは,それぞれ別のURLとして扱われます。このとき,Cookie情報は引き継がれません。また,ポート番号が設定されていない場合は,「:ポート番号」のない文字列で比較されます。
-
path属性が前方一致する。
前方一致と見なされる場合および見なされない場合の例を示します。
(例)前方一致と見なされる場合
/sapと/sap,/sapと/sap/aaa,/sapと/sapaaa/bbb
(例)前方一致と見なされない場合
/sapと/aaa,/sapと/aaasap/bbb,/sapと/aaa/sap
- 注意事項
-
-
Cookie情報の引き継ぎは,SAP ERP 6.0のSet-Cookieヘッダ仕様の「path属性」によって判断されます。ただし,SOAP通信基盤(SOAP1.1モード)を使用する場合は,「path属性」は考慮されないで,「ホスト名:ポート番号」だけが考慮されます。ポート番号が指定されていない場合はホスト名が考慮されます。
-
Set-Cookieヘッダにpath属性が含まれていない場合は,デフォルト値として「path=/」が設定されます。
-
次の例のように,Set-Cookieヘッダに属性名が「path」の属性が複数設定されている場合は,path属性に「path=/」が設定されたものとして動作します。
(例)
Set-Cookie: NAME=value; path=/sap/aaa; path=/sap/bbb
-
複数の異なるpath属性値を持つCookie情報をHTTPヘッダに設定する場合,Set-Cookieの読み込み順序に依存しないで,path属性値が詳細な順にHTTPヘッダに設定されます。
例えば,次のSet-Cookieヘッダを受け取った場合,HTTPヘッダには「cookie:NAME3=value3; NAME2=value2; NAME1=value1」が設定されます。
(例)
Set-Cookie: NAME1=value1; path=/
Set-Cookie: NAME2=value2; path=/sap
Set-Cookie: NAME3=value3; path=/sap/aaa
-
(3) ログ出力
HCSCサーバランタイム定義ファイルのmethodtrace-levelプロパティに「2」以上の値を設定した場合に,メソッドトレースにログが出力されます。