Webブラウザが持つCookie情報を、WebOTXサーバAPで使用するための方法について以下に説明します。
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情報を使用可能なサーバAPのIDLの定義方法、JSP開発ツールでのマッピング方法、Cookie情報の詳細について記述します。
サーバAPのIDLを以下のように定義してください。
IDLの定義例を以下に示します。斜体で記述している箇所は固定です。
interface cookieTest{
struct cookieST {
string name;
string value;
};
typedef sequence < cookieST > seqST;
void method1(in string p1, out string p2, inout seqST cookie);
};
|
以下の手順で Cookie情報をサーバAPのメソッドのパラメータとマッピングしてください。
「フェーズ設定」ダイアログの「メソッド」タブで、上記で作成したIDLファイル名および該当メソッド名を指定してください。(注1)
Cookie情報がサーバAPのメソッドのパラメータに自動的にマッピングされます。
(注1):ObjectSpinner バージョン4.x またはObjectSpinner 互換ライブラリ使用時は、IFファイル(ユーザがIDLファイルをコンパイルして作成したもの)を指定してください。
「メソッド」タブの設定例

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

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

Cookie情報がマッピングできない場合は、IDLの定義が誤っている可能性があります。
以下の観点で、IDLの定義を見直してください。
■サーバ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つある場合)

■サーバ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の削除は行えません。
Cookie情報を新規追加、変更する場合
パラメータcookieには新規追加または変更するCookie情報のみを設定してください。変更しないCookieの情報は設定しないでください。設定時、出力するパラメータの領域を必ず新規確保してください。
Cookie情報の変更はNAME、VALUE以外についてのみ行えます。
パラメータに設定したCookie情報のうち、WebブラウザにあるCookieとNAMEが一致するものがあれば情報を更新し、NAMEが一致しない場合は、新規Cookieを作成します。
以下の図に、サーバAPで設定後のCookie用パラメータcookieとWebブラウザに渡るHTTPデータの例を示します。(Cookie1は変更なし、Cookie2は変更、Cookie3は新規追加)

以下に、サーバ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 ;
}
|
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 ;
}
|