JP2005010913A - セッション管理方法 - Google Patents
セッション管理方法 Download PDFInfo
- Publication number
- JP2005010913A JP2005010913A JP2003171992A JP2003171992A JP2005010913A JP 2005010913 A JP2005010913 A JP 2005010913A JP 2003171992 A JP2003171992 A JP 2003171992A JP 2003171992 A JP2003171992 A JP 2003171992A JP 2005010913 A JP2005010913 A JP 2005010913A
- Authority
- JP
- Japan
- Prior art keywords
- session
- request
- message
- http
- destination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】データの要求元、要求先の2コンピュータ間における接続の継続性を、HTTPメッセージのメッセージヘッダを利用することによって管理するセッション管理方法を提供する。
【解決手段】クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加しアプリケーションサーバへ送信する。サーバ側セッション管理部5は、セッション開始要求メッセージを受信すると、セッションを識別するためのセッションIDを生成、記憶領域に記録し、HTTPレスポンスメッセージのメッセージヘッダにセッションIDを含むCookie作成要求メッセージを付加し、クライアントへ送信する。クライアント側セッション管理部6は、Cookie作成要求メッセージを受信すると、Cookieを作成、記憶領域に記録する。
【選択図】 図1
【解決手段】クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加しアプリケーションサーバへ送信する。サーバ側セッション管理部5は、セッション開始要求メッセージを受信すると、セッションを識別するためのセッションIDを生成、記憶領域に記録し、HTTPレスポンスメッセージのメッセージヘッダにセッションIDを含むCookie作成要求メッセージを付加し、クライアントへ送信する。クライアント側セッション管理部6は、Cookie作成要求メッセージを受信すると、Cookieを作成、記憶領域に記録する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、データの要求元、要求先の2コンピュータ間における接続の継続性を、HTTPメッセージによって管理制御するセッション管理方法に関する。
【0002】
【従来の技術】
Webの開発者が直面している問題の1つとして、「ばらばらのHTMLページを組み合わせて、一貫性のあるアプリケーションを作成するにはどうすればいいのか?」ということがある。この問題は、Webの開発では特に重要になっている。そもそもHTTPがステートレスなプロトコルであることが原因であり、そのためWebサーバに対するブラウザ要求はそれぞれ独立した状態となってしまう。また、Webサーバはブラウザの過去の要求に関する記憶を持っていない。さらに、HTTP1.0プロトコルには、ブラウザからの複数の要求の間で状態情報を保持するためのメカニズムが用意されていない。
【0003】
そこで従来は、この問題を克服するために、Web上で一貫性のあるユーザセッション管理を可能とするActive Server Pages(ASP)や、Cookieを用いてセッション管理を行っている。
【0004】
【発明が解決しようとする課題】
しかしながら、従来のセッション管理の手法には下記のような問題点がある。
【0005】
1)セッションの開始がサーバ主導であり、クライアントからセッション開始の要求をすることができない。従来は、どこからセッションを開始するかはサーバから提供されるWebページに従っていた。
【0006】
2)セッションの終了について明示的な終了要求通知が無い。従来は、指定されたアイドル期間が終了した時点で、そのセッションをタイムアウトさせていた。
【0007】
3)セッションを継続している間に発生した様々な状況を、コンテンツを送信することでしか通知できない。従来は、例えば何等かのエラーが発生した場合、エラーを表示するためのWebページをクライアントへ送信することで通知していた。
【0008】
このような問題が従来のセッション管理においてはあり、より詳細にセッションの状態を管理し、継続性を制御することが必要とされていた。
【0009】
本発明は上記事情に鑑み、データの要求元、要求先の2コンピュータ間における接続の継続性を、HTTPメッセージのメッセージヘッダを利用して管理制御するセッション管理方法を提供することを目的とする。
【0010】
【課題を解決するための手段】
上記目的を達成するために、請求項1に記載の発明であるセッション管理方法は、処理の要求元、要求先の2コンピュータ間における接続の継続性を、HTTPメッセージのメッセージヘッダによって管理制御するセッション管理方法であって、前記要求元、および前記要求先の間でセッションを開始する際は、前記要求元が、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加して前記要求先へ送信する工程と、前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション開始要求メッセージを取得すると、セッションを識別するセッションIDを生成し記憶する工程と、前記要求先が、HTTPレスポンスメッセージのメッセージヘッダに前記セッションIDを付加して前記要求元へ送信する工程と、前記要求元が、前記HTTPレスポンスメッセージのメッセージヘッダから前記セッションIDを取得し記憶する工程とを有することを特徴とする。
【0011】
請求項1の発明によれば、要求元からセッション開始要求メッセージを付加したHTTPリクエストメッセージを送信することによって、任意にセッションの開始を行うことが可能となる。
【0012】
また、請求項2に記載の発明であるセッション管理方法は、請求項1に記載のセッション管理方法であって、セッションが開始された後、前記要求元から前記要求先へ処理を要求する際は、前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに前記セッションIDを付加して前記要求先へ送信する工程と、前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッションIDを取得すると、記憶している前記セッションIDと比較し、一致する場合は、前記要求元と前記要求先との接続が継続されていると判定する工程とを有することを特徴とする。
【0013】
また、請求項3に記載の発明であるセッション管理方法は、請求項1乃至請求項2に記載のセッション管理方法であって、前記要求元、および前記要求先の間でセッションを終了する際は、前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加して前記要求先へ送信する工程と、前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション終了要求メッセージを取得すると、セッションを識別するセッションIDを無効にする工程と、前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッションが終了した旨のメッセージを付加して前記要求元へ送信する工程と、前記要求元が、前記HTTPレスポンスメッセージのメッセージヘッダから前記セッションが終了した旨のメッセージを取得すると、前記セッションIDを破棄する工程とを有することを特徴とする。
【0014】
請求項3の発明によれば、前記要求元からセッション終了要求メッセージを付加したHTTPリクエストメッセージを送信することによって、任意にセッションの終了を明示的に行うことが可能となる。
【0015】
また、請求項4に記載の発明であるセッション管理方法は、請求項1乃至請求項3に記載のセッション管理方法であって、セッションが開始された後、前記要求元から前記要求先へ処理を要求した際に、前記要求先が当該処理を実行できない場合、または前記要求元から要求された処理が不当な場合、前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッション終了メッセージと、当該要求先の状態を示すメッセージを付加して前記要求元へ送信する工程を有することを特徴とする。
【0016】
請求項4の発明によれば、前記要求先から状態を示すメッセージを付加したHTTPレスポンスメッセージを送信することによって前記要求元は前記要求先の状態を把握することが可能となる。
【0017】
また、請求項5に記載の発明であるセッション管理方法は、請求項1乃至請求項4に記載のセッション管理方法であって、セッションが開始された後、前記要求元から前記要求先へ処理の要求がされないまま所定の期間が経過した場合、前記要求先が、セッションを識別するセッションIDを無効にする工程を有することを特徴とする。
【0018】
また、請求項6に記載の発明であるセッション管理方法は、請求項5に記載のセッション管理方法であって、所定の期間が経過し、前記セッションIDが無効にされた後、当該セッションIDを含む前記HTTPリクエストメッセージをもって前記要求元から前記要求先へ処理を要求した場合、前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッション終了メッセージと、当該要求先の状態を示すメッセージを付加して前記要求元へ送信する工程を有することを特徴とする。
【0019】
また、請求項7に記載の発明であるセッション管理方法は、請求項5乃至請求項6に記載のセッション管理方法であって、所定の期間が経過し、前記セッションIDが無効にされた後、セッションを再開する場合は、前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに当該セッションIDと前記セッション開始要求メッセージとを付加して前記要求先へ送信する工程を有することを特徴とする。
【0020】
また、請求項8に記載の発明であるセッション管理方法は、請求項1乃至請求項7に記載のセッション管理方法であって、前記要求元、および前記要求先の間でセッションを開始する際、前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに前記セッション開始要求メッセージと前記セッション終了要求メッセージとを付加して前記要求先へ送信する工程と、前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション開始要求メッセージと前記セッション終了要求メッセージとを取得すると、前記セッションIDを生成せずに、要求された処理を実行する工程とを有することを特徴とする。
【0021】
【発明の実施の形態】
本発明の実施形態について、図1〜図4に基づいて説明する。
【0022】
図1に、実施形態の一例として、ホストコンピュータ3、アプリケーションサーバ1、クライアント2、それらを相互に接続するネットワーク4からなるシステムを示す。アプリケーションサーバ1が、セッションIDを発行するHTTPサーバであり、クライアント2が、発行されたセッションIDを含むCookieを作成する側がHTTPクライアントである。
【0023】
アプリケーションサーバ1は、サーバ側セッション管理部5と、セッションIDを記憶する記憶領域を有する。また、クライアント2は、クライアント側セッション管理部6と、Cookieを記憶する記憶領域を有する。この記憶領域は、主記憶装置、補助記憶装置のいずれにあっても良い。
【0024】
サーバ側セッション管理部5は、セッションを開始終了する機能、セッションを識別するためのセッションIDを生成し記憶領域に記録する機能、セッションIDを破棄(無効化)する機能、破棄(無効化)されたセッションIDを有効化する機能、レスポンスメッセージのメッセージヘッダにセッションIDを含むCookie作成要求メッセージを付加する機能、レスポンスメッセージのメッセージヘッダにセッションの状態を示すメッセージを付加する機能を有する。
【0025】
また、クライアント側セッション管理部6は、リクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加する機能、Cookie作成要求メッセージに従ってCookieを作成、記憶領域に記録する機能、CookieからセッションIDを取得し、リクエストメッセージのメッセージヘッダに取得したセッションIDを付加する機能、リクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加する機能、記憶領域に記録されているCookieを破棄する機能を有する。
【0026】
なお、アプリケーションサーバ1とホストコンピュータ3は専用線で接続され、両者間の通信はステートフル(セッション管理がされている)であることとする。
【0027】
次に、図2〜図4のシーケンス図に基づいて、一連のHTTPファイル転送処理におけるセッション管理制御の処理について説明する。
【0028】
≪クライアントからのセッション開始≫
クライアント2からアプリケーションサーバ1に対してセッションの開始を要求するときは、まず、クライアント2はセッションの開始を示すセッション開始要求メッセージをアプリケーションサーバ1に対して送信する。
【0029】
クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加し、そのHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS01)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0030】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
X−Yoyaku−Session: Session=Start
X−Yoyaku−PCID: PCID=895kjh8
0x0d+0x0a(CR(キャリッジリターン)+LF(ラインフィールド))
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPリクエストメッセージのうち、「X−Yoyaku−Session: Session=Start」がセッション開始要求メッセージである。また、「X−Yoyaku−PCID: PCID=895kjh8」はクライアント2を識別するID情報である。
【0031】
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッション開始要求メッセージが含まれていた場合、セッションを識別するためのセッションIDを生成、記憶領域に記録する(ステップS02)。
【0032】
次に、サーバ側セッション管理部5は、HTTPレスポンスメッセージのメッセージヘッダにセッションIDを含むCookie作成要求メッセージを付加し、そのHTTPレスポンスメッセージをクライアント2へ送信する(ステップS03)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0033】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Status=0000
X−Yoyaku−Contents: Contents=Ignore
Set−Cookie: Session_ID=1234;Path=www.asp_computer.com/Yoyaku/NAME_profile
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPレスポンスメッセージのうち、「SessionID=1234」が生成されたセッションIDである。また、「X−Yoyaku−Session: Status=0000」は、セッションの状態を表すメッセージであり、「Status=0000」は、要求されたセッションに関する処理が正常に行われたことを示す(ここでは正常にセッションが開始継続されていることを示す)。また、「X−Yoyaku−Contents: Contents=Ignore」は、メッセージボディに記述されている情報は無効であることを示すメッセージである。
【0034】
クライアント2のクライアント側セッション管理部6は、受信したHTTPレスポンスメッセージにCookie作成要求メッセージが含まれていた場合、そのCookie作成要求メッセージに従ってCookieを作成、記憶領域に記録する(ステップS04)。Cookieとして、下記の情報が記録される。
【0035】
Session_ID=1234(セッションID)
www.asp_computer.com/Yoyaku/NAME_profile(有効ドメイン、パス)
≪セッションの継続≫
セッションが開始された後、クライアント2からアプリケーションサーバ1に対して何等かの要求を行う場合は、クライアント2はセッションIDをメッセージヘッダに付加してアプリケーションサーバ1に送信する。
【0036】
例えば、クライアント2から予約情報の照会を行う場合、クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッションIDを付加し、メッセージボディに予約照会の要求を記述したHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS11)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0037】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
Cookie: Session_ID=1234
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会>…
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッションIDが含まれていた場合、記憶しているセッションIDとHTTPリクエストメッセージ中のセッションIDとを照合し(ステップS12)、継続中のセッションであるか判定する(ステップS13)。
【0038】
継続中のセッションであると判定した場合、アプリケーションサーバ1はホストコンピュータ3に対して予約情報の照会を行う(ステップS14)。ホストコンピュータ3が予約情報を取得、返信すると(ステップS15)、アプリケーションサーバ1のサーバ側セッション管理部5は、予約情報を含むHTTPレスポンスメッセージをクライアント2へ送信する(ステップS16)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0039】
HTTP/1.1 202 Accepted
Content−Type: text/xml
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?><予約情報>…
クライアント2は、上記のHTTPレスポンスメッセージを受信すると、予約情報を表示する(ステップS17)。
【0040】
なお、ステップS13でセッションが継続していないと判定されると、セッションが終了していることを示すエラーコードが記述されたメッセージがクライアント2へ送信される(詳細は後述)。
【0041】
≪クライアントからのセッション終了≫
クライアント2からアプリケーションサーバ1に対してセッションの終了開始を要求するときは、アプリケーションサーバ1は、まず、クライアント2からセッションの開始を示すセッション終了要求メッセージをアプリケーションサーバ1に対して送信する。
【0042】
まず、クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加し、そのHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS21)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0043】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.aps_computer.com/
X−Yoyaku−Session: Session=End
Cookie:Session_ID=1234
X−Yoyaku−Contents: Contents=Ignore
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPリクエストメッセージのうち、「X−Yoyaku−Session: Session=End」がセッション終了要求メッセージであり、セッションIDと供に送信される。
【0044】
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッション終了要求メッセージが含まれていた場合、記憶しているセッションIDとHTTPリクエストメッセージ中のセッションIDとを照合し(ステップS22)、継続中のセッションであるか判定する(ステップS23)。照合の結果、継続中のセッションであると判定すると、サーバ側セッション管理部5は、そのセッション終了要求メッセージと供に送信されるセッションIDを破棄(または無効化)する(ステップS24)。
【0045】
次に、サーバ側セッション管理部5は、HTTPレスポンスメッセージのメッセージヘッダにセッションが終了したことを示すメッセージを付加し、そのHTTPレスポンスメッセージをクライアント2へ送信する(ステップS25)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0046】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Status: Status=0000
X−Yoyaku−Contents: Contents=Ignore
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPレスポンスメッセージのうち、「X−Yoyaku−Status: Status=0000」が、セッションが終了したことを示すメッセージである。クライアント2のクライアント側セッション管理部6は、このメッセージを受信すると、セッションが終了したことを認識し、Cookieを破棄する(ステップS26)。
【0047】
≪サーバ障害に伴うセッション終了≫
クライアント2からHTTPリクエストメッセージを受信した後、アプリケーションサーバ1で何等かの障害を生じ要求された処理を継続して行うことができなくなった場合、アプリケーションサーバ1はセッションを終了する。
【0048】
アプリケーションサーバ1で何等かの障害が発生すると(ステップS31)、アプリケーションサーバ1のサーバ側セッション管理部5は、HTTPレスポンスメッセージのメッセージヘッダにセッションが終了したことを示すメッセージを付加し、そのHTTPレスポンスメッセージをクライアント2へ送信する(ステップS32)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0049】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Session=End
X−Yoyaku−Status: Status=XXXX
X−Yoyaku −Contents: Contents=Ignore
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPレスポンスメッセージのうち、「X−Yoyaku−Session: Session=End」が、セッションが終了したことを示すメッセージである。クライアント2のクライアント側セッション管理部6は、このメッセージを受信すると、セッションが終了したことを認識し、Cookieを破棄する(ステップS33)。また、上記のHTTPレスポンスメッセージのうち、「X−Yoyaku−Status: Status=XXXX」は、障害の状態を表すメッセージであり、XXXXに障害の状態に応じたステータスコードが記述される。
【0050】
≪クライアント障害に伴うセッションタイムアウト≫
セッションが開始された後、クライアント2で何等かの障害を生じアプリケーションサーバ1に対して要求を行うことができなくなった場合、アプリケーションサーバ1はセッションを終了する。
【0051】
クライアント2からセッション終了要求メッセージを送信することができる場合は、クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加し、そのHTTPリクエストメッセージをアプリケーションサーバ1へ送信し(ステップS41)、サーバ側セッション管理部5は、上述の≪クライアント2からのセッション終了≫と同じ処理を行い、セッションを終了する(ステップS42)。
【0052】
また、クライアント2からセッション終了要求メッセージをも送信できない場合、またはクライアント2からアプリケーションサーバ1に対して何等アクションがない場合は(ステップS43)、アプリケーションサーバ1のサーバ側セッション管理部5は、一定時間、セッションを継続した後(ステップS44)、セッションIDを破棄(または無効化)し、セッションを終了する(ステップS45)。
【0053】
≪タイムアウト後におけるクライアントからの要求≫
タイムアウトが発生しアプリケーションサーバ1でセッションを終了した後に、クライアント2からHTTPリクエストメッセージを受信した場合、アプリケーションサーバ1はクライアント2に対してセッションが既に終了していることを通知する。
【0054】
クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッションIDを付加し、メッセージボディに例えば予約照会の要求を記述したHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS51)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0055】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
Cookie: Session_ID=1234
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会>…
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッションIDが含まれていた場合、記憶しているセッションIDとHTTPリクエストメッセージ中のセッションIDとを照合し(ステップS52)、継続中のセッションであるか判定する(ステップS53)。
【0056】
既に終了したセッションであると判定した場合、アプリケーションサーバ1のサーバ側セッション管理部5は、HTTPレスポンスメッセージのメッセージヘッダにセッションが終了したことを示すメッセージを付加し、そのHTTPレスポンスメッセージをクライアント2へ送信する(ステップS54)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0057】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Session=End
X−Yoyaku−Session: Status=XXXX
X−Yoyaku−Contents: Contents=Ignore
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPレスポンスメッセージのうち、「X−Yoyaku−Session: Session=End」が、セッションが終了したことを示すメッセージであり、「X−Yoyaku−Session: Status=XXXX」が、セッションが存在しないことを示すメッセージである。クライアント2のクライアント側セッション管理部6は、このメッセージを受信すると、セッションが終了したことを認識し、Cookieを破棄する(ステップS55)。
【0058】
なお、ステップS53でセッションが継続中であると判定した場合は、通常の処理を行う(ステップS56)。
【0059】
≪タイムアウト後におけるセッション情報付きでのクライアントからの要求≫
タイムアウトが発生しアプリケーションサーバ1でセッションを終了した後に、クライアント2からセッション開始要求メッセージを含むHTTPリクエストメッセージを受信した場合、アプリケーションサーバ1は破棄(無効化)したセッションIDを有効化し、要求された処理を行う。
【0060】
クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッションIDとセッション開始要求メッセージを付加し、メッセージボディに例えば予約照会の要求を記述したHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS61)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0061】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
Cookie: Session_ID=1234
X−Yoyaku−Session: Session=Start
X−Yoyaku−PCID: PCID=895kjh8
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会>…
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッションIDが含まれていた場合、記憶しているセッションIDとHTTPリクエストメッセージ中のセッションIDとを照合し(ステップS62)、継続中のセッションであるか判定する(ステップS63)。
【0062】
既に終了したセッションであると判定し、さらにセッション開始要求メッセージが存在する場合、アプリケーションサーバ1のサーバ側セッション管理部5は、破棄(無効化)したセッションIDを有効化する(ステップS64)。
【0063】
セッションIDが有効化された後、アプリケーションサーバ1はホストコンピュータ3に対して予約情報の照会を行う(ステップS65)。ホストコンピュータ3が予約情報を取得、返信すると(ステップS66)、アプリケーションサーバ1のサーバ側セッション管理部5は、予約情報を含むHTTPレスポンスメッセージをクライアント2へ送信する(ステップS67)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0064】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Status=0000
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会結果>…
クライアント2は、上記のHTTPレスポンスメッセージを受信すると、予約情報を表示する(ステップS68)。
【0065】
≪クライアントからセッション開始と終了とを同時要求≫
クライアント2からセッション開始要求メッセージとセッション終了要求メッセージとを含むHTTPリクエストメッセージを受信した場合、アプリケーションサーバ1はセッションIDを生成せず要求された処理を行う。
【0066】
クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージとセッション終了要求メッセージとを付加し、メッセージボディに例えば予約照会の要求を記述したHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS71)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0067】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
X−Yoyaku−Session: Session=Start
X−Yoyaku−Session: Session=End
X−Yoyaku−PCID: PCID=895kjh8
0x0d+0x0a(CR(キャリッジリターン)+LF(ラインフィールド))
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会>…
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッション開始要求メッセージとセッション終了要求メッセージとが含まれていた場合、セッションIDを生成せずに、メッセージボディに記述されている処理に移行し、例えば、ホストコンピュータ3に対して予約情報の照会を行う(ステップS72)。ホストコンピュータ3が予約情報を取得、返信すると(ステップS73)、アプリケーションサーバ1のサーバ側セッション管理部5は、予約情報を含むHTTPレスポンスメッセージをクライアント2へ送信する(ステップS74)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例であり、処理が正常に行われたことを示すメッセージが「X−Yoyaku−Session: Status=0000」付加される。
【0068】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Status=0000
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会結果>…
クライアント2は、上記のHTTPレスポンスメッセージを受信すると、予約情報を表示する(ステップS68)。
【0069】
このように、HTTPリクエストメッセージとHTTPレスポンスメッセージに、拡張ヘッダとして要求メッセージやステータスを示すメッセージを付加することによって、セッション管理を行うことが可能となる。
【0070】
【発明の効果】
以上説明したように、本発明によれば、要求元から任意にセッション開始要求メッセージを付加したHTTPリクエストメッセージを送信することによってセッションの開始を行い、また、要求元からセッション終了要求メッセージを付加したHTTPリクエストメッセージを送信することによって任意にセッションの終了を明示的に行うので、詳細にセッションの継続性を制御することが可能となる。さらに、要求先からHTTPレスポンスメッセージを送信することによって要求元は要求先の状態を把握することが可能となる。
【図面の簡単な説明】
【図1】本実施形態における機能構成図である。
【図2】セッション管理の手順を示すシーケンス図である。
【図3】セッション管理の手順を示すシーケンス図である。
【図4】セッション管理の手順を示すシーケンス図である。
【符号の説明】
1 アプリケーションサーバ
2 クライアント
3 ホストコンピュータ
4 ネットワーク
5 サーバ側セッション管理部
6 クライアント側セッション管理部
【発明の属する技術分野】
本発明は、データの要求元、要求先の2コンピュータ間における接続の継続性を、HTTPメッセージによって管理制御するセッション管理方法に関する。
【0002】
【従来の技術】
Webの開発者が直面している問題の1つとして、「ばらばらのHTMLページを組み合わせて、一貫性のあるアプリケーションを作成するにはどうすればいいのか?」ということがある。この問題は、Webの開発では特に重要になっている。そもそもHTTPがステートレスなプロトコルであることが原因であり、そのためWebサーバに対するブラウザ要求はそれぞれ独立した状態となってしまう。また、Webサーバはブラウザの過去の要求に関する記憶を持っていない。さらに、HTTP1.0プロトコルには、ブラウザからの複数の要求の間で状態情報を保持するためのメカニズムが用意されていない。
【0003】
そこで従来は、この問題を克服するために、Web上で一貫性のあるユーザセッション管理を可能とするActive Server Pages(ASP)や、Cookieを用いてセッション管理を行っている。
【0004】
【発明が解決しようとする課題】
しかしながら、従来のセッション管理の手法には下記のような問題点がある。
【0005】
1)セッションの開始がサーバ主導であり、クライアントからセッション開始の要求をすることができない。従来は、どこからセッションを開始するかはサーバから提供されるWebページに従っていた。
【0006】
2)セッションの終了について明示的な終了要求通知が無い。従来は、指定されたアイドル期間が終了した時点で、そのセッションをタイムアウトさせていた。
【0007】
3)セッションを継続している間に発生した様々な状況を、コンテンツを送信することでしか通知できない。従来は、例えば何等かのエラーが発生した場合、エラーを表示するためのWebページをクライアントへ送信することで通知していた。
【0008】
このような問題が従来のセッション管理においてはあり、より詳細にセッションの状態を管理し、継続性を制御することが必要とされていた。
【0009】
本発明は上記事情に鑑み、データの要求元、要求先の2コンピュータ間における接続の継続性を、HTTPメッセージのメッセージヘッダを利用して管理制御するセッション管理方法を提供することを目的とする。
【0010】
【課題を解決するための手段】
上記目的を達成するために、請求項1に記載の発明であるセッション管理方法は、処理の要求元、要求先の2コンピュータ間における接続の継続性を、HTTPメッセージのメッセージヘッダによって管理制御するセッション管理方法であって、前記要求元、および前記要求先の間でセッションを開始する際は、前記要求元が、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加して前記要求先へ送信する工程と、前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション開始要求メッセージを取得すると、セッションを識別するセッションIDを生成し記憶する工程と、前記要求先が、HTTPレスポンスメッセージのメッセージヘッダに前記セッションIDを付加して前記要求元へ送信する工程と、前記要求元が、前記HTTPレスポンスメッセージのメッセージヘッダから前記セッションIDを取得し記憶する工程とを有することを特徴とする。
【0011】
請求項1の発明によれば、要求元からセッション開始要求メッセージを付加したHTTPリクエストメッセージを送信することによって、任意にセッションの開始を行うことが可能となる。
【0012】
また、請求項2に記載の発明であるセッション管理方法は、請求項1に記載のセッション管理方法であって、セッションが開始された後、前記要求元から前記要求先へ処理を要求する際は、前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに前記セッションIDを付加して前記要求先へ送信する工程と、前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッションIDを取得すると、記憶している前記セッションIDと比較し、一致する場合は、前記要求元と前記要求先との接続が継続されていると判定する工程とを有することを特徴とする。
【0013】
また、請求項3に記載の発明であるセッション管理方法は、請求項1乃至請求項2に記載のセッション管理方法であって、前記要求元、および前記要求先の間でセッションを終了する際は、前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加して前記要求先へ送信する工程と、前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション終了要求メッセージを取得すると、セッションを識別するセッションIDを無効にする工程と、前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッションが終了した旨のメッセージを付加して前記要求元へ送信する工程と、前記要求元が、前記HTTPレスポンスメッセージのメッセージヘッダから前記セッションが終了した旨のメッセージを取得すると、前記セッションIDを破棄する工程とを有することを特徴とする。
【0014】
請求項3の発明によれば、前記要求元からセッション終了要求メッセージを付加したHTTPリクエストメッセージを送信することによって、任意にセッションの終了を明示的に行うことが可能となる。
【0015】
また、請求項4に記載の発明であるセッション管理方法は、請求項1乃至請求項3に記載のセッション管理方法であって、セッションが開始された後、前記要求元から前記要求先へ処理を要求した際に、前記要求先が当該処理を実行できない場合、または前記要求元から要求された処理が不当な場合、前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッション終了メッセージと、当該要求先の状態を示すメッセージを付加して前記要求元へ送信する工程を有することを特徴とする。
【0016】
請求項4の発明によれば、前記要求先から状態を示すメッセージを付加したHTTPレスポンスメッセージを送信することによって前記要求元は前記要求先の状態を把握することが可能となる。
【0017】
また、請求項5に記載の発明であるセッション管理方法は、請求項1乃至請求項4に記載のセッション管理方法であって、セッションが開始された後、前記要求元から前記要求先へ処理の要求がされないまま所定の期間が経過した場合、前記要求先が、セッションを識別するセッションIDを無効にする工程を有することを特徴とする。
【0018】
また、請求項6に記載の発明であるセッション管理方法は、請求項5に記載のセッション管理方法であって、所定の期間が経過し、前記セッションIDが無効にされた後、当該セッションIDを含む前記HTTPリクエストメッセージをもって前記要求元から前記要求先へ処理を要求した場合、前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッション終了メッセージと、当該要求先の状態を示すメッセージを付加して前記要求元へ送信する工程を有することを特徴とする。
【0019】
また、請求項7に記載の発明であるセッション管理方法は、請求項5乃至請求項6に記載のセッション管理方法であって、所定の期間が経過し、前記セッションIDが無効にされた後、セッションを再開する場合は、前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに当該セッションIDと前記セッション開始要求メッセージとを付加して前記要求先へ送信する工程を有することを特徴とする。
【0020】
また、請求項8に記載の発明であるセッション管理方法は、請求項1乃至請求項7に記載のセッション管理方法であって、前記要求元、および前記要求先の間でセッションを開始する際、前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに前記セッション開始要求メッセージと前記セッション終了要求メッセージとを付加して前記要求先へ送信する工程と、前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション開始要求メッセージと前記セッション終了要求メッセージとを取得すると、前記セッションIDを生成せずに、要求された処理を実行する工程とを有することを特徴とする。
【0021】
【発明の実施の形態】
本発明の実施形態について、図1〜図4に基づいて説明する。
【0022】
図1に、実施形態の一例として、ホストコンピュータ3、アプリケーションサーバ1、クライアント2、それらを相互に接続するネットワーク4からなるシステムを示す。アプリケーションサーバ1が、セッションIDを発行するHTTPサーバであり、クライアント2が、発行されたセッションIDを含むCookieを作成する側がHTTPクライアントである。
【0023】
アプリケーションサーバ1は、サーバ側セッション管理部5と、セッションIDを記憶する記憶領域を有する。また、クライアント2は、クライアント側セッション管理部6と、Cookieを記憶する記憶領域を有する。この記憶領域は、主記憶装置、補助記憶装置のいずれにあっても良い。
【0024】
サーバ側セッション管理部5は、セッションを開始終了する機能、セッションを識別するためのセッションIDを生成し記憶領域に記録する機能、セッションIDを破棄(無効化)する機能、破棄(無効化)されたセッションIDを有効化する機能、レスポンスメッセージのメッセージヘッダにセッションIDを含むCookie作成要求メッセージを付加する機能、レスポンスメッセージのメッセージヘッダにセッションの状態を示すメッセージを付加する機能を有する。
【0025】
また、クライアント側セッション管理部6は、リクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加する機能、Cookie作成要求メッセージに従ってCookieを作成、記憶領域に記録する機能、CookieからセッションIDを取得し、リクエストメッセージのメッセージヘッダに取得したセッションIDを付加する機能、リクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加する機能、記憶領域に記録されているCookieを破棄する機能を有する。
【0026】
なお、アプリケーションサーバ1とホストコンピュータ3は専用線で接続され、両者間の通信はステートフル(セッション管理がされている)であることとする。
【0027】
次に、図2〜図4のシーケンス図に基づいて、一連のHTTPファイル転送処理におけるセッション管理制御の処理について説明する。
【0028】
≪クライアントからのセッション開始≫
クライアント2からアプリケーションサーバ1に対してセッションの開始を要求するときは、まず、クライアント2はセッションの開始を示すセッション開始要求メッセージをアプリケーションサーバ1に対して送信する。
【0029】
クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加し、そのHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS01)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0030】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
X−Yoyaku−Session: Session=Start
X−Yoyaku−PCID: PCID=895kjh8
0x0d+0x0a(CR(キャリッジリターン)+LF(ラインフィールド))
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPリクエストメッセージのうち、「X−Yoyaku−Session: Session=Start」がセッション開始要求メッセージである。また、「X−Yoyaku−PCID: PCID=895kjh8」はクライアント2を識別するID情報である。
【0031】
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッション開始要求メッセージが含まれていた場合、セッションを識別するためのセッションIDを生成、記憶領域に記録する(ステップS02)。
【0032】
次に、サーバ側セッション管理部5は、HTTPレスポンスメッセージのメッセージヘッダにセッションIDを含むCookie作成要求メッセージを付加し、そのHTTPレスポンスメッセージをクライアント2へ送信する(ステップS03)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0033】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Status=0000
X−Yoyaku−Contents: Contents=Ignore
Set−Cookie: Session_ID=1234;Path=www.asp_computer.com/Yoyaku/NAME_profile
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPレスポンスメッセージのうち、「SessionID=1234」が生成されたセッションIDである。また、「X−Yoyaku−Session: Status=0000」は、セッションの状態を表すメッセージであり、「Status=0000」は、要求されたセッションに関する処理が正常に行われたことを示す(ここでは正常にセッションが開始継続されていることを示す)。また、「X−Yoyaku−Contents: Contents=Ignore」は、メッセージボディに記述されている情報は無効であることを示すメッセージである。
【0034】
クライアント2のクライアント側セッション管理部6は、受信したHTTPレスポンスメッセージにCookie作成要求メッセージが含まれていた場合、そのCookie作成要求メッセージに従ってCookieを作成、記憶領域に記録する(ステップS04)。Cookieとして、下記の情報が記録される。
【0035】
Session_ID=1234(セッションID)
www.asp_computer.com/Yoyaku/NAME_profile(有効ドメイン、パス)
≪セッションの継続≫
セッションが開始された後、クライアント2からアプリケーションサーバ1に対して何等かの要求を行う場合は、クライアント2はセッションIDをメッセージヘッダに付加してアプリケーションサーバ1に送信する。
【0036】
例えば、クライアント2から予約情報の照会を行う場合、クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッションIDを付加し、メッセージボディに予約照会の要求を記述したHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS11)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0037】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
Cookie: Session_ID=1234
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会>…
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッションIDが含まれていた場合、記憶しているセッションIDとHTTPリクエストメッセージ中のセッションIDとを照合し(ステップS12)、継続中のセッションであるか判定する(ステップS13)。
【0038】
継続中のセッションであると判定した場合、アプリケーションサーバ1はホストコンピュータ3に対して予約情報の照会を行う(ステップS14)。ホストコンピュータ3が予約情報を取得、返信すると(ステップS15)、アプリケーションサーバ1のサーバ側セッション管理部5は、予約情報を含むHTTPレスポンスメッセージをクライアント2へ送信する(ステップS16)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0039】
HTTP/1.1 202 Accepted
Content−Type: text/xml
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?><予約情報>…
クライアント2は、上記のHTTPレスポンスメッセージを受信すると、予約情報を表示する(ステップS17)。
【0040】
なお、ステップS13でセッションが継続していないと判定されると、セッションが終了していることを示すエラーコードが記述されたメッセージがクライアント2へ送信される(詳細は後述)。
【0041】
≪クライアントからのセッション終了≫
クライアント2からアプリケーションサーバ1に対してセッションの終了開始を要求するときは、アプリケーションサーバ1は、まず、クライアント2からセッションの開始を示すセッション終了要求メッセージをアプリケーションサーバ1に対して送信する。
【0042】
まず、クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加し、そのHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS21)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0043】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.aps_computer.com/
X−Yoyaku−Session: Session=End
Cookie:Session_ID=1234
X−Yoyaku−Contents: Contents=Ignore
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPリクエストメッセージのうち、「X−Yoyaku−Session: Session=End」がセッション終了要求メッセージであり、セッションIDと供に送信される。
【0044】
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッション終了要求メッセージが含まれていた場合、記憶しているセッションIDとHTTPリクエストメッセージ中のセッションIDとを照合し(ステップS22)、継続中のセッションであるか判定する(ステップS23)。照合の結果、継続中のセッションであると判定すると、サーバ側セッション管理部5は、そのセッション終了要求メッセージと供に送信されるセッションIDを破棄(または無効化)する(ステップS24)。
【0045】
次に、サーバ側セッション管理部5は、HTTPレスポンスメッセージのメッセージヘッダにセッションが終了したことを示すメッセージを付加し、そのHTTPレスポンスメッセージをクライアント2へ送信する(ステップS25)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0046】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Status: Status=0000
X−Yoyaku−Contents: Contents=Ignore
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPレスポンスメッセージのうち、「X−Yoyaku−Status: Status=0000」が、セッションが終了したことを示すメッセージである。クライアント2のクライアント側セッション管理部6は、このメッセージを受信すると、セッションが終了したことを認識し、Cookieを破棄する(ステップS26)。
【0047】
≪サーバ障害に伴うセッション終了≫
クライアント2からHTTPリクエストメッセージを受信した後、アプリケーションサーバ1で何等かの障害を生じ要求された処理を継続して行うことができなくなった場合、アプリケーションサーバ1はセッションを終了する。
【0048】
アプリケーションサーバ1で何等かの障害が発生すると(ステップS31)、アプリケーションサーバ1のサーバ側セッション管理部5は、HTTPレスポンスメッセージのメッセージヘッダにセッションが終了したことを示すメッセージを付加し、そのHTTPレスポンスメッセージをクライアント2へ送信する(ステップS32)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0049】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Session=End
X−Yoyaku−Status: Status=XXXX
X−Yoyaku −Contents: Contents=Ignore
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPレスポンスメッセージのうち、「X−Yoyaku−Session: Session=End」が、セッションが終了したことを示すメッセージである。クライアント2のクライアント側セッション管理部6は、このメッセージを受信すると、セッションが終了したことを認識し、Cookieを破棄する(ステップS33)。また、上記のHTTPレスポンスメッセージのうち、「X−Yoyaku−Status: Status=XXXX」は、障害の状態を表すメッセージであり、XXXXに障害の状態に応じたステータスコードが記述される。
【0050】
≪クライアント障害に伴うセッションタイムアウト≫
セッションが開始された後、クライアント2で何等かの障害を生じアプリケーションサーバ1に対して要求を行うことができなくなった場合、アプリケーションサーバ1はセッションを終了する。
【0051】
クライアント2からセッション終了要求メッセージを送信することができる場合は、クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加し、そのHTTPリクエストメッセージをアプリケーションサーバ1へ送信し(ステップS41)、サーバ側セッション管理部5は、上述の≪クライアント2からのセッション終了≫と同じ処理を行い、セッションを終了する(ステップS42)。
【0052】
また、クライアント2からセッション終了要求メッセージをも送信できない場合、またはクライアント2からアプリケーションサーバ1に対して何等アクションがない場合は(ステップS43)、アプリケーションサーバ1のサーバ側セッション管理部5は、一定時間、セッションを継続した後(ステップS44)、セッションIDを破棄(または無効化)し、セッションを終了する(ステップS45)。
【0053】
≪タイムアウト後におけるクライアントからの要求≫
タイムアウトが発生しアプリケーションサーバ1でセッションを終了した後に、クライアント2からHTTPリクエストメッセージを受信した場合、アプリケーションサーバ1はクライアント2に対してセッションが既に終了していることを通知する。
【0054】
クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッションIDを付加し、メッセージボディに例えば予約照会の要求を記述したHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS51)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0055】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
Cookie: Session_ID=1234
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会>…
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッションIDが含まれていた場合、記憶しているセッションIDとHTTPリクエストメッセージ中のセッションIDとを照合し(ステップS52)、継続中のセッションであるか判定する(ステップS53)。
【0056】
既に終了したセッションであると判定した場合、アプリケーションサーバ1のサーバ側セッション管理部5は、HTTPレスポンスメッセージのメッセージヘッダにセッションが終了したことを示すメッセージを付加し、そのHTTPレスポンスメッセージをクライアント2へ送信する(ステップS54)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0057】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Session=End
X−Yoyaku−Session: Status=XXXX
X−Yoyaku−Contents: Contents=Ignore
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>…
上記のHTTPレスポンスメッセージのうち、「X−Yoyaku−Session: Session=End」が、セッションが終了したことを示すメッセージであり、「X−Yoyaku−Session: Status=XXXX」が、セッションが存在しないことを示すメッセージである。クライアント2のクライアント側セッション管理部6は、このメッセージを受信すると、セッションが終了したことを認識し、Cookieを破棄する(ステップS55)。
【0058】
なお、ステップS53でセッションが継続中であると判定した場合は、通常の処理を行う(ステップS56)。
【0059】
≪タイムアウト後におけるセッション情報付きでのクライアントからの要求≫
タイムアウトが発生しアプリケーションサーバ1でセッションを終了した後に、クライアント2からセッション開始要求メッセージを含むHTTPリクエストメッセージを受信した場合、アプリケーションサーバ1は破棄(無効化)したセッションIDを有効化し、要求された処理を行う。
【0060】
クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッションIDとセッション開始要求メッセージを付加し、メッセージボディに例えば予約照会の要求を記述したHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS61)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0061】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
Cookie: Session_ID=1234
X−Yoyaku−Session: Session=Start
X−Yoyaku−PCID: PCID=895kjh8
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会>…
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッションIDが含まれていた場合、記憶しているセッションIDとHTTPリクエストメッセージ中のセッションIDとを照合し(ステップS62)、継続中のセッションであるか判定する(ステップS63)。
【0062】
既に終了したセッションであると判定し、さらにセッション開始要求メッセージが存在する場合、アプリケーションサーバ1のサーバ側セッション管理部5は、破棄(無効化)したセッションIDを有効化する(ステップS64)。
【0063】
セッションIDが有効化された後、アプリケーションサーバ1はホストコンピュータ3に対して予約情報の照会を行う(ステップS65)。ホストコンピュータ3が予約情報を取得、返信すると(ステップS66)、アプリケーションサーバ1のサーバ側セッション管理部5は、予約情報を含むHTTPレスポンスメッセージをクライアント2へ送信する(ステップS67)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例である。
【0064】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Status=0000
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会結果>…
クライアント2は、上記のHTTPレスポンスメッセージを受信すると、予約情報を表示する(ステップS68)。
【0065】
≪クライアントからセッション開始と終了とを同時要求≫
クライアント2からセッション開始要求メッセージとセッション終了要求メッセージとを含むHTTPリクエストメッセージを受信した場合、アプリケーションサーバ1はセッションIDを生成せず要求された処理を行う。
【0066】
クライアント側セッション管理部6は、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージとセッション終了要求メッセージとを付加し、メッセージボディに例えば予約照会の要求を記述したHTTPリクエストメッセージをアプリケーションサーバ1へ送信する(ステップS71)。下記はアプリケーションサーバ1へ送信されるHTTPリクエストメッセージの例である。
【0067】
POST /Yoyaku/NAME_profile HTTP/1.1
Host: www.asp_computer.com/
X−Yoyaku−Session: Session=Start
X−Yoyaku−Session: Session=End
X−Yoyaku−PCID: PCID=895kjh8
0x0d+0x0a(CR(キャリッジリターン)+LF(ラインフィールド))
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会>…
アプリケーションサーバ1のサーバ側セッション管理部5は、受信したHTTPリクエストメッセージにセッション開始要求メッセージとセッション終了要求メッセージとが含まれていた場合、セッションIDを生成せずに、メッセージボディに記述されている処理に移行し、例えば、ホストコンピュータ3に対して予約情報の照会を行う(ステップS72)。ホストコンピュータ3が予約情報を取得、返信すると(ステップS73)、アプリケーションサーバ1のサーバ側セッション管理部5は、予約情報を含むHTTPレスポンスメッセージをクライアント2へ送信する(ステップS74)。下記はクライアント2へ送信されるHTTPレスポンスメッセージの例であり、処理が正常に行われたことを示すメッセージが「X−Yoyaku−Session: Status=0000」付加される。
【0068】
HTTP/1.1 202 Accepted
Content−Type: text/xml
X−Yoyaku−Session: Status=0000
0x0d+0x0a(CR+LF)
<?xml version=”1.0” encoding=”shift_jis”?>
<予約照会結果>…
クライアント2は、上記のHTTPレスポンスメッセージを受信すると、予約情報を表示する(ステップS68)。
【0069】
このように、HTTPリクエストメッセージとHTTPレスポンスメッセージに、拡張ヘッダとして要求メッセージやステータスを示すメッセージを付加することによって、セッション管理を行うことが可能となる。
【0070】
【発明の効果】
以上説明したように、本発明によれば、要求元から任意にセッション開始要求メッセージを付加したHTTPリクエストメッセージを送信することによってセッションの開始を行い、また、要求元からセッション終了要求メッセージを付加したHTTPリクエストメッセージを送信することによって任意にセッションの終了を明示的に行うので、詳細にセッションの継続性を制御することが可能となる。さらに、要求先からHTTPレスポンスメッセージを送信することによって要求元は要求先の状態を把握することが可能となる。
【図面の簡単な説明】
【図1】本実施形態における機能構成図である。
【図2】セッション管理の手順を示すシーケンス図である。
【図3】セッション管理の手順を示すシーケンス図である。
【図4】セッション管理の手順を示すシーケンス図である。
【符号の説明】
1 アプリケーションサーバ
2 クライアント
3 ホストコンピュータ
4 ネットワーク
5 サーバ側セッション管理部
6 クライアント側セッション管理部
Claims (8)
- 処理の要求元、要求先の2コンピュータ間における接続の継続性を、HTTPメッセージのメッセージヘッダによって管理制御するセッション管理方法であって、
前記要求元、および前記要求先の間でセッションを開始する際は、
前記要求元が、HTTPリクエストメッセージのメッセージヘッダにセッション開始要求メッセージを付加して前記要求先へ送信する工程と、
前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション開始要求メッセージを取得すると、セッションを識別するセッションIDを生成し記憶する工程と、
前記要求先が、HTTPレスポンスメッセージのメッセージヘッダに前記セッションIDを付加して前記要求元へ送信する工程と、
前記要求元が、前記HTTPレスポンスメッセージのメッセージヘッダから前記セッションIDを取得し記憶する工程と、
を有することを特徴とするセッション管理方法。 - セッションが開始された後、前記要求元から前記要求先へ処理を要求する際は、
前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに前記セッションIDを付加して前記要求先へ送信する工程と、
前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッションIDを取得すると、記憶している前記セッションIDと比較し、一致する場合は、前記要求元と前記要求先との接続が継続されていると判定する工程と、
を有することを特徴とする請求項1に記載のセッション管理方法。 - 前記要求元、および前記要求先の間でセッションを終了する際は、
前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダにセッション終了要求メッセージを付加して前記要求先へ送信する工程と、
前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション終了要求メッセージを取得すると、セッションを識別するセッションIDを無効にする工程と、
前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッションが終了した旨のメッセージを付加して前記要求元へ送信する工程と、
前記要求元が、前記HTTPレスポンスメッセージのメッセージヘッダから前記セッションが終了した旨のメッセージを取得すると、前記セッションIDを破棄する工程と、
を有することを特徴とする請求項1乃至請求項2に記載のセッション管理方法。 - セッションが開始された後、前記要求元から前記要求先へ処理を要求した際に、前記要求先が当該処理を実行できない場合、または前記要求元から要求された処理が不当な場合、
前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッション終了メッセージと、当該要求先の状態を示すメッセージを付加して前記要求元へ送信する工程を有することを特徴とする請求項1乃至請求項3に記載のセッション管理方法。 - セッションが開始された後、前記要求元から前記要求先へ処理の要求がされないまま所定の期間が経過した場合、
前記要求先が、セッションを識別するセッションIDを無効にする工程を有することを特徴とする請求項1乃至請求項4に記載のセッション管理方法。 - 所定の期間が経過し、前記セッションIDが無効にされた後、当該セッションIDを含む前記HTTPリクエストメッセージをもって前記要求元から前記要求先へ処理を要求した場合、
前記要求先が、前記HTTPレスポンスメッセージのメッセージヘッダにセッション終了メッセージと、当該要求先の状態を示すメッセージを付加して前記要求元へ送信する工程を有することを特徴とする請求項5に記載のセッション管理方法。 - 所定の期間が経過し、前記セッションIDが無効にされた後、セッションを再開する場合は、
前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに当該セッションIDと前記セッション開始要求メッセージとを付加して前記要求先へ送信する工程を有することを特徴とする請求項5乃至請求項6に記載のセッション管理方法。 - 前記要求元、および前記要求先の間でセッションを開始する際、
前記要求元が、前記HTTPリクエストメッセージのメッセージヘッダに前記セッション開始要求メッセージと前記セッション終了要求メッセージとを付加して前記要求先へ送信する工程と、
前記要求先が、前記HTTPリクエストメッセージのメッセージヘッダから前記セッション開始要求メッセージと前記セッション終了要求メッセージとを取得すると、前記セッションIDを生成せずに、要求された処理を実行する工程と、
を有することを特徴とする請求項1乃至請求項7に記載のセッション管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003171992A JP2005010913A (ja) | 2003-06-17 | 2003-06-17 | セッション管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003171992A JP2005010913A (ja) | 2003-06-17 | 2003-06-17 | セッション管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005010913A true JP2005010913A (ja) | 2005-01-13 |
Family
ID=34096288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003171992A Withdrawn JP2005010913A (ja) | 2003-06-17 | 2003-06-17 | セッション管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005010913A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009502087A (ja) * | 2005-07-19 | 2009-01-22 | サムスン エレクトロニクス カンパニー リミテッド | ネットワーク装置へ非同期通知を伝送する方法及びシステム |
JP2009086931A (ja) * | 2007-09-28 | 2009-04-23 | Fujitsu Ltd | 書類データ管理方法、書類データ作成方法、サーバおよびコンピュータプログラム |
JP2013524727A (ja) * | 2010-04-15 | 2013-06-17 | マイクロソフト コーポレーション | Httpを介した信頼性のあるプロトコルトンネリングのための方法およびシステム |
US8549408B2 (en) | 2010-03-29 | 2013-10-01 | Sharp Kabushiki Kaisha | Multi-functional peripheral and multi-functional peripheral control system |
JP2015509313A (ja) * | 2011-12-30 | 2015-03-26 | エフファイブ ネットワークス インコーポレイテッド | 1つまたは複数の後続のフローの関連付けおよび管理を行うためにネットワークトラフィック特性を識別するための方法およびそのデバイス |
USRE47019E1 (en) | 2010-07-14 | 2018-08-28 | F5 Networks, Inc. | Methods for DNSSEC proxying and deployment amelioration and systems thereof |
JP2019079333A (ja) * | 2017-10-25 | 2019-05-23 | キヤノン株式会社 | 通信装置、通信方法、及びプログラム |
US10797888B1 (en) | 2016-01-20 | 2020-10-06 | F5 Networks, Inc. | Methods for secured SCEP enrollment for client devices and devices thereof |
JP2021140587A (ja) * | 2020-03-06 | 2021-09-16 | 株式会社C−Rise | 情報処理方法、コンピュータプログラム及び情報処理装置 |
-
2003
- 2003-06-17 JP JP2003171992A patent/JP2005010913A/ja not_active Withdrawn
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009502087A (ja) * | 2005-07-19 | 2009-01-22 | サムスン エレクトロニクス カンパニー リミテッド | ネットワーク装置へ非同期通知を伝送する方法及びシステム |
JP2009086931A (ja) * | 2007-09-28 | 2009-04-23 | Fujitsu Ltd | 書類データ管理方法、書類データ作成方法、サーバおよびコンピュータプログラム |
US8549408B2 (en) | 2010-03-29 | 2013-10-01 | Sharp Kabushiki Kaisha | Multi-functional peripheral and multi-functional peripheral control system |
JP2013524727A (ja) * | 2010-04-15 | 2013-06-17 | マイクロソフト コーポレーション | Httpを介した信頼性のあるプロトコルトンネリングのための方法およびシステム |
USRE47019E1 (en) | 2010-07-14 | 2018-08-28 | F5 Networks, Inc. | Methods for DNSSEC proxying and deployment amelioration and systems thereof |
JP2015509313A (ja) * | 2011-12-30 | 2015-03-26 | エフファイブ ネットワークス インコーポレイテッド | 1つまたは複数の後続のフローの関連付けおよび管理を行うためにネットワークトラフィック特性を識別するための方法およびそのデバイス |
US9985976B1 (en) | 2011-12-30 | 2018-05-29 | F5 Networks, Inc. | Methods for identifying network traffic characteristics to correlate and manage one or more subsequent flows and devices thereof |
US10797888B1 (en) | 2016-01-20 | 2020-10-06 | F5 Networks, Inc. | Methods for secured SCEP enrollment for client devices and devices thereof |
JP2019079333A (ja) * | 2017-10-25 | 2019-05-23 | キヤノン株式会社 | 通信装置、通信方法、及びプログラム |
JP2021140587A (ja) * | 2020-03-06 | 2021-09-16 | 株式会社C−Rise | 情報処理方法、コンピュータプログラム及び情報処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10511567B2 (en) | Network resource identification | |
US8156243B2 (en) | Request routing | |
US9021128B2 (en) | Request routing using network computing components | |
US9451046B2 (en) | Managing CDN registration by a storage provider | |
US20180159769A1 (en) | Request routing based on class | |
US9734472B2 (en) | Request routing utilizing cost information | |
US9251112B2 (en) | Managing content delivery network service providers | |
US8639817B2 (en) | Content management | |
JP4859072B2 (ja) | コンテンツ・タイミング方法およびシステム | |
US20020147652A1 (en) | System and method for distruibuted client state management across a plurality of server computers | |
EP1695518B1 (en) | Method of redirecting client requests to web services | |
US8990429B2 (en) | HTTP-based synchronization method and apparatus | |
CN101997759A (zh) | 一种业务实现方法及业务系统 | |
JP2005010913A (ja) | セッション管理方法 | |
JP4988307B2 (ja) | コンテキスト・ベースのナビゲーション | |
WO2001089170A2 (en) | Method for state preservation in http-based communications | |
US9288153B2 (en) | Processing encoded content | |
TW200410519A (en) | World Wide Web connection switching method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060905 |