JP5315062B2 - セッションを管理するウェブサーバおよびその方法 - Google Patents

セッションを管理するウェブサーバおよびその方法 Download PDF

Info

Publication number
JP5315062B2
JP5315062B2 JP2008554083A JP2008554083A JP5315062B2 JP 5315062 B2 JP5315062 B2 JP 5315062B2 JP 2008554083 A JP2008554083 A JP 2008554083A JP 2008554083 A JP2008554083 A JP 2008554083A JP 5315062 B2 JP5315062 B2 JP 5315062B2
Authority
JP
Japan
Prior art keywords
http
session state
response
session
terminal device
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.)
Expired - Fee Related
Application number
JP2008554083A
Other languages
English (en)
Other versions
JPWO2008088026A1 (ja
Inventor
修一 村井
志生 花井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2008554083A priority Critical patent/JP5315062B2/ja
Publication of JPWO2008088026A1 publication Critical patent/JPWO2008088026A1/ja
Application granted granted Critical
Publication of JP5315062B2 publication Critical patent/JP5315062B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms

Description

本発明は、ウェブサーバに関する。特に、本発明は、セッションを管理するウェブサーバおよびその方法に関する。
近年の多様なウェブページを実現するために、ウェブサーバにはセッション管理の機能が搭載されている。この機能によれば、利用者は単に要求したウェブページを閲覧することのみならず、自己の専用のページにログインして、以前にアクセスした履歴を参照したり、その履歴に基づいて次の作業を行うことができる。セッション管理は、ウェブサーバによる処理の経過を示すセッションステートを利用者毎に保存することにより実現される。たとえば、JavaEE(Java Enterprise Edition、Javaは登録商標である)において、セッションステートは、ウェブサーバの記憶装置に記憶され、ウェブサーバ上で動作するサーブレット・プログラムからHTTPセッションオブジェクトとして参照される。
特開2004−206695号公報 DB2 Alphabloxの概要、ホームページURL「http://www-06.ibm.com/jp/software/data/bi/alphablox/」、2007年1月10日検索 Patterns of Enterprise Application Architecture、 Martin Fowler 著、アマゾンドットコム書籍紹介、ホームページURL「http://www.amazon.com/exec/obidos/ASIN/0321127420」、2007年1月10日検索 WebSphere Application Server Version 5.1 InfoCenter、セッション管理サポートの説明、ホームページURL「http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//topic/com.ibm.websphere.nd.doc/info/ae/ae/cprs_sesm.html」、2007年1月10日検索 Web 2.0 時代のDWH 環境!DB2 Alphablox で実現するInline Analyticの概要、ホームページURL「http://www-06.ibm.com/jp/domino01/mkt/dminfo.nsf/doc/00825839」、2007年1月10日検索
ウェブサイトは規模が大きくなると、単一のウェブサーバでは処理能力が不十分なため、複数のウェブサーバにより実現される。この場合、順次受信するHTTPリクエストは各ウェブサーバに分配されて処理される。したがって、同一の利用者から受けた複数のHTTPリクエストがそれぞれ異なる複数のウェブサーバに到達する場合がある。この場合、セッションステートは以前のHTTPリクエストを受信したウェブサーバにのみ記憶されているので、次のHTTPリクエストに応じた処理においてそのセッションステートを参照できなくなってしまう。
これに対し、複数のウェブサーバでセッションステートを共有する機能が用いられている(非特許文献3を参照。)。しかしながら、この機能では、ウェブサーバ間で共有するべきセッションステートを効率的に選択することはできず、共有に必要な通信量や処理量が大きくなってしまう場合がある。また、この機能の適用範囲は限定されており、例えば非特許文献1のデータベースを採用したシステムには適用できない。一方、セッションステートをウェブサーバではなく端末装置のウェブブラウザにクッキーなどとして記憶することで、この課題を回避する技術が用いられている(非特許文献2および特許文献1を参照。)。
この技術において、端末装置に記憶されたセッションステートは、次のHTTPリクエストに対応付けてウェブサーバに送信される。そして、このセッションステートは、サーブレット・プログラムからは、HTTPリクエストの付随的なパラメータとして参照される。しかしながら、HTTPリクエストにはその他のパラメータが数多く設定されている場合があり、エンジニアがプログラムを参照してもどのパラメータがセッションステートかを判断しにくい。これは、サーブレット・プログラムの開発や保守の効率の低下を招くおそれがある。また、セッションステートにアクセスするためのインターフェイスもHTTPセッションオブジェクトとは全く異なるので、仕様変更によりセッションステートの保存先をウェブサーバから端末装置に変更するのも困難である。
非特許文献4については後に参照する。
そこで本発明は、上記の課題を解決することのできるウェブサーバ、システム、方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の一側面においては、端末装置から順次受信する複数のHTTPリクエストに応じた処理の経過を示すセッションステートを記憶するための記憶部と、セッションステートを第1のHTTPリクエストに対応付けて端末装置から受信する受信部と、前記記憶部のうち、受信した前記第1のHTTPリクエストに応じて処理を行う処理プログラムからHTTPセッションオブジェクトとしてアクセスされる記憶領域に、受信した前記セッションステートを格納する格納部と、前記処理プログラムに含まれる、HTTPセッションオブジェクトにアクセスする命令の実行に応じて、格納された前記セッションステートにアクセスするアクセス部と、前記処理プログラムに含まれる、第1のHTTPレスポンスを返信する命令の実行に応じて、前記記憶部から前記セッションステートを読み出して、第2のHTTPリクエストに対応付けて端末装置により送信させるパラメータとして前記第1のHTTPレスポンスに設定し、設定した前記第1のHTTPレスポンスを端末装置に返信する返信部とを備えるウェブサーバを提供する。また、当該ウェブサーバによりHTTPリクエストに応じて処理を行う方法、当該ウェブサーバとして情報処理装置を動作させるプログラム、および、当該ウェブサーバを複数備えたシステムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
以下、発明を実施するための最良の形態(以下、実施形態と称す)を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、第1の構成を採用したウェブサーバであるウェブサーバ510の機能の概要を示す。この構成において、セッションステートはウェブサーバ510に記憶されている。HTTPリクエストに応じた動作は以下の通りである。まず、ウェブサーバ510は、HTTPリクエストをセッションIDに対応付けて受信する。受信したセッションIDに対応するHTTPサーブレットリクエスト・オブジェクトが検索されて、HTTPサーブレット530に与えられる。検索されたこのオブジェクトをHTTPサーブレットリクエスト・オブジェクト520とする。ここまでの動作は、たとえばJavaEE(Java Enterprise Edition)などに準拠したミドルウェアにより自動的に行われる。続いて、アプリケーションプログラムの開発者が作成したサーブレット・プログラムに基づいて、HTTPサーブレット530が動作を開始する。
図中のプログラムコードの1行目に示すように、HTTPサーブレット530を実現するサーブレット・プログラム上で、HTTPサーブレットリクエスト・オブジェクトは「req」という引数により参照される。4行目に示すように、この「req」について、getSessionというメソッドを呼び出せば、HTTPサーブレットリクエスト・オブジェクトから、HTTPセッションオブジェクトが読み出される。このオブジェクトが、セッションステートの実体である。セッションステートは、例えば図中に示したように、「key1」などのキー名称と、その値である文字列"abc"との組によって表される。サーブレット・プログラムからは「session」という変数として参照される。
6行目に示すように、「session」について、getAttributeというメソッドを呼び出せば、HTTPセッションオブジェクトから値が読み出される。このサーブレット・プログラムにおいて、読み出された値は変数「value」に代入される。また、8行目に示すように、「session」について、setAttributeというメソッドを呼び出せば、HTTPセッションオブジェクトの値が更新される。このサーブレット・プログラムにおいて、キー「key1」の値が"abc"に更新される。HTTPサーブレット530は、HTTPレスポンスを返信する場合には、そのHTTPレスポンスに、HTTPリクエストの受信時に受信したセッションIDを対応付けて送信する。
図1に示す第1の構成において、セッションステートの実体はウェブサーバ510に記憶されている。そして、リクエストに応じた処理において正しいセッションステートを参照できるようにするため、リクエストにはセッションIDが対応付けて送信される。このように、第1の構成においても、複数のリクエストに応じた一連の処理を関連付けてセッションとして管理することができる。しかしながら、ウェブサーバ510を含む複数のウェブサーバでウェブサイトを実現する場合には不都合が生じてしまう。即ち、例え正しいセッションIDが送信されたとしても、以前の処理を行ったウェブサーバとは異なるウェブサーバにリクエストが到達した場合には、以前の処理に基づくセッションステートを読み出せなくなってしまう。
これに対し、以下の図2に示す第2の構成では、セッションステートを端末装置側に設けることでこの課題の解決を図っている。
図2は、第2の構成を採用したウェブサーバであるウェブサーバ540の機能の概要を示す。この構成において、セッションステートは端末装置にクッキーなどとして記憶されている。HTTPリクエストに応じた動作は以下の通りである。まず、ウェブサーバ540は、HTTPリクエストをセッションステートに対応付けて受信する。ここで受信するのは、図1の場合とは異なり、セッションIDではなくセッションステートの実体である。セッションステートは、HTTPリクエストに設定された他のパラメータに追加されて設定される。当該他のパラメータとは、ウェブサイトに対する要求の属性を示し、例えばウェブサイトが物販用であれば購入する商品のID・数量などである。即ちセッションステートはこのようなパラメータと共にHTTPリクエストに設定されて受信される。ここまでの動作は、例えば、JavaEEなどに準拠したミドルウェアにより自動的に行われる。続いて、サーブレット・プログラムに基づいてHTTPサーブレット560が動作を開始する。
図中のプログラムコードの1行目に示すように、HTTPサーブレット560を実現するサーブレット・プログラム上で、HTTPサーブレットリクエスト・オブジェクト550は「req」という引数により参照される。このオブジェクトには、HTTPリクエストに対応付けて受信した全てのパラメータが設定される。4行目に示すように、オブジェクトreqについて、パラメータのキー名を指定してgetParameterというメソッドを呼び出せば、そのキー名により指定されるパラメータが読み出される。このプログラム例では、セッションステートを示すkey2を指定しているので、セッションステートの値"abc"が読み出されて、変数valueに代入される。また、6行目に示すように、このオブジェクトreqについてsetParameterというメソッドを呼び出せば、指定したキーに指定した値が代入される。また、9−10行目に示すように、HTTPレスポンスとして返信するウェブページの中にセッションステートを埋め込めば、次のHTTPリクエストに対応付けてそのセッションステートを再度送信させることができる。
このように、第2の構成によっても、セッションステートを端末装置側に記憶しつつも、そのセッションステートをウェブサーバ側のサーブレット・プログラムから適切に参照することができる。しかしながら、この構成ではサーブレット・プログラムの開発・保守の効率において不都合が生じる場合がある。即ち、サーブレット・プログラムの文面上、セッションステートはHTTPリクエストのパラメータの一つとして参照される。そして、HTTPリクエストには他に本来の要求に付随する様々な属性がパラメータとして設定され得る。これらの属性を示すパラメータと、セッションステートを示すパラメータとは、パラメータのキー名によってのみ区別される。したがって、プログラムの開発者や保守者は、セッションステートを示すパラメータのキー名を知らなければ、どのパラメータがセッションステートを示すのか判別するのは困難である。この不都合は、ウェブサイトが大規模になればなるほど、また、開発や保守に携わるエンジニアが増加すればするほど顕著になる。即ち、プログラムの文面を見ただけではセッションステートが明示されていないので、仕様書などの他の手段を用いて充分に情報を共有する必要がある。
このように、第1または第2の構成によっても、セッションステートを管理することはできるものの、近年の大規模かつ複雑なウェブサイトの構築には適切ではない場合がある。これに対し、図3から図9を参照して説明する構成によれば、セッションステートを端末装置側で管理しつつも、プログラムの開発・保守の効率を大幅に向上することができる。以下、具体的に説明する。
図3は、本実施形態に係る情報システム10の全体構成を示す。情報システム10は、ディスパッチャ装置18と、ウェブサーバ20−1〜Nとを備え、外部の端末装置15から受けたHTTPリクエストに応じてHTTPレスポンスを返信することを目的とする。ディスパッチャ装置18は、端末装置15から受けたHTTPリクエストをウェブサーバ20−1〜Nの何れかに選択的に割り当てる。具体的には、ディスパッチャ装置18は端末装置15から受信したHTTPリクエストを、例えばラウンドロビン方式などでウェブサーバ20−1〜Nの中から選択したウェブサーバに転送する。ウェブサーバ20−1〜Nのそれぞれは、HTTPリクエストを受信すると、そのリクエストに応じて処理を行い、その処理結果に基づくHTTPレスポンスを生成して端末装置15に返信する。
図4は、本実施形態に係るウェブサーバ20−1の機能構成を示す。ウェブサーバ20−1は、記憶部200と、受信部210と、格納部220と、実行部230と、アクセス部240と、返信部250とを備える。まず、これらの各部材とハードウェア資源との関係を述べる。記憶部200は、後述のRAM1020またはハードディスクドライブ1040などの記憶装置によって実現される。また、受信部210および返信部250は、後述の通信インターフェイス1030などのハードウェアデバイスと、JavaEEなどのミドルウェアを実行するCPU1000との組み合わせにより実現される。また、格納部220および実行部230は、CPU1000により、そのミドルウェア上でサーブレット・プログラムを動作させることによって実現される。また、アクセス部240は、CPU1000を、JavaEEなどのミドルウェアと共にインストールされたクラスライブラリと呼ばれるプログラムを動作させることにより実現される。
記憶部200は、端末装置15から順次受信する複数のHTTPリクエストに応じた処理の経過を示すセッションステートを記憶するために設けられる。受信部210は、セッションステートを第1のHTTPリクエストに対応付けて端末装置15から受信する。格納部220は、記憶部200のうち、受信したこの第1のHTTPリクエストに応じて処理を行う処理プログラムからHTTPセッションオブジェクトとしてアクセスされる記憶領域に、受信したセッションステートを格納する。格納部220は、例えば、フィルタクラスと呼ばれる、サーブレット・プログラムの動作開始時にその動作開始前に動作するオブジェクトにより実現される。即ち、格納部220は、後述の実行部230によりサーブレット・プログラムが動作を開始する前に動作を開始し、セッションステートを記憶部200に格納する。
実行部230は、処理プログラムであるサーブレット・プログラムを実行する。この実行中に、HTTPセッションオブジェクトにアクセスする命令が実行される場合がある。この命令は、HTTPセッションオブジェクトにアクセスするメソッドを呼び出す命令であり、例えばJavaEEではgetSessionメソッドやsetSessionメソッドなどに対する呼び出しである。このような呼び出しを受けて、アクセス部240は、記憶部200に格納されたセッションステートにアクセスする。アクセスとは即ち読み出しや書き込みであり、これによりセッションステートは更新され得る。
また、サーブレット・プログラムの実行中に、第1のHTTPリクエストに対応する第1のHTTPレスポンスを返信する命令が実行される場合がある。この命令は、HTTPレスポンスを示す出力ストリーム(たとえばJavaEEのoutオブジェクトなど)について、printlnなどの文字列出力用のメソッドを呼び出す命令である。他の例として、この命令は、JSP(Java Server Pages)などで記述されたウェブページそのものであってもよい。JSPのウェブページは、そのページの内容をHTTPリクエストとして返信する命令に変換されて実行されるからである。
このような命令の実行に応じて、返信部250は、記憶部200からセッションステートを読み出す。読み出されるセッションステートは、たとえば、アクセス部240の機能によって受信時のものから変更されている場合がある。そして、返信部250は、読み出したこのセッションステートを、第2のHTTPリクエストに対応付けて端末装置15により送信させるパラメータとしてこの第1のHTTPレスポンスに設定し、設定したこの第1のHTTPレスポンスを端末装置15に返信する。このパラメータは、この第1のHTTPレスポンスを受け取った端末装置15が表示するウェブページには表示されないパラメータであることが望ましい。また、このパラメータは、当該ウェブページに対する利用者の操作に応じて第2のHTTPリクエストに対応付けて送信されるパラメータであることが望ましい。ここでいう利用者の操作とは、例えば、"提出"ボタン、"OK"ボタン、または"次へ"ボタンなどを押下する操作である。これにより、第2のHTTPリクエストに対応付けて最新のセッションステートを送信させることができる。
ウェブサーバ20−2〜Nのそれぞれの構成も以上に示したウェブサーバ20−1と略同一であるから説明を省略する。
以上の構成により、セッションステートは、ウェブサーバ20−1ではなく端末装置15側で適切に管理することができる。これにより、端末装置15からの第2のHTTPリクエストがウェブサーバ20−1ではなくウェブサーバ20−2に到達した場合であっても、ウェブサーバ20−2は最新のセッションステートを適切に参照して、正常な処理を継続することができる。また、実行部230により実行されるサーブレット・プログラムからは、セッションステートがHTTPリクエストのパラメータとは区別されて、HTTPセッションオブジェクトとして参照可能となる。これにより、ウェブサイトが大規模でサーブレット・プログラムが複雑な場合でも、エンジニアがプログラムを見ればセッションステートを明らかに認識できる。また、セッションステートはウェブページには表示されないので、ウェブサイトの利用者にとっても何ら違和感を与えないようにすることができる。
次に、ウェブサイトがAjax(Asynchronous JavaScript + XML)を採用している場合の処理機能を説明する。この場合、利用者がウェブページ上のボタンを操作しなくても、利用者がマウスカーソルを動かす動作などに応じて、ウェブページに含まれるJavaScriptプログラムが、XMLHTTP通信によるリクエストを自動的にウェブサーバ20−1に送信する。この結果、アクセス部240は、上記第1のHTTPレスポンスを返信してから上記第2のHTTPリクエストを受信するまでの間に、XMLHTTP通信によるリクエストに応じて、記憶部200に格納されたセッションステートを更新する場合がある。
このような場合、更新後の最新のセッションステートは記憶部200に記憶されているのにもかかわらず、次の第2のHTTPリクエストに対応付けてウェブサーバ20−1に送信されるセッションステートは更新前の古いセッションステートとなる。この結果、格納部220の動作により、受信した古いセッションステートにより最新のセッションステートが上書きされ、セッションが正しく継続できなくなってしまう。このような不都合を避けるべく、ウェブサイトがAjaxを採用している場合には、ウェブサーバ20−1は、さらにリダイレクト処理部260を備えていることが望ましい。そして、返信部250は、第2のHTTPリクエストとしてリダイレクト処理を端末装置15により要求させる第1のHTTPレスポンスを端末装置15に返信する。
これを受けた端末装置15は、利用者の操作を受けて、リダイレクト処理を要求する第2のHTTPリクエストをウェブサーバ20−1に送信する。リダイレクト処理部260は、このリクエストを受信すると、セッションステートを記憶部200から読み出す。そして、リダイレクト処理部260は、そのセッションステートを、次の第3のHTTPリクエストに対応付けて端末装置15により送信させるパラメータとして、返信しようとしている第2のHTTPレスポンスに設定する。そしてリダイレクト処理部260は、設定したこの第2のHTTPレスポンスを返信する。これを受けた端末装置15は、直ちに第3のHTTPリクエストを送信する。このリクエストは、ウェブサーバ20−1〜Nの何れに到達するか分からない。しかしながら、この第3のHTTPリクエストには最新のセッションステートが対応付けられている。このため、第3のHTTPリクエストを受信すると、受信部210は、対応して受信したセッションステートを記憶部200に格納することができる。
このように、リダイレクト処理部260を設けることで、Ajaxを採用したウェブサイトにおいてもセッションを適切に維持することができる。
図5は、本実施形態に係るウェブサーバ20−1が端末装置15と通信する手順を示す。図5では、まず、Ajaxを採用しないウェブサイトに関する処理について説明する。端末装置15は、既に表示しているウェブページに対し利用者から操作を受けると、第1のHTTPリクエストをセッションステートに対応付けてウェブサーバ20−1に対し送信する(S500)。このセッションステートは、既に表示しているこのウェブページのデータの中で、次のHTTPリクエストに対応付けて送信するべきパラメータに設定されていたものである。これに対応して、受信部210は、第1のHTTPリクエストをセッションステートに対応付けて受信する(S510)。
次に、格納部220は、記憶部200のうち、受信したこの第1のHTTPリクエストに応じて処理を行う処理プログラムからHTTPセッションオブジェクトとしてアクセスされる記憶領域に、受信したこのセッションステートを格納する(S520)。セッションステートは上書きされてもよいし、追加されてもよい。即ち、格納部220は、既にこの記憶領域に記憶されているセッションステートに代えて、受信部210が新たに受信したこのセッションステートを格納してもよい。また、格納部220は、既にこの記憶領域に記憶されているセッションステートに追加して、受信部210が新たに受信したこのセッションステートを格納してもよい。
次に、実行部230は、処理プログラムであるサーブレット・プログラムの実行を開始する。この実行の過程で、HTTPセッションオブジェクトにアクセスする命令が実行されると、これに応じて、アクセス部240は、記憶部200に格納されたこのセッションステートにアクセスする(S540)。プログラムの処理内容に応じて、アクセスの回数は複数でもよい。また、サーブレット・プログラムの実行の過程で、第1のHTTPレスポンスを返信する命令が実行されると、これに応じて、返信部250は、記憶部200からセッションステートを読み出す(S550)。そして、返信部250は、読み出したセッションステートに対し直列化処理(シリアライゼーション:Serialization)を行う。
直列化処理とは、記憶部200中のアドレス空間に記憶されたセッションステートなどのデータを、他のアドレス空間に再配置したり、通信回線を介して外部の装置に送信可能とする処理である。具体的には以下の通りである。記憶部200は、セッションステートとして複数のデータを含むデータ群を記憶しており、これらのデータはリスト構造と呼ばれる構造により互いに関連付けられている場合がある。例えばこれらのデータのうち第1のデータは、この第1のデータの格納先アドレスにより第2のデータから参照されている。この場合、第1および第2のデータを読み出して他のアドレスに記録すると、第1のデータの格納先アドレスが変更される。この結果、実際の格納先アドレスと、第2のデータからの参照のための格納先アドレスが異なってしまう。
このため、返信部250は、第2のデータから第1のデータを当該第1のデータの格納先アドレスを用いずに参照するようにこれらのデータ群に対し変換を行う。一例として、データ群のデータ構造をリスト構造から配列構造に変換してもよいし、第2のデータから第1のデータの参照のために用いるデータを、格納先アドレスに代えてデータの識別子に変更してもよい。その他、文字列の文字コードの変換や数値情報の数値フォーマットの変換等の処理を直列化処理として行ってもよい。
これに加えて、返信部250は、直列化処理を行ったデータ群に対し、さらに、暗号化処理およびデータ圧縮処理の少なくとも一方を含む変換を行ってもよい。暗号化処理によれば、本来第三者に公開する必要の無いセッションステートを、端末装置15の装置内や通信経路上で参照できなくすることができ、不正な盗聴行為を未然に防止できる。直列化およびデータ圧縮/暗号化されたセッションステートは第1のHTTPレスポンスに設定される。さらに他の処理として、返信部250は、読み出したセッションステートを記憶している記憶領域を他の用途に開放するための処理を行ってもよい。この処理は、サーブレット・プログラムの文面上の明示の処理ではなく、ガーベージ・コレクタによってサーブレット・プログラムとは非同期的に行われてよい。そして、返信部250は、この第1のHTTPレスポンスを端末装置15に返信する(S560)。
端末装置15は、第1のHTTPレスポンスを受信すると、そのレスポンスに含まれるウェブページを利用者に表示する(S580)。利用者がウェブページ上のボタンを操作すると、第2のHTTPリクエストが送信される(S500)。この後の処理は、既にS500からS580として説明した上記の処理と同様である。但し、この第2のHTTPリクエストはウェブサーバ20−1に到達するとは限らず、ウェブサーバ20−2〜Nの何れかに到達する場合がある。そのような場合でも、第2のHTTPリクエストには最新のセッションステートが対応付けられて送信されるので、リクエストを受けたウェブサーバは適切に処理を継続できる。
次に、図6および図7を参照して、ウェブサーバ20−1の処理機能の実装例と、実施形態についてのさらに詳細なバリエーションについて説明する。
図6は、ウェブサーバ20−1において動作するソフトウェアおよびデータの第1構成を示す概念図である。この第1構成は、セッションステートを全て端末装置15に記憶し、ウェブサーバ20−1においてはリクエストからレスポンスまでの僅かな期間にのみセッションステートを一時的に記憶する構成である。この構成によれば、セッションステートをウェブサーバ20−1に記憶することを前提に予め開発されたサーブレット・プログラムを、ほとんど改変することなく、セッションステートを端末装置15に記憶する状態で動作させることができる。以下、概要を述べる。
ウェブサーバ20−1は、フィルタオブジェクト600と、HTTPサーブレットリクエスト・オブジェクト610と、HTTPサーブレット630とを、例えばJavaEEなどに準拠したミドルウェア上で動作させている。また、ウェブサーバ20−1はレンダリングエンジン620を動作させている。フィルタオブジェクト600は、例えばJavaEEのフィルタクラスのオブジェクトであり、上述の格納部220として動作する。そして、フィルタオブジェクト600は、受信部210がHTTPリクエストを受信すると動作を開始して、そのHTTPリクエストに対応して受信したセッションステートを記憶部200に格納する。
セッションステートが記憶される記憶領域は、既に述べたように、サーブレット・プログラムからHTTPセッションオブジェクトとしてアクセスされる領域である。具体的には、フィルタオブジェクト600は、HTTPサーブレットリクエスト・オブジェクト(図中のHTTPサーブレットリクエスト・オブジェクト610である。)の1つのデータフィールドとして、HTTPセッションオブジェクトの記憶領域を確保し、その記憶領域にセッションステートを格納してもよい。また、既にHTTPセッションオブジェクトの記憶領域が確保されている場合には、フィルタオブジェクト600は、その記憶領域に既に記憶されたセッションステートを更新して、受信した新たなセッションステートを格納する。例えば、図6では、key1およびke2という2つの文字列変数の双方が受信したセッションステートであり、リクエスト受信前から既に格納されていたセッションステートは破棄されている。
セッションステートの格納に応じて、実行部230は動作を開始して処理プログラムであるサーブレット・プログラム635を実行してHTTPサーブレット630として動作する。サーブレット・プログラム635の1行目に示すように、このプログラム上で、HTTPサーブレットリクエスト・オブジェクトは「req」という引数により参照される。4行目に示すように、この「req」について、getSessionというメソッドを呼び出せば、HTTPサーブレットリクエスト・オブジェクトから、HTTPセッションオブジェクトが読み出される。このオブジェクトは、サーブレット・プログラム635からは「session」という変数として参照される。
6行目に示すように、「session」について、getAttributeというメソッドを呼び出せば、HTTPセッションオブジェクトから値が読み出される。読み出された値は変数「value1」に代入される。同様に、7行目に示すように、他のキー名を指定してgetAttributeというメソッドを呼び出せば、HTTPセッションオブジェクトから他の値が読み出される。読み出された値は変数「value2」に代入される。
また、9行目に示すように、「session」について、setAttributeというメソッドを呼び出せば、HTTPセッションオブジェクトの値が更新される。この行では、キー「key1」の値が"abc"に更新される。同様に、10行目に示すように、「session」について、setAttributeというメソッドを呼び出せば、HTTPセッションオブジェクトの値が更新される。この行では、キー「key2」の値が"ABC"に更新される。
なお、図6ではサーブレット・プログラム635のうちJavaEEなどに準拠した処理部分を例示したが、サーブレット・プログラム635は、JSPなどで記述したページ部分を含んでいてもよい。このため、HTTPサーブレット630の動作が完了すると、サーブレット・プログラム635はレンダリングエンジン620に出力され、レンダリングエンジン620がJSPのレンダリング処理を開始する。レンダリング処理とは、サーブレット・プログラム635に記述されたHTMLのタグや属性を、それらHTMLのタグや属性を出力するJavaプログラムに変換したうえで、そのプログラムを実行する処理である。
本実施形態においてレンダリングエンジン620は、上記の返信部250としての役割も果たす。即ちレンダリングエンジン620は、HTTPセッションオブジェクトとして記憶されたセッションステートを記憶部200から読み出して、変換後のHTML文書中にパラメータとして設定する。セッションステートは、HTTPレスポンスを構成するHTML文書の各々のformタグに設定される。設定されるパラメータは、各formタグにネストされたhiddenタグのパラメータであり、一例として、formタグおよび<%タグを用いて以下のように表すことができる。
<form…>

<%=CSHttpServletRequest.renderClientSession(request)%>
</form>
ここで、タグ<%は、JSPのレンダリング処理に対する指令であり、そのタグに対応する式の値をJSPのレンダリング時に評価して、評価値をそのままHTML文書の一部とすることを示す。即ち、レンダリングエンジン620は、このようなタグ<%を予めJSPコード中に挿入したうえで、そのJSPコードをレンダリングしてHTML文書を生成し、HTTPレスポンスに含めて返信する。
また、設定するパラメータは、上述のように直列化され、また、暗号化およびデータ圧縮を含む変換が為されることが望ましい。また、図6の例でセッションステートはkey1およびkey2の2つであるが、レンダリングエンジン620はこれらのセッションステートを結合して1つのパラメータとしてHTTPレスポンスに設定してもよい。これにより、次のHTTPリクエストにおいてセッションステートを示すパラメータは1つで済み、HTML文書やリクエストメッセージのデータサイズを小さくし、また、データ構造を単純にすることができる。
なお、ウェブサーバ20−2〜Nのそれぞれについても、ウェブサーバ20−1と同様の構成を採ることができるから説明を省略する。
図7は、ウェブサーバ20−1において動作するソフトウェアおよびデータの第2構成を示す概念図である。この第2構成は、セッションステートを全て端末装置15に記憶するのではなく、セッションステートの用途に応じて記憶先を端末装置15およびウェブサーバ20−1から選択できるようにする構成である。この構成によれば、処理の継続のため重要度の高いセッションステートのみを端末装置15に記憶させることができ、セッション維持のための通信データ量や処理量を低減することができる。以下、概要を述べる。
ウェブサーバ20−1は、フィルタオブジェクト700と、HTTPサーブレットリクエスト・オブジェクト710と、HTTPサーブレット730とを例えばJavaEEなどの仮想機械の上で動作させている。またウェブサーバ20−1はレンダリングエンジン720を動作させている。フィルタオブジェクト700は、図6の例と同様、フィルタクラスのオブジェクトであり、HTTPリクエストを受信すると格納部220として動作を開始する。そして、フィルタオブジェクト700は、HTTPリクエストに対応して受信したセッションステートを記憶部200に格納する。セッションステートを格納する記憶領域は例えばHTTPサーブレットリクエスト・オブジェクト710内の記憶領域である。
但し、図7におけるフィルタオブジェクト700はフィルタオブジェクト600とは異なり、受信したセッションステートにより、既に記憶されているセッションステートを更新するのではなく、受信したセッションステートを、既に記憶されているセッションステートに追加して格納する。具体的には以下の通りである。記憶部200は、HTTPサーブレットリクエスト・オブジェクト710中の記憶領域に、第1のHTTPセッションオブジェクト、および、第2のHTTPセッションオブジェクトの2つを記憶している。第1のHTTPセッションオブジェクトは、端末装置15に記憶されるべきオブジェクトである、図中ではkey1をキー名とする。第2のHTTPセッションオブジェクトは、ウェブサーバ20−1に記憶されるべきオブジェクトであり、図中ではkey2をキー名とする。
フィルタオブジェクト700は、key1をキー名とするセッションステートを受信すると、そのセッションステートをHTTPサーブレットリクエスト・オブジェクト710中の記憶領域に格納する。このとき、フィルタオブジェクト700は、既にkey2をキー名として格納されていたセッションステートを変更せずに維持する。続いて、実行部230は動作を開始してサーブレット・プログラム735を実行してHTTPサーブレット730として動作する。1〜4行目に示すように、HTTPサーブレットリクエスト・オブジェクトについてgetSessionというメソッドを呼び出すと、HTTPセッション・クラスのオブジェクトとしてセッションステートが読み出される。読み出されたセッションステートは変数serverSessionに格納される。この処理は、図6の例と同様である。但し、ここで読み出されるのはキー名がkey2のセッションステートのみである。
一方、6・7行目に示すように、HTTPサーブレットリクエスト・オブジェクトについてgetClientSessionというメソッドを呼び出すと、HTTPセッション・クラスの他のオブジェクトとしてセッションステートが読み出される。読み出されたセッションステートは変数clientSessionに格納される。ここでは、キー名がkey1のセッションステートが読み出される。なお、6行目に示すのは形式的な型変換であり、変数csrと変数reqの実体は同一である。
そして、9・10行目に示すように、変数serverSessionおよびclientSessionの何れについても、getAttributeというメソッドを呼び出せば、それぞれの内容を区別して読み出すことができる。また、12・13行目に示すように、これらの変数の何れについても、SsetAttributeというメソッドを呼び出せば、それぞれのオブジェクトを区別して新たな値を設定することができる。
このように、サーブレット・プログラム735の実行に応じ、アクセス部240は第1および第2のHTTPセッションオブジェクトとして記憶された各々のセッションステートに選択的にアクセスすることができる。
なお、図7においても、図6と同様にサーブレット・プログラム735のうちJavaEEなどに準拠した処理部分を例示したが、サーブレット・プログラム735は、JSPなどで記述したページ部分を含んでいてもよい。このため、HTTPサーブレット730の動作が完了すると、サーブレット・プログラム735はレンダリングエンジン720に出力され、レンダリングエンジン720がJSPのレンダリング処理を開始する。レンダリングエンジン720は、上記の返信部250としての役割も果たす。即ちレンダリングエンジン720は、HTTPセッションオブジェクトを記憶部200から読み出して、変換後のHTML文書中にパラメータとして設定する。但し、図7の例で、返信部250は、第1のHTTPセッションオブジェクトとして記憶されたセッションステートのみを読み出して設定し、第2のHTTPセッションオブジェクトとして記憶されたセッションステートは読み出さない。このように、図7においては一部のセッションステートのみを端末装置15に返信するので、セッション維持に必要な通信量や処理負荷を低減できる。
なお、ウェブサーバ20−2〜Nのそれぞれについても、ウェブサーバ20−1と同様の構成を採ることができるから説明を省略する。
図8は、本実施形態の変形例において、ウェブサーバ20−1〜Nが端末装置15と通信する手順を示す。図8を参照して、ウェブサイトがAjaxを採用する場合の処理手順を変形例として示す。本変形例において、返信部250およびリダイレクト処理部260は、図5のS560からS510にいたる処理に代えて、本図のS800からS880に至る処理を行う。また、端末装置15は、図5のS570からS580を経由してS500に至る処理に代えて、本図のS810からS870に至る処理を行う。
まず、返信部250は、リダイレクト要求を第2のHTTPリクエストとしてリダイレクト処理部260宛に送信させるように設定した第1のHTTPレスポンスを端末装置15に返信する(S800)。このリダイレクト要求の要求先は、ウェブサーバ20−1〜Nのうち任意のウェブサーバではなく、いま第1のHTTPレスポンスを返信しようとしているウェブサーバ20−1に設定される。これに対応して、端末装置15は、第1のHTTPレスポンスを受信して(S810)、このレスポンスに含まれる指示に応じてウェブページを表示する(S820)。
端末装置15は、HTTPリクエストを送信する明示的な操作を受けなくとも、そのウェブページ上で動作するJavaScriptの動作によって、XMLHTTP通信によるリクエストをウェブサーバ20−1に送信する(S830)。これを受けて、アクセス部240は、格納しているセッションステートにアクセスする(S835)。端末装置15は、HTTPリクエストを送信するべき明示的な操作を利用者から受けると、それに応じて第2のHTTPリクエストを送信する(S840)。このHTTPリクエストには、S800において説明したように、リダイレクト処理部260に対しリダイレクト処理を要求するように予め設定されている。このため、リダイレクト処理部260は、このリダイレクト要求に応じて、セッションステートを記憶部200から読み出す(S845)。
そして、リダイレクト処理部260は、このセッションステートを、その次の第3のHTTPリクエストに対応付けて端末装置15により送信させるパラメータとして、この第2のHTTPリクエストに対応する第2のHTTPレスポンスに設定する。そして、リダイレクト処理部260は、この第2のHTTPレスポンスに、直ちに他のウェブサーバに第3のHTTPリクエストを再送する指示を含めて端末装置15に返信する。
端末装置15は、この第2のHTTPレスポンスを受信すると(S860)、直ちに他のウェブサーバに第3のHTTPリクエストを送信する(S870)。この第3のHTTPリクエストには最新のセッションステートが対応付けられて送信される。このため、これを受け取ったウェブサーバは、HTTPリクエストに対応付けて最新のセッションステートを適切に受信することができる(S880)。この後の処理は、図1から図7を参照して説明した実施例と同様である。即ち、このウェブサーバは、図5のS520に戻り、HTTPリクエストに応じた処理を行う。
このように、ウェブサイトがAjax機能を採用している場合には、HTTPレスポンスのパラメータに、そのレスポンスの送信元に対してリダイレクト処理を要求させるように設定することで、最新のセッションステートを読み出すことができる。そして、リダイレクト処理を要求されたウェブサーバ20−1は、最新のセッションステートを次のHTTPリクエストに対応付けて送信させるようにHTTPレスポンスに設定する。これにより、当該次のHTTPリクエストを受けた他のウェブサーバは、セッションを正しく継続することができる。
図9は、本実施形態又はその変形例においてウェブサーバ20−1として機能する情報処理装置900のハードウェア構成の一例を示す。情報処理装置900は、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部と、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部と、入出力コントローラ1084に接続されるROM1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部とを備える。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、ROM1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、情報処理装置900が使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020又はハードディスクドライブ1040に提供する。
また、入出力コントローラ1084には、ROM1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。ROM1010は、情報処理装置900の起動時にCPU1000が実行するブートプログラムや、情報処理装置900のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、入出力チップ1070を介してRAM1020またはハードディスクドライブ1040に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
情報処理装置900に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して
、記録媒体から読み出され情報処理装置900にインストールされて実行される。プログラムが情報処理装置900等に働きかけて行わせる動作は、図1から図8において説明したウェブサーバ20−1における動作と同一であるから、説明を省略する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置900に提供してもよい。
以上、本実施形態およびその変形例によれば、サーブレット・プログラムにおいてセッションステートをHTTPセッションオブジェクトとして参照できるようにしつつも、セッションステートの実体は端末装置に記憶させることができる。これにより、セッションステートをサーブレット・プログラムのコード中で一目瞭然に区別して認識でき、なおかつ、ウェブサイトを複数のウェブサーバで構築してもセッションを適切に維持できる。このことは、プログラム開発や保守の効率を高め、ウェブサイトのハードウェア構成の変更を容易にすることにつながり、近年の大規模なウェブサイトを極めて効率的に構築させることができる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることのできることが当業者にとって明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、第1の構成を採用したウェブサーバであるウェブサーバ510の機能の概要を示す。 図2は、第2の構成を採用したウェブサーバであるウェブサーバ540の機能の概要を示す。 図3は、本実施形態に係る情報システム10の全体構成を示す。 図4は、本実施形態に係るウェブサーバ20−1の機能構成を示す。 図5は、本実施形態に係るウェブサーバ20−1が端末装置15と通信する手順を示す。 図6は、ウェブサーバ20−1において動作するソフトウェアおよびデータの第1構成を示す概念図である。 図7は、ウェブサーバ20−1において動作するソフトウェアおよびデータの第2構成を示す概念図である。 図8は、本実施形態の変形例において、ウェブサーバ20−1〜Nが端末装置15と通信する手順を示す。 図9は、本実施形態又はその変形例においてウェブサーバ20−1として機能する情報処理装置900のハードウェア構成の一例を示す。
符号の説明
10 情報システム
15 端末装置
18 ディスパッチャ装置
20 ウェブサーバ
200 記憶部
210 受信部
220 格納部
230 実行部
240 アクセス部
250 返信部
260 リダイレクト処理部
510 ウェブサーバ
520 HTTPサーブレットリクエスト・オブジェクト
530 HTTPサーブレット
540 ウェブサーバ
550 HTTPサーブレットリクエスト・オブジェクト
560 HTTPサーブレット
600 フィルタオブジェクト
610 HTTPサーブレットリクエスト・オブジェクト
620 レンダリングエンジン
630 HTTPサーブレット
635 サーブレット・プログラム
700 フィルタオブジェクト
710 HTTPサーブレットリクエスト・オブジェクト
720 レンダリングエンジン
730 HTTPサーブレット
735 サーブレット・プログラム
900 情報処理装置

Claims (11)

  1. 端末装置から順次受信する複数のHTTPリクエストに応じた処理の経過を示すセッションステートを記憶するための記憶部と、
    セッションステートを第1のHTTPリクエストに対応付けて端末装置から受信する受信部と、
    前記記憶部のうち、受信した前記第1のHTTPリクエストに応じて処理を行う処理プログラムからHTTPセッションオブジェクトとしてアクセスされる記憶領域に、受信した前記セッションステートを格納する格納部と、
    前記処理プログラムに含まれる、HTTPセッションオブジェクトにアクセスする命令の実行に応じて、格納された前記セッションステートにアクセスするアクセス部と、
    前記処理プログラムに含まれる、第1のHTTPレスポンスを返信する命令の実行に応じて、前記記憶部から前記セッションステートを読み出して、第2のHTTPリクエストに対応付けて端末装置により送信させるパラメータとして前記第1のHTTPレスポンスに設定し、設定した前記第1のHTTPレスポンスを端末装置に返信する返信部と
    を備えるウェブサーバ。
  2. 前記格納部は、HTTPセッションオブジェクトとしてアクセスされる前記記憶領域に、既に当該記憶領域に記憶されているセッションステートに代えて、前記受信部が新たに受信した前記セッションステートを格納する
    請求項1に記載のウェブサーバ。
  3. 前記記憶部は、HTTPセッションオブジェクトとしてアクセスされる記憶領域に、第1のHTTPセッションオブジェクト、および、第2のHTTPセッションオブジェクトを記憶し、
    前記格納部は、新たに受信した前記セッションステートを前記第1のHTTPセッションオブジェクトとして前記記憶部に格納し、
    前記アクセス部は、前記処理プログラムの実行に応じて、前記第1および第2のHTTPセッションオブジェクトとして記憶された各々のセッションステートにアクセスし、
    前記返信部は、前記第1のHTTPセッションオブジェクトとして記憶されたセッションステートを前記記憶部から読み出して、読み出した当該セッションステートを、前記第2のHTTPリクエストに対応付けて送信させるパラメータとして前記第1のHTTPレスポンスに設定する
    請求項1に記載のウェブサーバ。
  4. 前記返信部は、更に、前記第1のHTTPセッションオブジェクトとして記憶されたセッションステートを前記記憶部から読み出したことに応じて、当該セッションステートを記憶している記憶領域を他の用途に開放するための処理を行う
    請求項3に記載のウェブサーバ。
  5. 前記返信部は、前記第1のHTTPレスポンスを受け取った端末装置が表示するウェブページには表示されないパラメータであって、当該ウェブページに対する操作に応じて前記第2のHTTPリクエストに対応付けて送信されるパラメータに、読み出した前記セッションステートを設定する
    請求項1に記載のウェブサーバ。
  6. 前記記憶部は、セッションステートとして、第1のデータおよび前記第1のデータを前記第1のデータの格納先アドレスにより参照する第2のデータを含むデータ群を記憶しており、
    前記返信部は、前記記憶部からセッションステートとして読み出した前記データ群に対し、前記第2のデータから前記第1のデータを前記第1のデータの格納先アドレスを用いずに参照する直列化処理を行い、直列化処理を行ったデータ群を前記第1のHTTPレスポンスに設定する
    請求項1に記載のウェブサーバ。
  7. 前記返信部は、直列化処理を行った前記データ群に対し、更に、暗号化処理およびデータ圧縮処理の少なくとも一方を含む変換を行い、変換を行ったデータ群を前記第1のHTTPレスポンスのパラメータに設定する
    請求項6に記載のウェブサーバ。
  8. 前記アクセス部が、前記第1のHTTPレスポンスが返信されてから前記第2のHTTPリクエストを受信するまでの間にさらに前記記憶部のセッションステートをアクセスする場合において、
    前記返信部は、前記第2のHTTPリクエストとしてリダイレクト処理を端末装置により要求させる前記第1のHTTPレスポンスを返信し、
    受信した前記第2のHTTPリクエストがリダイレクト処理を要求することを条件に、前記アクセス部がアクセスした前記セッションステートを前記記憶部から読み出して、第3のHTTPリクエストに対応付けて端末装置により送信させるパラメータとして第2のHTTPレスポンスに設定し、設定した前記第2のHTTPレスポンスを返信するリダイレクト処理部を更に備え、
    前記格納部は、前記第3のHTTPリクエストを受信したことを条件に、受信した前記セッションステートを前記記憶部に格納する
    請求項1に記載のウェブサーバ。
  9. 複数のウェブサーバと、端末装置から受けたHTTPリクエストを何れかのウェブサーバに選択的に割り当てるディスパッチャ装置とを備えたシステムであって、
    それぞれのウェブサーバが、
    端末装置から順次受信する複数のHTTPリクエストに応じた処理の経過を示すセッションステートを記憶するための記憶部と、
    前記ディスパッチャ装置からの割当を受けて、セッションステートを第1のHTTPリクエストに対応付けて端末装置から受信する受信部と、
    前記記憶部のうち、受信した前記第1のHTTPリクエストに応じて処理を行う処理プログラムからHTTPセッションオブジェクトとしてアクセスされる記憶領域に、受信した前記セッションステートを格納する格納部と、
    前記処理プログラムに含まれる、HTTPセッションオブジェクトにアクセスする命令の実行に応じて、格納された前記セッションステートにアクセスするアクセス部と、
    前記処理プログラムに含まれる、第1のHTTPレスポンスを返信する命令の実行に応じて、前記記憶部から前記セッションステートを読み出して、第2のHTTPリクエストに対応付けて端末装置により送信させるパラメータとして前記第1のHTTPレスポンスに設定し、設定した前記第1のHTTPレスポンスを端末装置に返信する返信部と
    を有するシステム。
  10. 端末装置から順次受信する複数のHTTPリクエストに応じた処理の経過を示すセッションステートを記憶するための記憶部を有するウェブサーバにおいて、端末装置から受けたHTTPリクエストに応じて処理を行う方法であって、
    セッションステートを第1のHTTPリクエストに対応付けて端末装置から受信することと、
    前記記憶部のうち、受信した前記第1のHTTPリクエストに応じて処理を行う処理プログラムからHTTPセッションオブジェクトとしてアクセスされる記憶領域に、受信した前記セッションステートを格納することと、
    前記処理プログラムに含まれる、HTTPセッションオブジェクトにアクセスする命令の実行に応じて、格納された前記セッションステートにアクセスすることと、
    前記処理プログラムに含まれる、第1のHTTPレスポンスを返信する命令の実行に応じて、前記記憶部から前記セッションステートを読み出して、第2のHTTPリクエストに対応付けて端末装置により送信させるパラメータとして前記第1のHTTPレスポンスに設定し、設定した前記第1のHTTPレスポンスを端末装置に返信することと
    を備える方法。
  11. 情報処理装置を、
    端末装置から順次受信する複数のHTTPリクエストに応じた処理の経過を示すセッションステートを記憶するための記憶部と、
    セッションステートを第1のHTTPリクエストに対応付けて端末装置から受信する受信部と、
    前記記憶部のうち、受信した前記第1のHTTPリクエストに応じて処理を行う処理プログラムからHTTPセッションオブジェクトとしてアクセスされる記憶領域に、受信した前記セッションステートを格納する格納部と、
    前記処理プログラムに含まれる、HTTPセッションオブジェクトにアクセスする命令の実行に応じて、格納された前記セッションステートにアクセスするアクセス部と、
    前記処理プログラムに含まれる、第1のHTTPレスポンスを返信する命令の実行に応じて、前記記憶部から前記セッションステートを読み出して、第2のHTTPリクエストに対応付けて端末装置により送信させるパラメータとして前記第1のHTTPレスポンスに設定し、設定した前記第1のHTTPレスポンスを端末装置に返信する返信部と
    して機能させるプログラム。
JP2008554083A 2007-01-19 2008-01-17 セッションを管理するウェブサーバおよびその方法 Expired - Fee Related JP5315062B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008554083A JP5315062B2 (ja) 2007-01-19 2008-01-17 セッションを管理するウェブサーバおよびその方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007009726 2007-01-19
JP2007009726 2007-01-19
PCT/JP2008/050544 WO2008088026A1 (ja) 2007-01-19 2008-01-17 セッションを管理するウェブサーバおよびその方法
JP2008554083A JP5315062B2 (ja) 2007-01-19 2008-01-17 セッションを管理するウェブサーバおよびその方法

Publications (2)

Publication Number Publication Date
JPWO2008088026A1 JPWO2008088026A1 (ja) 2010-05-13
JP5315062B2 true JP5315062B2 (ja) 2013-10-16

Family

ID=39636027

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008554083A Expired - Fee Related JP5315062B2 (ja) 2007-01-19 2008-01-17 セッションを管理するウェブサーバおよびその方法

Country Status (7)

Country Link
US (1) US8332520B2 (ja)
EP (1) EP2116937A4 (ja)
JP (1) JP5315062B2 (ja)
KR (1) KR20090112669A (ja)
CN (1) CN101636723A (ja)
CA (1) CA2674000A1 (ja)
WO (1) WO2008088026A1 (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8332520B2 (en) 2007-01-19 2012-12-11 International Business Machines Corporation Web server for managing session and method thereof
CA2720398C (en) 2008-04-02 2016-08-16 Twilio Inc. System and method for processing telephony sessions
US8837465B2 (en) 2008-04-02 2014-09-16 Twilio, Inc. System and method for processing telephony sessions
US8964726B2 (en) 2008-10-01 2015-02-24 Twilio, Inc. Telephony web event system and method
CN102415068B (zh) 2009-03-02 2015-09-02 特维里奥公司 用于多租户电话网络的方法和系统
US9210275B2 (en) 2009-10-07 2015-12-08 Twilio, Inc. System and method for running a multi-module telephony application
US8635334B2 (en) * 2009-12-10 2014-01-21 Riverbed Technology, Inc. Web transaction analysis
EP2526657B1 (en) * 2010-01-19 2019-02-20 Twilio Inc. Method and system for preserving telephony session state
US9459925B2 (en) 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US20120208495A1 (en) 2010-06-23 2012-08-16 Twilio, Inc. System and method for monitoring account usage on a platform
US9590849B2 (en) 2010-06-23 2017-03-07 Twilio, Inc. System and method for managing a computing cluster
US9338064B2 (en) 2010-06-23 2016-05-10 Twilio, Inc. System and method for managing a computing cluster
US9459926B2 (en) 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US8838707B2 (en) 2010-06-25 2014-09-16 Twilio, Inc. System and method for enabling real-time eventing
US8649268B2 (en) 2011-02-04 2014-02-11 Twilio, Inc. Method for processing telephony sessions of a network
US9648006B2 (en) 2011-05-23 2017-05-09 Twilio, Inc. System and method for communicating with a client application
US20140044123A1 (en) 2011-05-23 2014-02-13 Twilio, Inc. System and method for real time communicating with a client application
WO2012162397A1 (en) 2011-05-23 2012-11-29 Twilio, Inc. System and method for connecting a communication to a client
US8527862B2 (en) * 2011-06-24 2013-09-03 Usablenet Inc. Methods for making ajax web applications bookmarkable and crawlable and devices thereof
US10182147B2 (en) 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
EP2759123B1 (en) 2011-09-21 2018-08-15 Twilio, Inc. System and method for authorizing and connecting application developers and users
US9462466B2 (en) * 2011-09-29 2016-10-04 Israel L'Heureux Gateway router supporting session hand-off and content sharing among clients of a local area network
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
US9602586B2 (en) 2012-05-09 2017-03-21 Twilio, Inc. System and method for managing media in a distributed communication network
US9240941B2 (en) 2012-05-09 2016-01-19 Twilio, Inc. System and method for managing media in a distributed communication network
US20130304928A1 (en) 2012-05-09 2013-11-14 Twilio, Inc. System and method for managing latency in a distributed telephony network
US9247062B2 (en) 2012-06-19 2016-01-26 Twilio, Inc. System and method for queuing a communication session
US8737962B2 (en) 2012-07-24 2014-05-27 Twilio, Inc. Method and system for preventing illicit use of a telephony platform
US8738051B2 (en) 2012-07-26 2014-05-27 Twilio, Inc. Method and system for controlling message routing
US8938053B2 (en) 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
US8948356B2 (en) 2012-10-15 2015-02-03 Twilio, Inc. System and method for routing communications
US9253254B2 (en) 2013-01-14 2016-02-02 Twilio, Inc. System and method for offering a multi-partner delegated platform
CN103973641B (zh) 2013-01-29 2017-08-25 国际商业机器公司 管理不同网站的会话的方法及装置
US9282124B2 (en) 2013-03-14 2016-03-08 Twilio, Inc. System and method for integrating session initiation protocol communication in a telecommunications platform
US9001666B2 (en) 2013-03-15 2015-04-07 Twilio, Inc. System and method for improving routing in a distributed communication platform
US9240966B2 (en) 2013-06-19 2016-01-19 Twilio, Inc. System and method for transmitting and receiving media messages
US9225840B2 (en) 2013-06-19 2015-12-29 Twilio, Inc. System and method for providing a communication endpoint information service
US9338280B2 (en) 2013-06-19 2016-05-10 Twilio, Inc. System and method for managing telephony endpoint inventory
US9483328B2 (en) 2013-07-19 2016-11-01 Twilio, Inc. System and method for delivering application content
US9338018B2 (en) 2013-09-17 2016-05-10 Twilio, Inc. System and method for pricing communication of a telecommunication platform
US9137127B2 (en) 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US9274858B2 (en) 2013-09-17 2016-03-01 Twilio, Inc. System and method for tagging and tracking events of an application platform
US9325624B2 (en) 2013-11-12 2016-04-26 Twilio, Inc. System and method for enabling dynamic multi-modal communication
US9553799B2 (en) 2013-11-12 2017-01-24 Twilio, Inc. System and method for client communication in a distributed telephony network
US9609068B2 (en) * 2013-12-16 2017-03-28 Fuji Xerox Co., Ltd. Session management system, session management apparatus, and non-transitory computer readable medium
US9344573B2 (en) 2014-03-14 2016-05-17 Twilio, Inc. System and method for a work distribution service
US9226217B2 (en) 2014-04-17 2015-12-29 Twilio, Inc. System and method for enabling multi-modal communication
CN105022622B (zh) * 2014-04-29 2018-09-28 鼎捷软件股份有限公司 适用于远程程序呼叫的逾时控制单元与远程程序呼叫方法
US9246694B1 (en) 2014-07-07 2016-01-26 Twilio, Inc. System and method for managing conferencing in a distributed communication network
US9251371B2 (en) 2014-07-07 2016-02-02 Twilio, Inc. Method and system for applying data retention policies in a computing platform
US9516101B2 (en) 2014-07-07 2016-12-06 Twilio, Inc. System and method for collecting feedback in a multi-tenant communication platform
US9774687B2 (en) 2014-07-07 2017-09-26 Twilio, Inc. System and method for managing media and signaling in a communication platform
WO2016065080A1 (en) 2014-10-21 2016-04-28 Twilio, Inc. System and method for providing a miro-services communication platform
US9477975B2 (en) 2015-02-03 2016-10-25 Twilio, Inc. System and method for a media intelligence platform
US9948703B2 (en) 2015-05-14 2018-04-17 Twilio, Inc. System and method for signaling through data storage
US10419891B2 (en) 2015-05-14 2019-09-17 Twilio, Inc. System and method for communicating through multiple endpoints
CN105553756B (zh) * 2015-12-09 2019-01-11 福建天晴数码有限公司 基于Web服务器的响应压缩调整方法及其系统
US10659349B2 (en) 2016-02-04 2020-05-19 Twilio Inc. Systems and methods for providing secure network exchanged for a multitenant virtual private cloud
KR101676653B1 (ko) * 2016-04-20 2016-11-17 주식회사 티맥스 소프트 Http 세션 정보 동적 유지 방법, 이를 사용한 웹 애플리케이션 서버 및 웹 서버
US10063713B2 (en) 2016-05-23 2018-08-28 Twilio Inc. System and method for programmatic device connectivity
US10686902B2 (en) 2016-05-23 2020-06-16 Twilio Inc. System and method for a multi-channel notification service
CN111756784B (zh) * 2019-04-30 2023-05-12 北京京东尚科信息技术有限公司 会话方法、会话装置、计算机设备和介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002334057A (ja) * 2001-05-11 2002-11-22 Hitachi Ltd 負荷分散時のセッション継続方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003083A (en) 1998-02-19 1999-12-14 International Business Machines Corporation Workload management amongst server objects in a client/server network with distributed objects
DE60110744D1 (de) * 2001-03-23 2005-06-16 Sun Microsystems Inc Client- Abfragenumlenkung
US7191233B2 (en) * 2001-09-17 2007-03-13 Telecommunication Systems, Inc. System for automated, mid-session, user-directed, device-to-device session transfer system
US7024451B2 (en) * 2001-11-05 2006-04-04 Hewlett-Packard Development Company, L.P. System and method for maintaining consistent independent server-side state among collaborating servers
US7308502B2 (en) 2002-12-20 2007-12-11 Hewlett-Packard Development Company, L.P. Method and architecture to provide client session failover
US7000089B2 (en) * 2002-12-20 2006-02-14 International Business Machines Corporation Address assignment to transaction for serialization
US7346773B2 (en) * 2004-01-12 2008-03-18 Cisco Technology, Inc. Enabling stateless server-based pre-shared secrets
JP4615247B2 (ja) 2004-05-07 2011-01-19 株式会社日立製作所 コンピュータシステム
JP2006011739A (ja) 2004-06-24 2006-01-12 Internatl Business Mach Corp <Ibm> オントロジを利用する装置、コンピュータシステムおよびデータ処理方法
US8332520B2 (en) 2007-01-19 2012-12-11 International Business Machines Corporation Web server for managing session and method thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002334057A (ja) * 2001-05-11 2002-11-22 Hitachi Ltd 負荷分散時のセッション継続方法

Also Published As

Publication number Publication date
EP2116937A4 (en) 2010-06-09
JPWO2008088026A1 (ja) 2010-05-13
WO2008088026A1 (ja) 2008-07-24
CA2674000A1 (en) 2008-07-24
US20080177883A1 (en) 2008-07-24
US8332520B2 (en) 2012-12-11
CN101636723A (zh) 2010-01-27
KR20090112669A (ko) 2009-10-28
EP2116937A1 (en) 2009-11-11

Similar Documents

Publication Publication Date Title
JP5315062B2 (ja) セッションを管理するウェブサーバおよびその方法
JP4285655B2 (ja) Webサービスを提供する方法、装置、プログラム
JP5089684B2 (ja) サービス・プログラムを生成する技術
JP5188284B2 (ja) サービス接続システム及びサービス接続方法
CN102203750B (zh) 提供装置、系统、服务器装置和方法
JP5238851B2 (ja) 画面生成システム、画面生成方法、および画面生成プログラム
JP2013041611A (ja) ユーザインターフェースを管理する装置、表示する装置、管理する方法、及び表示する方法
KR20110090772A (ko) 클라이언트 프로그램, 단말, 서버 장치, 시스템 및 방법
JP5936103B2 (ja) クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム
CN107315972A (zh) 一种大数据非结构化文件动态脱敏方法及系统
JP5638761B2 (ja) 画面生成方法、画面表示方法、画面生成装置、及びプログラム
JPWO2004021234A1 (ja) ネットワークシステム、プロバイダ、管理サイト、リクエスタ及びプログラム
US10334014B2 (en) Accessing connected service resources in a distributed application programming interface
JP5039946B2 (ja) クライアント装置およびサーバ装置の間の通信を中継する技術
JP4114873B2 (ja) サーバ装置、サービス方法、プログラム及び記録媒体
CN110740118A (zh) 与合作伙伴站点发起会话的协议
JP2004246747A (ja) 既存サービスのラッピング方法および装置
JP5099073B2 (ja) ソフトウェア間通信の中継方法、装置、及びプログラム
JP2005196676A (ja) サービス生成方法、サービス生成システムおよびプログラム
US7885997B2 (en) Data processing method, program, device, message structure, message generation method, and message transmission method
JP2000276450A (ja) エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体
CN106453250A (zh) 一种大数据rpc的处理方法
KR101270746B1 (ko) 웹 서비스 중개 장치 및 방법
CN101917476A (zh) 超文本传输协议消息处理方法及其客户端系统
JP7463606B1 (ja) 接続切替えサーバおよび接続切替え方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120321

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130708

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees