H. Cookieパラメータ利用の手引き

Webブラウザが持つCookie情報を、WebOTXサーバAPで使用するための方法について以下に説明します。

H.1. 概要

WebOTXサーバAP内でCookie情報を使用するためには、Cookie情報を送受信するためのCookie用パラメータがメソッド中に必要です。
WebAP JSP Developer のJSP開発ツールで、Cookie情報をサーバAPのCookie用パラメータにマッピングする設定を行い、作成したWebアプリケーションをWebAP JSPに転送します。
WebAP JSPでWebアプリケーションがサーバAPのメソッドを実行すると、WebブラウザのCookie情報がサーバAPに通知されます。また、サーバAPでパラメータに設定した情報をWebブラウザのCookie情報に反映します。
以下の図に実行時のCookie情報の流れを示します。

Cookie情報の流れ

以下では、Cookie情報を使用可能なサーバAPのIDLの定義方法、JSP開発ツールでのマッピング方法、Cookie情報の詳細について記述します。

H.2. IDLの定義方法

サーバAPのIDLを以下のように定義してください。

  1. メンバ名 「name」、「value」のみを持つ構造体を定義してください。
    「name」、「value」についてはそれぞれstring型で定義してください。
    メンバ名「name」、「value」はすべて小文字です。
  2. 上記で定義した構造体を要素とする制限長なし sequence を定義してください。
  3. サーバAPのメソッドのパラメータに、(2)で定義したsequenceを追加してください。
    パラメータ名は「cookie」とし、入出力属性(inout)にしてください。
    パラメータ名「cookie」はすべて小文字です。
    複数パラメータがある場合、cookieパラメータの記述位置は任意です。

IDLの定義例を以下に示します。斜体で記述している箇所は固定です。

   interface  cookieTest{
           struct  cookieST {
             string          name;
             string          value;
           };
           typedef sequence  < cookieST >   seqST;
           void method1(in string p1, out string p2, inout  seqST cookie);
   };


H.3. メソッドとのマッピング方法

以下の手順で Cookie情報をサーバAPのメソッドのパラメータとマッピングしてください。

  1. 「2.IDLの定義方法」 に従って定義したIDLファイルを作成してください。
  2. JSP開発ツールのメニューから「トランザクション」−「フェーズ設定…」を選択して、「フェーズ設定」ダイアログを表示してください。
  3. 「フェーズ設定」ダイアログの「メソッド」タブで、上記で作成したIDLファイル名および該当メソッド名を指定してください。(注1)
    Cookie情報がサーバAPのメソッドのパラメータに自動的にマッピングされます。

    (注1):ObjectSpinner バージョン4.x またはObjectSpinner 互換ライブラリ使用時は、IFファイル(ユーザがIDLファイルをコンパイルして作成したもの)を指定してください。

    「メソッド」タブの設定例

    「メソッド」タブの設定例

  4. 「メソッド」タブの「引数マッピング…」ボタンをクリックしすると、「引数設定」ダイアログを表示します。「引数設定」ダイアログの「入力引数」タブ、「出力引数・戻り値」タブで、「HTML(JSP)のフィールド名」に「Cookieを設定」と表示されていれば、正常にマッピングできています。

    「入力引数」タブの表示例

    「入力引数」タブの表示例

    「出力引数・戻り値」タブの表示例

    「出力引数・戻り値」タブの表示例

Cookie情報がマッピングできない場合は、IDLの定義が誤っている可能性があります。
以下の観点で、IDLの定義を見直してください。


H.4. Cookie情報の詳細


サーバAPが取得できるCookie情報

サーバAPのCookie用パラメータcookieは、以下のような構造体を要素とする、sequence型のパラメータです。

           struct  cookieST {
                   string          name;
                   string          value;
           };

サーバAPがCookie情報を取得時、上記の構造体の「name」には、Cookie情報の種類を表す文字列が、「value」には「name」に対応するCookie情報の値が格納されています。
Cookie情報の種類は以下のとおりです。

Cookie情報の種類 説明
NAME Cookieの名前
VALUE Cookieの値
MAXAGE Cookieの有効期限を秒単位で指定
COMMENT Cookieの目的を記述したコメント
DOMAIN Cookieのドメイン
PATH CookieがターゲットとしているすべてのURLのプレフィックス
SECURE "Secure"フラグの値
VERSION Cookieのバージョン

Cookie用パラメータcookieの展開イメージを以下に記述します。(WebブラウザのCookieが1つの場合)

パラメータ
cookie[0].name "NAME"
cookie[0].value CookieのNAMEの値
cookie[1].name "VALUE"
cookie[1].value CookieのVALUEの値
cookie[2].name "MAXAGE"
cookie[2].value CookieのMAXAGEの値
cookie[3].name "COMMENT"
cookie[3].value CookieのCOMMENTの値
cookie[4].name "DOMAIN"
cookie[4].value CookieのDOMAINの値
cookie[5].name "PATH"
cookie[5].value CookieのPATHの値
cookie[6].name "SECURE"
cookie[6].value CookieのSECUREの値
cookie[7].name "VERSION"
cookie[7].value CookieのVERSIONの値

Webブラウザが持つCookieが複数ある場合は、上記がCookieの数分パラメータに格納されています。次のCookie情報の先頭位置を知るには、cookie.name[n]="NAME"となるインデックスnを検索してください。

以下の図に、WebアプリケーションがWebブラウザから取得したHTTPデータとCookie用パラメータcookieの例を示します。(Cookieが2つある場合)

HTTPデータとCookie用パラメータcookieの例(Cookie取得時)


サーバAPから設定するCookie情報

サーバAPでは、新規追加、変更するCookie情報を、Cookie用パラメータcookieに設定します。Cookie用構造体の「name」にはCookie情報の種類を表す文字列を、「value」には「name」に指定するCookie情報の値を設定してください。

1つのCookieに設定可能なCookie情報の種類は以下の表のとおりです。

nameに設定する値(Cookie情報の種類) 省略可否 説明
NAME 必須 Cookieの名前
VALUE 必須 Cookieの値
MAXAGE 省略可能 Cookieの有効期限を秒単位で指定
COMMENT 省略可能 Cookieの目的を記述したコメント
DOMAIN 省略可能 Cookieのドメイン
PATH 省略可能 CookieがターゲットとしているすべてのURLのプレフィックス
SECURE 省略可能 "Secure"フラグの値
VERSION 省略可能 Cookieのバージョン

以下に情報設定後のパラメータcookieの展開イメージを示します(設定するCookieが1つの場合)。
なお、MAXAGE以降は省略可能です。

パラメータ
cookie[0].name "NAME"
cookie[0].value CookieのNAMEの値
cookie[1].name "VALUE"
cookie[1].value CookieのVALUEの値
cookie[2].name "MAXAGE"
cookie[2].value CookieのMAXAGEの値
cookie[3].name "COMMENT"
cookie[3].value CookieのCOMMENTの値
cookie[4].name "DOMAIN"
cookie[4].value CookieのDOMAINの値
cookie[5].name "PATH"
cookie[5].value CookieのPATHの値
cookie[6].name "SECURE"
cookie[6].value CookieのSECUREの値
cookie[7].name "VERSION"
cookie[7].value CookieのVERSIONの値

設定するCookieが複数ある場合は、上記をCookieの数分パラメータに設定してください。

以下では、Cookie情報を新規追加、変更する場合、Cookie情報の参照のみを行う場合について、Cookie用パラメータcookieの設定方法を説明します。
なお、既に存在するCookieの削除は行えません。

  1. Cookie情報を新規追加、変更する場合

    パラメータcookieには新規追加または変更するCookie情報のみを設定してください。変更しないCookieの情報は設定しないでください。設定時、出力するパラメータの領域を必ず新規確保してください。
    Cookie情報の変更はNAME、VALUE以外についてのみ行えます。
    パラメータに設定したCookie情報のうち、WebブラウザにあるCookieとNAMEが一致するものがあれば情報を更新し、NAMEが一致しない場合は、新規Cookieを作成します。

    以下の図に、サーバAPで設定後のCookie用パラメータcookieとWebブラウザに渡るHTTPデータの例を示します。(Cookie1は変更なし、Cookie2は変更、Cookie3は新規追加)

    HTTPデータとCookie用パラメータcookieの例(Cookie設定時)

    以下に、サーバAPの記述例を示します。(新規追加の場合。"COMMENT"以降の設定は省略。)

    	public void method2(java.lang.String p1, org.omg.CORBA.StringHolder p2, 
    	cookieTestPackage.seqSTHolder cookie){
    		cookie.value = new cookieTestPackage.cookieST[3];
    
    		cookie.value[0] = new cookieTestPackage.cookieST();
    		cookie.value[1] = new cookieTestPackage.cookieST();
    		cookie.value[2] = new cookieTestPackage.cookieST();
    		cookie.value[0].name = "NAME";
    		cookie.value[0].value = "xyzid";
    		cookie.value[1].name = "VALUE";
    		cookie.value[1].value = " 900000000000000002 ";
    		cookie.value[2].name = "MAXAGE";
    		cookie.value[2].value = "120";
    
    	        p2.value = p1  ;  
    	}
    


  2. Cookie情報の参照のみを行う場合

    WebブラウザにCookieの追加も変更も行わない場合は、Cookie用構造体の配列を要素数0で新規確保して、パラメータに設定してください。

    以下に、サーバAPの記述例を示します。

    	public void method1(java.lang.String p1, org.omg.CORBA.StringHolder p2, 
    	cookieTestPackage.seqSTHolder cookie){
    		cookie.value = new cookieTestPackage.cookieST[0];
    	        p2.value = p1  ;  
    	}