Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4640682B2 - クライアント−サーブレット通信を改善するための方法およびシステム - Google Patents
[go: Go Back, main page]

JP4640682B2 - クライアント−サーブレット通信を改善するための方法およびシステム - Google Patents

クライアント−サーブレット通信を改善するための方法およびシステム Download PDF

Info

Publication number
JP4640682B2
JP4640682B2 JP2008529574A JP2008529574A JP4640682B2 JP 4640682 B2 JP4640682 B2 JP 4640682B2 JP 2008529574 A JP2008529574 A JP 2008529574A JP 2008529574 A JP2008529574 A JP 2008529574A JP 4640682 B2 JP4640682 B2 JP 4640682B2
Authority
JP
Japan
Prior art keywords
servlet
client
information
request
web browser
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.)
Active
Application number
JP2008529574A
Other languages
English (en)
Other versions
JP2009508197A5 (ja
JP2009508197A (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
Publication of JP2009508197A publication Critical patent/JP2009508197A/ja
Publication of JP2009508197A5 publication Critical patent/JP2009508197A5/ja
Application granted granted Critical
Publication of JP4640682B2 publication Critical patent/JP4640682B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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
    • H04L65/40Support for services or applications
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Description

本発明は、クライアント−サーバ通信に関し、特に、既存の通信プロトコルを変更することなくまたクライアントを変更することなく、ワールド・ワイド・ウェブ(ウェブ)におけるクライアント−サーブレット通信(Client-Servlet communication)の改善に関し、より具体的には、所望の情報を取得するための当初のクライアントのウェブ・ブラウザ要求に含まれない欠落情報をサーブレットが識別する場合にそのようなサーブレットの柔軟性およびインタラクティビティ(interactivity:相互性)を向上させることに関する。
用語「クライアント−サーバ(Client-Server)」は、通信プロトコル(例えば、HTTP)を介して互いに通信するクライアントおよびサーバから成るネットワーク・アプリケーション・アーキテクチャを意味する。
ウェブは、リソース(resource)と呼ばれる関心のあるアイテムが、ユニフォーム・リソース識別子(URI:Uniform Resource Identifier)と呼ばれるグローバル識別子(globalidentifier)により識別される情報空間を意味する。ウェブは、3つの規格で構成されている。すなわち、情報の各ページに、それを見出すことができる一意の「アドレス」がどのように付与されるかを規定するユニフォーム・リソース・ロケータ(URL:Uniform Resource Locator)、クライアントおよびサーバがどのように情報を互いに送るかを規定するハイパー・テキスト転送プロトコル(HTTP:Hyper Text Transfer Protocol)、ならびに各種デバイス上に情報が表示されるように情報を符号化する方法であるハイパー・テキスト・マークアップ言語(HTML:Hyper Text Markup Language)である。
ウェブは、以下のように機能する:クライアントのウェブ・ブラウザ(例えば、マイクロソフトのインターネット・エクスプローラ(R)、アップルのサファリ(R))が開かれると、そのブラウザは、ハイパー・テキスト転送プロトコル(HTTP)を用いてクライアント(または、使用されているコンピュータ)の代わりに通信し、ウェブ・ページ要求を行う。ひとたびその要求が送られると、クライアントのウェブ・ブラウザ・コンピュータは、サーバからのハイパー・テキスト・データ・ストリームを待ち受ける。サーバがその要求を受け取ると、サーバは、要求されたファイルを捜し、もし存在すれば、そのファイルをクライアントのウェブ・ブラウザに要求通り送る。
サーブレットは、サーバ上で走るプログラムであり、クライアントのウェブ・ブラウザからの要求を待ち受け、この要求への応答(例えば、動的に生成されたウェブ・ページとして)生成する。
従来技術
従来技術のサーブレットは、以下のように機能する:
クライアントのウェブ・ブラウザが、HTTP要求をサーブレットに、そのURLを呼び出すことによって送る。クライアントのウェブ・ブラウザは、ブラウザがサーブレットを呼び出していることを必ずしも知っているわけではない。サーブレットを呼び出すことは、何か他のウェブ・ページをロードすることに似ており、違いは、パラメータを要求の中でサーブレットに渡すことができること、およびサーバにより送り返される応答が静的な文書ではなく、動的に生成されることである。
要求は、サーブレットをホストしているアプリケーション・サーバにより分析され、要求されたURLに対応するサーブレットに渡される。
要求は、サーブレットにより分析され、最終のパラメータが構文解析および解釈され、クライアントのウェブ・ブラウザへ返す文書が動的に生成される(文書のコンテンツは、クライアントのウェブ・ブラウザにより要求中で渡される最終のパラメータに依存し得る)。
生成された文書は、クライアントのウェブ・ブラウザにより受信され、表示または解釈される(JavaScript(R)のような何らかの実行可能スクリプトを文書が含んでいる場合)。
サーブレットは、動的なコンテンツを提示するための強力かつ適応性のある枠組みを提供することによりインターネットを変容させた。すなわち、コンテンツが規則的に更新されなければならない静的な文書を発行する代わりに、サーブレットは、クライアントのウェブ・ブラウザが、パラメータをHTTP要求に追加し、その要求に基づいて現在の情報を得ることができるようにする。サーブレットがなければ、ユーザが自分のクライアントのウェブ・ブラウザからサーバと対話する対話型ウェブ・アプリケーションを作り出すことは不可能であろう。
しかしながら、サーブレットには1つの制限がある。すなわち、要求が受け取られた後、サーブレットには、クライアントのウェブ・ブラウザに欠落情報を求める方法が全くないことである。
サーブレットは、到来する要求と共に、サーバ上でなされたアクション、またはサーバにより返された情報に影響し得るパラメータのリストを受け取ることができる。例えば、もしインターネット上で何かを命令すると、「送出(submit)」ボタンを押すことにより、命令されたアイテムを含むリストがサーバに送られる。サーバは、このリストで動作し(データベースを更新する等)、通常すべての選ばれたアイテムを列挙した確認ページを生成する。
しかしながら、従来のサーブレットでは、サーバ上で要求を扱うために必要なすべてのパラメータは、クライアントのウェブ・ブラウザにより送られた当初の要求に含まれていなければならない。すなわち、もしサーブレットが、要求の処理の間に、何らかの付加的な情報がクライアントのウェブ・ブラウザによって当初の供給中に提供されていないことに気付いても、処理を一次停止し、クライアントのウェブ・ブラウザに欠落情報を求め、処理が中断された時点からその処理を再開する方法が全くない。これによりサーブレットの応用エリアが制限される。
クライアントのウェブ・ブラウザは、サーブレットがどんな情報を必要としているかを正確に知らなければならない。
クライアントのウェブ・ブラウザは、その要求において、サーブレットにより実際に必要とされる情報よりも多くの情報を提供する必要があり得る。
従来のサーブレットは、クライアントのウェブ・ブラウザ要求により提供されるよりも多くの情報を必要とする不測の状況を扱うことができない。要求がすべての必要な情報を含んでいるのではないのであれば、この問題を扱う従来の方法は、処理を停止したり、元のページに取って代わりエラー・メッセージを表示するウェブ・ページをクライアントのウェブ・ブラウザに返したり、欠落情報を要求し、新しい情報を有する同じまたは別のサーブレットを呼び出す新しいページを表示するというものである。
これは、欠落情報を扱うための非常に良好な方法ではない。なぜならば、1つのサーブレット呼び出しにおいて要求処理を停止し、別のサーブレット呼び出しにおいてそのトランザクションを継続することは単純ではないことがあるからである。また、それによりユーザが混乱を来すことがある。なぜならば、どんな情報が欠落しているかをユーザに知らせる小さい注釈と共に同じページがかなり頻繁に再表示されるからであり、これは、使い勝手の観点からは問題である。
既存の通信プロトコルを変更することなくまたクライアントを変更することなく、ワールド・ワイド・ウェブ(ウェブ)におけるクライアント−サーブレット通信を改善する方法およびシステムを提供すること、より具体的には、所望の情報を取得するための当初のクライアントのウェブ・ブラウザ要求中に含まれない欠落情報をサーブレットが識別する場合にそのようなサーブレットの柔軟性およびインタラクティビティを向上させることが本発明目的である。
本発明は、既存の通信プロトコルを変更することなく、またクライアントを変更することなくクライアント−サーブレット通信を改善する方法およびシステムを提供する。
もし当初の要求が、所望の情報を取得するためのすべての情報を含んでいれば、クライアントとサーブレットとの間の既存の従来技術の一方向通信パスは不変のままである。しかしながら、所望の情報を取り出すための当初のクライアントのウェブ・ブラウザ要求中に含まれない欠落情報をサーブレットが識別する場合、サーブレットは、前記当初のHTTP要求のHTTP応答機能を利用することにより欠落情報をサーブレットに提供するために別の通信パスを自動的に開き、この別の通信パスは、さらなるサーブレット機能コンポーネントによりサポートされており、以下のステップを特徴とする:クライアントのウェブ・ブラウザにおいて実行された場合に欠落情報を取得しかつさらなるサーブレット機能コンポーネントを呼び出すスクリプトをサーブレットにより生成するステップと、そのスクリプトを、それが部分的応答であると示しているHTTP応答に追加するステップと、スクリプトを含むHTTP応答をクライアントのウェブ・ブラウザに送るステップと、欠落情報が利用可能になるまでサーブレットによる当初のHTTP応答の実行を一時停止するステップと、さらなるサーブレット機能コンポーネントにより欠落情報を受信するステップであって、欠落情報が、クライアントのウェブ・ブラウザにおけるスクリプトの実行の間にそのスクリプトにより作成された新たなHTTP要求中に含まれるステップと、欠落情報をサーブレットに提供するステップと、前記HTTP応答の残りを取得しそのHTTP応答の残りを表示用にクライアントのウェブ・ブラウザに提供するために欠落情報を用いてサーブレットによる当初のHTTP応答の実行を継続するステップと、を特徴とする。
従来技術において説明した制限がサーブレットにある理由は、HTTPプロトコルおよびウェブ・ブラウザ/サーバが以下のように設計されていることに由来する。
HTTPは、クライアントのウェブ・ブラウザとウェブ・サーバとの間の通信のために用いられるプロトコルである。
通常、HTTPプロトコルは、クライアントのウェブ・ブラウザが、ある情報をサーバに送る(POST要求)か、あるいはサーバから文書を得る(GET要求)かするために要求をウェブ・サーバ(またはアプリケーション・サーバ/サーブレット)に送ることを可能にする。
クライアントのウェブ・ブラウザにより送られる要求のタイプ(GETまたはPOST)と無関係に、サーバは常に、その要求を処理し、戻り符号(例えば、要求がうまく扱えたかどうかを示す)を含むヘッダを含む応答、および最終結果文書を返すべきである。要求が成功した場合、クライアントのウェブ・ブラウザは通常、サーバにより返された文書を表示し、要求を引き起こした要素のリンクを含んでいた元のページをサーバからの応答で置き換える。
もし要求が長期に渡るものであれば、サーバは、文書生成全体が完了される前に、応答文書の部分を定期的に送ることもできる。このようにして、ユーザは、文書全体が生成されて伝送されるのを待つ必要なく、文書の冒頭を読むことができる。
これは一方向通信である。すなわち、プロトコルは、クライアントのウェブ・ブラウザにより開始された通信を予知するのみである。サーバは通常、クライアントのウェブ・ブラウザに要求を送るための方法を全く持たない。
この制限を克服するため、本発明は、応答文書全体が生成される前にサーバが「部分的文書」をクライアントのウェブ・ブラウザに送ることができるという事実、およびこの部分的文書が、文書全体が完全に送られる前にクライアントのウェブ・ブラウザにより実行できるJavaScriptを含み得るという事実を利用する。JavaScriptは、HTMLページに埋め込むことができ、クライアントのウェブ・ブラウザにより解釈される言語である。
本発明により、以下のように機能する(図1参照)ウェブ・クライアントとウェブ・サーバとの間の相互通信が提供される:
クライアントのウェブ・ブラウザが、HTTP要求をアプリケーション・サーバ上のメイン・サーブレットに送る。要求によってメイン・サーバは、要求を処理するためにサーブレットにより必要とされるいくつかの初期パラメータを提供できる、
メイン・サーブレットは、要求を受信し(10)、最終のパラメータを解釈し、サーバ側でいくつかの動作を行うことにより要求の処理を開始し、応答文書を生成する(20)、
(この時点まで、これは従来技術のサーブレットの作動の仕方である)。要求の処理の間、メイン・サーブレットは、何らかの情報が欠落していることおよびこの情報が要求の発信者により提供されなければならないことに気付く(30)。この情報は、ユーザが入力しなければならない何らかの欠落データ、クライアントのウェブ・ブラウザそれ自体に関するまたは要求が処理される間クライアントのウェブ・ブラウザ上に表示されるページ中の何か他の要素の状態に関するシステム情報かもしれない。それは、によって、または相互作用なしで、クライアントのウェブ・ブラウザ上でJavaScriptを実行することによるユーザ・インタラクション有りまたは無しで取得できる情報でなければならない、
メイン・サーブレットは、要求の処理および応答の生成を一時停止して、JavaScriptを生成し(40)、これは、クライアントのウェブ・ブラウザ上で実行される際に以下のことを行う、
メイン・サーブレットは、欠落情報を取得する(または、ユーザに要求する)、
メイン・サーブレットは、セカンダリ・サーブレットを呼び出し、パラメータとしての付加的に取得された情報およびその情報を要求しているサーブレットにより生成された鍵を渡す。
メイン・サーブレットは、前のステップで生成されたJavaScriptを、部分的に生成された応答文書に追加し、その部分的応答をクライアントのウェブ・ブラウザに送る(50)。
メイン・サーブレットは、メイン・サーブレット前に生成した鍵の下で、メイン・サーブレットが求めている情報をウェブ・セッションまたは共有メモリ中で見出すことができるまで待機することによりその実行を一時停止する(60)。
その間、クライアントのウェブ・ブラウザは、メイン・サーブレットから受信した部分的文書を表示し始める。もしいくらかのコンテンツがすでに生成されていれば、それは表示される。応答に埋め込まれたJavaScriptが実行される。
部分的応答文書に埋め込まれたJavaScriptを実行している間、クライアントのウェブ・ブラウザは、メイン・サーブレットにより要求された欠落情報を取得し、この情報および、情報がその下で格納されるべき鍵を、セカンダリ・サーブレットのURLに符号化し、要求をこのセカンダリURLに送る。
メイン・サーブレットへの要求が依然走っている間、この第2の要求の結果が、クライアントのウェブ・ブラウザにより表示されている現在の文書に取って代わるべきでなく、第1の要求に割り込むべきではないことに留意することが重要である。これは、第2の要求の結果を、別個のフレーム、またはページの特定の要素(画像、埋め込みフレーム)へリダイレクトすることにより、またはHTTP要求をプログラムに基づいて開くJavaScript APIを用いることにより達成できる。
セカンダリ・サーブレットは、セッション64(または、第1のサーブレットと共有されるメモリ)において格納すべき情報と共に鍵/値ペアをそのパラメータ中に含む要求を受信する。次に、セカンダリ・サーブレットは、クライアントのウェブ・ブラウザ65に成功コードを返す。クライアントのウェブ・ブラウザは、セカンダリ・サーブレットの応答を無視できる。
メイン・サーブレットは、セッション(共有メモリ)において、それが生成した鍵について値が格納されていることを検出する。メイン・サーブレットは、この値抽出し(70;要求を処理する際に欠落していた情報である)、その値をセッション/共有メモリから取り去り、要求の処理を再開する。
処理は継続し、応答文書の残りが生成される。後に要求の処理の間にさらに多くの情報が欠落していることが明らかになれば、ユーザにより多くの情報を逐次的に要求するために、最後のステップを繰り返すことができる(80)。
最後に、要求が完結され、クライアントのウェブ・ブラウザは、完全な応答文書を受信し、表示する(80)。
本発明の好ましい実施形態において、サーブレットは、Javaサーブレットとして実装される。しかしながら、サーバ上でホストされ、HTTP要求に応答して動的なコンテンツを提供するCGIスクリプトまたは任意のサーブレット様プログラムについても同じ方法が用い得るであろう。
本発明のさらなる好ましい実施形態において、スクリプトはJavaScriptとして実装される。しかしながら、欠落情報を取得するためにクライアントのウェブ・ブラウザに返されたスクリプト(JavaScript)は、ウェブ・ページに埋め込むことができかつクライアントのウェブ・ブラウザによりオン・ザ・フライで実行できる任意の言語(Java(R)、Visual Basic(R)等)であってもよい。
本発明のさらなる実施形態において、ユーザから(マウスまたはキー・イベントのような)非常に低レベルの情報を受信し、この情報の復号処理を行う一般サーブレットを作成することが可能である。クライアントのウェブ・ブラウザは、ユーザにより作り出されたマウス/キー・イベントに関する情報を単に送るだけであり、要求を送る時にサーブレットが何をするか、またはサーブレットがこの情報で何かを行うかどうかは知らない。サーブレットは、この情報を解釈し、特定のイベントが生じた時にアクションがとられなければならないとサーブレットが判断した場合、サーブレットは、イベントまたはクライアントのウェブ・ブラウザ側の何か他の要素に関するより多くの情報を提供することをクライアントのウェブ・ブラウザに要求することができ、クライアントのウェブ・ブラウザにより返された情報に応じてイベントの動的処理を行うことができる。
本発明の別のさらなる実施形態において、サーブレットは復号処理パスと共に用いられる。当初の要求は、処理を開始するのに十分な情報を含んでいる。処理の間、サーブレットは、パラメータ、またはサーバによりバックエンド・システム(データベース等)から取得されたデータに応じて異なる実行パスを取ることができる。もしある時点で、処理がどのように継続すべきかに関する決定がユーザによりなされなければならなければ、サーブレットは、ユーザに決定を促すよう、クライアントのウェブ・ブラウザに要求できる。この決定は、要求を中断することなく、要求のさらなる処理に影響し得る。処理は、単一のトランザクションにおいて走り得る。
本発明のさらなる好ましい実施形態において、セカンダリ・サーブレットがさらに提供される。このセカンダリ・サーブレットは、JavaScriptにより送られた新しいHTTP要求を受信し、鍵値ペアを現在のHTTPセッション・オブジェクト中に格納する。
本発明のさらなる実施形態において、セカンダリ・サーブレットを用いる代わりに、JavaScriptは、HTTPセッションを更新する要求をメイン・サーブレットに送ることができるであろう。しかしながら、この場合、メイン・サーブレットの第2のインスタンスは、(メインの要求への応答を依然生成しており、欠落値を待つ第1のインスタンスと並行して)開始するであろう。
本発明のさらなる実施形態において、HTTPプロトコルは、他の通信プロトコルにより置き換えられ、この通信プロトコルは、情報を前記サーブレット(8)から取得するために前記クライアントのウェブ・ブラウザ(3)による要求を開始する一方向通信パス、ならびに前記要求の成功または失敗を明示する戻り符号を少なくとも含み、もし利用可能であれば、前記要求の結果を含む前記サーブレットによる応答を送ることを特徴とする。
以下では、本発明の好ましい実施形態が、図面のみを参照する例によってさらに詳細に説明される。
図2は、クライアント−サーバ・アーキテクチャにおける本発明の好ましい実施形態を示す。
本発明は、クライアント1およびサーバ2により構成されている。クライアント側1は、好ましくは、標準のクライアントのウェブ・ブラウザ3であり、このウェブ・ブラウザは、HTTP要求をウェブ・サーバに送り、サーバにより返されたHTML文書を表示することができる。クライアントのウェブ・ブラウザ3は、表示する文書13に埋め込まれたJavaScript12を実行できるべきである。さらに、クライアントのウェブ・ブラウザ3は、文書3全体が伝送される前に、サーバにより返された文書13のパーツに埋め込まれたJavaScript12を表示および実行できるべきである。これは、市場で入手可能なすべての実際のクライアントのウェブ・ブラウザ3の標準挙動である。
代わりに、サーバにより返され、クライアントのウェブ・ブラウザ3において表示される文書13の型式は、必ずしもHTML文書13である必要はない。クライアントのウェブ・ブラウザ3により表示できかつ描画(rendering)の間にウェブ・ブラウザ3により解釈されるスクリプト要素を含み得るすべての文書タイプを用いることができる。用いられる文書の例:XML、XHTML、SVG(スケーラブル・なベクトル・グラフィックス)、XUL(XMLユーザ・インタフェース言語)等、(特に、すべての種類のXML文書)。文書に埋め込まれるスクリプト12は、JavaScript以外の言語で書かれ得るであろう。クライアントのウェブ・ブラウザ3におけるJavaScript12(または、その標準化バージョンECMAスクリプト)のサポートは標準である。しかしながら、ウェブ・ブラウザ3により描画されるために文書13に埋め込まれることができ、文書13中の他の要素に関する情報、またはクライアントのウェブ・ブラウザ3もしくはユーザ環境に関する情報を取得するためにクライアントのウェブ・ブラウザ3内で実行できるどのような種類のスクリプトも用いることができる。例としては、Visual Basicスクリプト、ActiveXコンポーネント、Javaアプレット、またはネイティブのクライアントのウェブ・ブラウザ3プラグインであろう。HTTPプロトコルは、他の通信プロトコルにより置き換えられ、この通信プロトコルは、情報を前記サーブレット8から取得するために前記クライアントのウェブ・ブラウザ3による要求を開始する一方向通信パス、ならびに前記要求の成功または失敗を明示する戻り符号を少なくとも含み、もし利用可能であれば、前記要求の結果を含むサーブレット8による応答を送ることを特徴とする。
サーバ側2は好ましくは、サーブレット・コンテナ6を好ましくは有するアプリケーション・サーバ4(例えば、WebSphere(R)またはTomcat(R)のようなJ2EEサーバ)である。2つのサーブレット、すなわちメイン・サーブレット8およびセカンダリ・サーブレット10が、本発明の好ましい実施形態においてこのアプリケーション・サーバ4にインストールされている。
アプリケーション・サーバ4は、J2EEサーバである必要はない。クライアントのウェブ・ブラウザ3から来るHTTP要求に動的に反応できるどのような種類のサーバも、用いることができる。J2EEアプリケーション・サーバの代わりに用い得る技術の例は以下の通りである:Microsoft.NET、または動的なコンテンツを表示するためにCGIスクリプトを実行できる単純なウェブ・サーバ。サーブレット8、10およびサーブレット・コンテナ6は、ASP、PHPまたはCGIスクリプトのような同様な技術によって置き換えることができる。
本発明は、その好ましい実施形態において実装される場合、以下のように機能する(図2の矢印参照):
クライアント側1において、クライアントのウェブ・ブラウザ3は、要求をメイン・サーブレット(1)に送る。メイン・サーブレット8は、文書−応答してクライアントのウェブ・ブラウザ3に送るページ13−を生成するのに必要なロジックを実装するサーブレットである。メイン・サーブレット8は要求を受信し、要求と共に渡された最終のパラメータを読み、文書13の生成を開始してその文書をクライアントのウェブ・ブラウザ3に返す。要求と共に渡されたパラメータは、文書13の生成に影響し得る。本発明は、応答文書13を生成するためにメイン・サーブレット8により用いられるロジック論理に依存しない。
応答生成時のある時点で、メイン・サーブレット8は、要求の中でクライアントのウェブ・ブラウザ3により(パラメータとして)提供されていないが、なかった付加的な情報が必要でが、クライアントのウェブ・ブラウザ3中のクライアント側1でJavaScript12を実行することにより容易に取得できであろう付加的な情報を必要とする。
メイン・サーブレット8は、生成を開始した文書13にJavaScript12を挿入する。このスクリプト12は、クライアントのウェブ・ブラウザ3により実行される場合、欠落情報を取得し、HTTP要求をセカンダリ・サーブレット10に送り、この要求は、パラメータとして、メイン・サーブレット8により生成された鍵(鍵は、無作為に生成されたどのような一意の文字列であってもよい)および前のステップにおいて取得た値を含む。
ひとたびスクリプト12が生成されて、部分的応答に挿入されると、メイン・サーブレット8はそのバッファをフラッシュし、その結果、この時点まで生成された応答文書13の部分が、クライアントのウェブ・ブラウザ(2)に直ちに伝送される。ウェブ・ブラウザ3への通信チャネルは閉じられていない。クライアントのウェブ・ブラウザ3に送られたHTTP応答のヘッダは、HTTP1.1に規定されるように、応答が「Chunked Transfer Coding」を用いることを示す。この符号化は、応答が1つの単一のピースとしてではなく、一連のチャンク(chunk)として来ること、およびサーバが接続を閉じるまで、クライアントのウェブ・ブラウザ3は新しいコンテンツを待つべきであることを意味する。
部分的に生成された文書13(文書の冒頭および欠落情報を取得するJavaScript12を含むチャンク)がひとたびクライアントのウェブ・ブラウザ3に伝送されると、クライアントのウェブ・ブラウザ3は、文書の残りを待ちつつ、これまでに受信された文書13の部分のレンダリングを開始し、埋め込まれたスクリプト12を実行する。
このスクリプト12の実行は、欠落値を取得し、別のHTTP要求をセカンダリ・サーブレット10に送る。この要求は、パラメータとして、前のステップ(3)において取得された鍵および値を含む。
第1のHTTP要求の応答がロードさられている間に付加的なHTTP要求を異なるURLに送る能力は、ウェブ・ブラウザ3にとり通常の挙動である。この能力がなければ、文書全体が完全にロードされる前に、クライアントのウェブ・ブラウザ3は、例えば、ロードされている長い文書の冒頭に含まれている画像を表示できないであろう。
セカンダリ・サーブレット10は、JavaScript12により送られたHTTP要求を受信し、要求のパラメータに含まれている鍵および値を復号し、この鍵値ペアを現在のHTTPセッション・オブジェクト(4)に格納する。HTTPセッションは、1つのクライアント1とサーバ2との間の現在のセッションについての情報を格納するオブジェクトである。サーブレットが要求を受信するたびに、セッション・オブジェクトはサーブレットに渡される。もし同じクライアントのウェブ・ブラウザ3が、HTTP要求を、同じサーブレット・コンテナ6中および同じウェブ・アプリケーション中に含まれるいくつかのサーブレット8に送れば、同じセッション・オブジェクトは異なるサーブレット8に渡される。サーブレット8は、セッション・オブジェクト中の値を読み込みおよび書き込みできる(値は、後に値を取得するすために使用できる鍵の下で格納される)。HTTPセッションを用いることは、異なるサーブレット8間で値を渡すJ2EEの共通した方法である。
セカンダリ・サーブレット10を用いる代わりに、JavaScript12は、HTTPセッションを更新する要求をメイン・サーブレット8送ることができるであろう。しかしながら、この場合、(メインの要求への応答を依然生成しており、欠落値を待っている第1のインスタンスと並行して)メイン・サーブレット8の第2のインスタンスが開始するであろう。メイン・サーブレット8は、要求を受信する場合に、その要求が文書を求めているのか、またはその要求が、文書要求(メイン要求)を扱うサーブレットの他のインスタンスによって要求されていた付加的な情報を提供するのを試験する必要がある。技術的には、これは、要求と共に渡されるパラメータを試験することにより行われるであろう。もし特定のパラメータが要求の中に含まれていれば、メイン・サーブレット8は、要求の他のパラメータ中に含まれる鍵/値ペアによってHTTPセッションを更新するべきであることを知るであろう。何か他の場合においても、メイン・サーブレット8は、応答文書13を生成すべきである。これを行うことにより、メイン・サーブレット8は、要求のパラメータに応じて2つの異なるロジックを有するであろう。これは、各サーブレットが単一のロジックを実装する、2つの異なるサーブレットを有することとまさに同じである。
セカンダリ・サーブレット10は、HTTPセッション中の第2の要求(JavaScriptにより送られた要求)により渡された付加的な値を、メイン・サーブレット8に知られるようにするために格納する必要はない。他の方法は、その値を、(アプリケーション・サーバにより用いられる技術に応じて)サーブレット・コンテナ6のJava Virtual Machine(R)のシステム特性中に格納、または他の共有メモリ機構を用いるであろう。もう1つの可能性は、セカンダリ・サーブレット10に、サーバのローカル・ディスクのファイル中にこの値を格納させ、メイン・サーブレット8にその同じファイルを読ませることである。
要求された値が共有メモリ中でメイン・サーブレット8によってひとたび見出されると(HTTPセッション中に)、メイン・サーブレット8が起動し、文書13の生成を継続する。欠落情報によって、文書は今や完全に生成することができ、文書の残りは、ブラウザ(5)に伝送され−最後のステップの間、メイン・サーブレット8は、値が利用可能かどうかを見るためにHTTPセッションのコンテンツを定期的にチェックしている。メイン・サーブレット8がセッションをチェックする毎に値が利用可能でなければ、メイン・サーブレット8は短時間眠りに就き、再びチェックした。
ひとたびサーブレットが、ウェブ・ブラウザ3との接続を閉じると(これは、サーブレットのdoGet(…)またはdoPost(…)メソッドが戻ると自動的に行われる)、クライアントのウェブ・ブラウザは、文書全体がダウンロードされたことを知る。
サーブレット8は、要求に取りかかるために、クライアントのウェブ・ブラウザから1つより多い付加的な情報を必要とすることがあり得る。複数の欠落情報の取り返しは、本明細書で記載されたステップを、要求の処理の間、数回繰り返すことによって、あるいはすべての欠落情報を取得し1つのHTTP要求の中でセカンダリ・サーブレット10へ送る1つのJavaScript12を生成することによって成し得るであろう。セカンダリ・サーブレット10は、JavaScriptにより送られたセカンダリ要求からいくつかの鍵/値ペアを復号し、それに応じてHTTPセッションを更新しなければならない。
この方法を用いることにより、サーブレットは、クライアントのウェブ・ブラウザ3がその当初の要求を出した後、および要求の処理の間に、クライアントのウェブ・ブラウザ3からの付加的な情報を要求できるであろう。要求の処理は、本発明が無ければ必要とされたであろう、中止および最初からの開始を必要としなかった。
ウェブ・ブラウザ3およびアプリケーション・サーバ4における修正は全く必要とされない。メイン・サーブレット8およびセカンダリ・サーブレット10双方は、別個に通常のサーブレットであり、これらのサーブレットは、HTTPプロトコルにおいて規定されるように、HTTP要求を受信し、1つの単一の応答をその要求の発信者に返す。プロトコルは修正されない。クライアントのウェブ・ブラウザ3とサーバ2と間のすべての通信は、(HTTPプロトコルにより予見されるように)クライアントのウェブ・ブラウザにより駆動される。
2つのサーブレット8、10間の協働、およびサーブレットが、クライアントのウェブ-ブラウザ3を、その応答文書をチャンクしてJavaScriptコマンドをその中に埋め込むことによって遠隔制御できるという事実のみが、サーバとクライアントのウェブ・ブラウザとの間の双方向通信を可能にする。
以下、簡単な例が、本発明がどのように実際的に作動するかを示す(図3参照)。
クライアントのウェブ・ブラウザ3から要求を受信し、その要求を送ったクライアントのウェブ・ブラウザ3のいくつかの特性に依存するやり方でいくらかのコンテンツを生成するメイン・サーブレット8があることが仮定されている。メイン・サーブレット8が、要求を送ったクライアントのウェブ・ブラウザ・ウインドウの幅を知る必要があること、およびこの情報が、メイン・サーブレット8に送られた当初の要求に含まれていなかったことがさらに仮定されている。
クライアントのウェブ・ブラウザ・ウインドウの幅は、JavaScript表現「window.outerWidth」をクライアントのウェブ・ブラウザ3において実行することにより容易に尋ねることができる特性である。
この例についてのメイン・サーブレット8およびセカンダリ・サーブレット10のコード・ソースは、本明細書末尾の付録中にある。セカンダリ・サーブレットがメイン・サーブレットのロジックから独立しており、異なるロジックを実装するいくつかの「メイン」サーブレットにより再利用または共有され得ることに留意されたい。
メイン・サーブレットへの要求がまだ走っている一方で、この第2の要求の結果が、クライアントのウェブ・ブラウザにより表示される現在の文書に取って代わらないことおよび第1の要求を中断しないことに留意しることが重要である。これは、第2の要求の結果を別個のフレームに、またはページの特定の要素(画像、埋め込まれたフレーム)にリダイレクトすることにより、あるいはHTTP要求をプログラム的に開くJavaScript APIを用いることによって達成できる。
セカンダリ・サーブレット10は、そのパラメータ中に鍵/値ペアをセッション(または第1のサーブレットと共有されたメモリ)中に格納すべき情報と共に含む要求を受信する。次にセカンダリ・サーブレット10は、ウェブ・ブラウザ3に成功コードを返す。ウェブ・ブラウザ3は、セカンダリ・サーブレット10の応答を無視できる。
メイン・サーブレット8は、セッション(共有メモリ)中で、メイン・サーブレット8が生成した鍵のために値が格納されたことを検出する。メイン・サーブレット8は、この値(要求を処理するために欠落していた情報)を抽出し、その値をセッション/共有メモリから取り去り、要求の処理を再開する。
処理が継続し、応答文書の残りが生成される。後に要求の処理の間にいっそう多くの情報が欠落していることが明らかになれば、ユーザにより多くの情報を連続的に要求するために最後のステップを繰り返すことができる。
最後に、要求は完結され、クライアントのウェブ・ブラウザ3は、完全な応答文書を受信して表示する。
図3は、本発明によるこの例におけるクライアントのウェブ・ブラウザと2つのサーブレットとの間で行われるアクティビティおよび通信を説明している。
(1) クライアントのウェブ・ブラウザは、HTTP GETコマンド(代案:POSTコマンドも用い得るであろう)を送ることにより当初の要求をメイン・サーブレット8に送って、メイン・サーブレット8にURLを要求する。この要求は、応答文書の生成の間にメイン・サーブレット8により用いられ得る付加的なパラメータも含み得るであろう。この例では、パラメータが皆無である。
(2) メイン・サーブレット8は、欠落情報(クライアントのウェブ・ブラウザの幅)を必要とするまで、文書の冒頭を書くことにより応答文書の生成を開始する。
<html>
<head>
</head>
<body>
欠落情報が要求される間にサーブレットにより作成されたコンテンツ<p>。
この時点で、文書の残りを書くために、メイン・サーブレット8は、欠落情報を必要とする。メイン・サーブレット8は一意の鍵を生成し、この鍵は、クライアントのウェブ・ブラウザがこの鍵をセカンダリ・サーブレット10に送った後、HTTPセッション中で欠落値を格納および見出すために用いられ、メイン・サーブレット8は、これまでに生成されたコンテンツにJavaScriptを追加し、このJavaScriptは、クライアントのウェブ・ブラウザによって実行された時に、値を取得し、その値を鍵と共にセカンダリ・サーブレット10に送る。
ここで、この例においてスクリプトがどのように見えるかを説明する:
ライン2がウェブ・ブラウザ3の幅を取得し、以下のラインは、ウェブ・ブラウザ3にセカンダリ・サーブレット10へのHTTP要求を開かせ、パラメータとして鍵(ここでは、鍵の無作為値はkey_112108である)および取得された値(ここで、変数”value”に含まえる)を渡す。
<scriptlanguage="JavaScript">
var value = window.outerWidth;
var httpReq = new XMLHttpRequest();
httpReq.open("GET","SecondaryServlet?key=key_112108&value="+value,true);
httpReq.send(null);
</script>
(3) 部分的文書(これまでに生成されたコンテンツおよび欠落値を取得したスクリプト)は、メイン・サーブレット8のバッファをフラッシュすることにより、クライアントのウェブ・ブラウザ3に送られる。これを行う時には、アプリケーション・サーバは、HTTP応答の符号化を「チャンク(chunked)」に変更し、これは、クライアントのウェブ・ブラウザ3に、コンテンツがいくつかのチャンクされた断片で転送さえることを示す。図2は、この時点でクライアントのウェブ・ブラウザに転送された文書のコンテンツを示す。
(4) メイン・サーブレット8は、ステップ(2)においてそれが生成した鍵の下で格納された値をHTTPセッション中で見出すまでその実行を一時停止する。技術的には、メイン・サーブレット8は、その実行を一時停止し、値が利用可能であるかどうかを規則的な間隔でチェックする。ひとたび値が見出されると、メイン・サーブレット8は、その実行を再開する。
(5) その間、クライアントのウェブ・ブラウザ3は、メイン・サーブレット8により送られた文書の第1のチャンクを受け取っている。クライアントのウェブ・ブラウザ3は、これまでの文書に含まれている表示可能なコンテンツを表示し、それに埋め込まれたJavaScriptを実行する。JavaScriptが文書のコンテンツに全く影響しないことに留意されたい。
(6) JavaScriptを実行する時に、クライアントのウェブ・ブラウザ3はそのウインドウの幅(ここでは454画素)を取得し、HTTP GET要求をセカンダリ・サーブレット10に送る。(代わりに、POST要求も用いられ得る)。この要求は、パラメータとして、前に生成された鍵(key_112108)および取得された値(454)を含んでいる。
GET SecondaryServlet?key=key_112108&value=454
(7) セカンダリ・サーブレット10は、この要求を受信し、鍵および値をそのパラメータから復号し、HTTPセッション中で、値(454)を鍵(key_112108)の下に置く。次に、セカンダリ・サーブレット10は、成功コード(HTTPコード200)を直ちに返す(8)。
(8) 鍵“key_112108”の下に格納された値について規則的間隔でHTTPセッションをチェックしたメイン・サーブレット8は、この値を見出す。メイン・サーブレット8は、この値をセッションから取り去り、取得した値を用いて文書の生成を再開する。(この例では、値はテキスト中に単純に書き込まれる。より複雑な例では、値は、文書のより複雑なレイアウトを行うために用い得るであろう。)
クライアントのウェブ・ブラウザ3に送られた文書の第2のチャンク部分が:
ページの生成を終了する:Width=454
</body>
</html>
(9) 文書の第2のチャンク部分は、クライアントのウェブ・ブラウザに送られ、メイン・サーブレット8は、クライアントのウェブ・ブラウザ3との通信チャネルを閉じ、もはやコンテンツが追従しないことを示す。
(10) クライアントのウェブ・ブラウザ3は、文書の残りを表示する。
より詳細な実行図については、図1を参照されたい。
この例の完全なソース・コードについては、本明細書の末尾の付録を参照されたい。
本発明の双方向通信パスを示す。 本発明の双方向通信パスの好ましい実施形態を実装したクライアント−サーバ・アーキテクチャを示す。 所与の例におけるクライアントのウェブ・ブラウザ、メイン・サーブレットおよびセカンダリ・サーブレット間の通信ステップを説明するシーケンス図を示す。 付録:ソース1:メイン・サーブレットimport java.io.*;import javax.Servlet.*;import javax.Servlet.http.*;public class MainServlet extendsHttpServlet implements Servlet {/*** 要求された鍵/値ペアをHTTPセッション中に格納するセカンダリ・サーブレットのURL*/private final static StringSECONDARY_SERVLET_URL = "SecondaryServlet";/** @seejavax.Servlet.http.HttpServlet#void(javax.Servlet.http.HttpServletRequest,javax.Servlet.http.HttpServletResponse)*/public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException, lOException {resp.setContentType("text/html; charset=ISO-8859-4");HttpSession session = req.getSession();PrintWriter out = resp.getWriter();out.println("<html>");out.println("<head>");out.println("</head>");out.println ("<body>");// 応答の生成を開始out.println("欠落情報が要求される間にサーブレットにより作成されたコンテンツ<p>");// (…)// 応答の処理中のある時点で、サーブレットは、ある情報が欠落していることに気付き、応答の生成を一次停止する。//欠落値を取得しそれをセカンダリ・サーブレットを介してサーバに送るようクライアントのウェブ・ブラウザに求める//第3のパラメータは、ブラウザ中で実行された時に値を取得するJavaScript表現である//この例では、クライアントのウェブ・ブラウザにブラウザ・ウインドウの幅を尋ねるObject value =requestValue(req,resp,"window.outerWidth;");//このメソッドが戻ると、ローカル変数"value"は、要求された値を含む//応答の生成を続ける// (...)out.println("Finish the generation of the page: Width=" +value);out.println("</body>");out.println("</html>");}/*** 欠落値をウェブ・セッション中に格納するために用い得る一意の鍵を生成する*/private String generateKey() {return "key_" +System.currentTimeMillis();}//**** クライアントのウェブ・ブラウザに、欠落値をサーブレットに提供するよう要請する。* このメソッドは、クライアントのウェブ・ブラウザにより解釈されるJavaScriptを生成し伝送するこのJavaScriptは、パラメータとして与えられたJavaScript表現を実行することにより欠落値を取得し、要求をセカンダリ・サーブレットに送り、このセカンダリ・サーブレットは、欠落値をHTTPセッション中に格納し、その結果、その値にメイン・サーブレットがアクセスできる。* このメソッドは、クライアントのウェブ・ブラウザにより欠落値が返されるまで、メイン・サーブレットをブロックおよび一時停止することに留意されたい。** @param res クライアントのウェブ・ブラウザによりこのメイン・サーブレットに返されたメインHTTP応答* @param resp 要求に応答するためにこのサーブレットにより用いられたHTTP応答* @param JavaScriptExpression クライアントのウェブ・ブラウザにおいて実行された時に、このサーブレットが必要とする欠落情報を返すJavaScript表現* @return クライアントのウェブ・ブラウザにより返された欠落値*/private Object requestValue (HttpServletRequest req,HttpServletResponse resp,String JavaScriptExpression)throws IOException {PrintWriter out = resp.getWnter();HttpSession session = req. getSession();//欠落値を絵現在のHTTPセッション中に格納/取得するために用い得る一意の鍵を生成するString key = generateKey();// クライアントのウェブ・ブラウザから情報を取得するJavaScriptの生成を開始するout.println(" <scriptlanguage=\"JavaScript\">");// この例では、クライアントのウェブ・ブラウザは、欠落値を入力するようユーザに促すout.println("var value = " +JavaScriptExpression + ";");// ひとたび値が取得されJavaScript変数としてクライアント側で格納されると、この値をセカンダリ・サーブレットを介してサーバに伝送する// クライアントのウェブ・ブラウザにセカンダリ・サーブレットへのHTTP要求を開かせ、欠落情報の鍵および値を渡すout.println("var httpReq = newXMLHttpRequest();");out.println("httpReq.open (\"GET\",\""+ SECONDARY_SERVLET_URL+ "?key="+ key+ "&value=\"+value,true);");out.println("httpReq.send(null);");out.pnntln("</sc[pi]pt>");//欠落値を取得するJavaScriptが伝送され、クライアントのウェブ・ブラウザにより直ちに実行されるように、サーブレットのバッファをフラッシュする。resp.flushBuffer();// 前に定義された鍵の下でHTTPセッション中の値が見出されるまで、メイン・サーブレットの実行を一時停止するObject value = session.getAttribute(key);while (value == null) {try { Thread.sleep(100);} catch (InterruptedException e) { e.printStackTrace();}value = session.getAttribute(key);}// 今や値は抽出され、メモリ・リークを回避しその同じ鍵が数度にわたり再履よできるように、その鍵/値ペアをセッションから取り去るsession.removeAttribute(key);return value;}}ソース2:セカンダリ・サーブレットimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;/*** セカンダリ・サーブレットは、HTTPセッションを鍵/値ペアで更新する。* 格納すべき鍵/値ペアは、到来する要求中で、鍵”key”および”value”の下で含まれる。* 例えば、パラメータ"mySecondaryServletURL?key=myKey&value=myValue"を含む要求は、値"myValue"を、鍵"myKey"の下でHTTPセッション中に格納する。*/public class SecondaryServlet extendsHttpServlet implements Servlet {/*** @see javax. servlet.http.HttpServlet#void(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)*/public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException, IOException {// ブラウザから到来する要求から、HTTPセッション中に格納すべき鍵/値ペアを抽出するString key = req.getParameter("key");String value = req.getParameter("value");if (key ! = null) { // この鍵/値ペアをHTTPセッション中に格納する req.getSession().setAttribute(key,value); }}]

Claims (13)

  1. クライアント−サーブレット通信の方法であって、前記サーブレットを実装するサーバが、
    前記クライアントのウェブ・ブラウザにより送られた当初の要求に含まれない欠落している情報を、第1のサーブレットにより識別するステップであって、前記当初の要求は当該要求に対する所望の情報を前記サーバから取得することを要求し、及び前記欠落している情報は前記サーバ上で前記当初の要求を扱うために必要なパラメータであるが欠落してしまった情報である、前記識別するステップと、
    前記欠落している情報を第1のサーブレットにより識別した場合において、前記クライアントのウェブ・ブラウザにより送られた当初の要求を運ぶ第1の通信パスとは別の第2の通信パスを前記ウェブ・ブラウザ要求を発行したクライアントのウェブ・ブラウザと前記第1のサーブレットとの間で開くステップであって、前記第2の通信パスは、前記クライアントのウェブ・ブラウザにより送られた新しい要求を第2のサーブレットに運ぶ通信パスである、前記開くステップと、
    スクリプトを前記第1のサーブレットにより生成するステップであって、前記スクリプトは前記クライアントのウェブ・ブラウザ上で実行される場合に、前記欠落している情報を取得しかつ第2のサーブレットを呼び出す、前記生成するステップと、
    前記生成されたスクリプトを、前記当初の要求に対する部分的応答に追加するステップであって、当該部分的応答は、前記所望の情報のうち、前記当初の要求を処理して得られる一部の情報を含む、前記追加するステップと、
    前記スクリプトが追加された前記部分的応答を前記クライアントのウェブ・ブラウザに送るステップであって、前記一部の情報は前記クライアントのウェブ・ブラウザ上で表示され、及び前記欠落していたが当該クライアントにより補われた情報が前記クライアントのウェブ・ブラウザ上で実行される前記スクリプトにより作成された新たな要求中に含まれる、前記送るステップと、
    前記欠落している情報が入手可能になるまで前記第1のサーブレットによる前記当初の要求の処理の実行を一時停止するステップと、
    前記補われた情報を前記第2のサーブレットで受信するステップと、
    前記第2のサーブレットで受信した前記補われた情報を前記第1のサーブレットに提供するステップと、
    前記提供された前記補われた情報を用いて前記第1のサーブレットによる前記当初の要求の処理の実行を継続し、当該継続した結果として得られる情報を含む応答を前記クライアントのウェブ・ブラウザに提供するステップであって、前記継続した結果として得られる情報は前記一部の情報とともに前記クライアントのウェブ・ブラウザ上でさらに表示される、前記提供するステップと
    を実行することを含む、前記方法。
  2. クライアント−サーブレット通信の前記方法が既存の通信プロトコルおよびクライアントを変更することなく前記クライアント−サーブレット通信を改善する方法であり、
    前記通信プロトコルは、(1)情報を第1のサーブレットから取得するためにクライアントによる要求を開始する通信パスによって、及び(2)前記要求の成功または失敗を示す戻り符号を少なくとも含み且つ入手可能である場合に前記要求により要求された情報を含む応答を、前記第1のサーブレットにより送ることによって特徴付けられており、
    前記サーバが、
    前記補われた情報を受信することに応じて前記成功を示す戻り符号を前記クライアントの前記ウェブ・ブラウザに、前記第2のサーブレットにより返すステップを実行することをさらに含む、
    請求項に記載の方法。
  3. 前記当初の要求及び前記新たな要求がHTTP要求であり、前記スクリプトにより作成された新たな要求がHTTP要求であり、当該HTTP要求を前記第2のサーブレットにより受信し、前記第1及び前記第2のサーブレットにより用いられる共有メモリ中に前記補われた情報を格納する、請求項1又は2に記載の方法。
  4. 前記補われた情報が、前記クライアントと前記サーバとの間の現在のHTTPセッション・オブジェク中に前記2のサーブレットにより格納され、前記第1のサーブレットに渡される、請求項1〜のいずれか一項に記載の方法。
  5. 前記第2のサーブレットが前記第1のサーブレットの一部として実装されており、前記新しいHTTP要求の受信が前記第2のサーブレットの代わりに前記第1のサーブレットにより受信することに応じて、前記第1のサーブレットの第2のインスタンスを自動的に開始し、前記補われた情報によって現在のHTTPセッション・オブジェクトを更新する、請求項1〜のいずれか一項に記載の方法。
  6. 前記ウェブ・ブラウザによる前記スクリプトの実行が、前記欠落している情報を自動的に取得または付加的なユーザ入力により前記欠落情報を取得する、請求項1〜のいずれか一項に記載の方法。
  7. 前記第1及び前記第2のサーブレットが、Java(登録商標)サーブレットとして実装される、請求項1〜のいずれか一項に記載の方法。
  8. 前記スクリプトが、Java(登録商標)スクリプトとして実装される、請求項1〜のいずれか一項に記載の方法。
  9. 前記スクリプトが、前記欠落している情報に関連付けられた値を前記第1のサーブレットにより生成された割り当てられた鍵と共に含む、請求項1〜のいずれか一項に記載の方法。
  10. 請求項1〜のいずれか一項に記載の方法の各ステップをサーバに実行させるコンピュータ・プログラム。
  11. 少なくとも1つのサーブレットを実装するクライアント−サーバ・アーキテクチャにおけるサーバであって、
    前記クライアントのウェブ・ブラウザにより送られた当初の要求に含まれない欠落している情報を、第1のサーブレットにより識別する手段であって、前記当初の要求は当該要求に対する所望の情報を前記サーバから取得することを要求し、及び前記欠落している情報は前記サーバ上で前記当初の要求を扱うために必要なパラメータであるが欠落してしまった情報である、前記識別する手段と、
    前記欠落している情報を第1のサーブレットにより識別した場合において、前記クライアントのウェブ・ブラウザにより送られた当初の要求を運ぶ第1の通信パスとは別の第2の通信パスを前記ウェブ・ブラウザ要求を発行したクライアントのウェブ・ブラウザと前記第1のサーブレットとの間で開く手段であって、前記第2の通信パスは、前記クライアントのウェブ・ブラウザにより送られた新しい要求を第2のサーブレットに運ぶ通信パスである、前記開く手段を実行する手段と、
    前記識別する手段が欠落情報を識別した場合、スクリプトを前記第1のサーブレットにより生成する手段であって、前記スクリプトは前記クライアントのウェブ・ブラウザ上で実行される場合に、前記欠落している情報を取得しかつ第2のサーブレットを呼び出す、前記生成する手段と、
    前記生成されたスクリプトを、前記当初の要求に対する部分的応答に追加する手段であって、当該部分的応答は、前記所望の情報のうち、前記当初の要求を処理して得られる一部の情報を含む、前記追加する手段と、
    前記スクリプトが追加された前記部分的応答を前記クライアントのウェブ・ブラウザに送る手段であって、前記一部の情報は前記クライアントのウェブ・ブラウザ上で表示され、及び前記欠落していたが当該クライアントにより補われた情報が前記クライアントのウェブ・ブラウザ上で実行される前記スクリプトにより作成された新たな要求中に含まれる、前記送る手段と、
    前記欠落している情報が入手可能になるまで前記第1のサーブレットによる前記当初の要求の処理の実行を一時停止する手段と、
    前記補われた情報を前記第2のサーブレットで受信する手段と、
    前記第2のサーブレットで受信した前記補われた情報を前記第1のサーブレットに提供する手段と、
    前記提供された前記補われた情報を用いて前記第1のサーブレットによる前記当初の要求の処理の実行を継続し、当該継続した結果として得られる情報を含む応答を前記クライアントのウェブ・ブラウザに提供する手段であって、前記継続した結果として得られる情報は前記一部の情報とともに前記クライアントのウェブ・ブラウザ上でさらに表示される、前記提供する手段と
    を備えている、前記サーバ。
  12. 前記クライアント−サーバ・アーキテクチャが通信プロトコルを用い、前記通信プロトコルは、(1)情報を第1のサーブレットから取得するためにクライアントによる要求を開始する通信パスによって、及び(2)前記要求の成功または失敗を示す戻り符号を少なくとも含み且つ入手可能である場合に前記要求により要求された情報を含む応答を、前記第1のサーブレットにより送ることによって特徴付けられており、
    前記サーバが、
    前記補われた情報を受信することに応じて前記成功を示す戻り符号を前記クライアントの前記ウェブ・ブラウザに、前記第2のサーブレットにより返す手段を備えている、請求項11に記載のサーバ。
  13. 前記当初の要求及び前記新たな要求がHTTP要求であり、前記スクリプトにより作成された新たな要求がHTTP要求であり、当該HTTP要求を前記第2のサーブレットにより受信し、前記第1及び前記第2のサーブレットにより用いられる共有メモリ中に前記補われた情報を格納する、請求項11又は12に記載のサーバ。
JP2008529574A 2005-09-08 2006-07-26 クライアント−サーブレット通信を改善するための方法およびシステム Active JP4640682B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP05108239 2005-09-08
PCT/EP2006/064658 WO2007028670A1 (en) 2005-09-08 2006-07-26 Method and system for improving client-servlet communication

Publications (3)

Publication Number Publication Date
JP2009508197A JP2009508197A (ja) 2009-02-26
JP2009508197A5 JP2009508197A5 (ja) 2009-04-09
JP4640682B2 true JP4640682B2 (ja) 2011-03-02

Family

ID=35610123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008529574A Active JP4640682B2 (ja) 2005-09-08 2006-07-26 クライアント−サーブレット通信を改善するための方法およびシステム

Country Status (8)

Country Link
US (2) US8566390B2 (ja)
EP (1) EP1922655B1 (ja)
JP (1) JP4640682B2 (ja)
KR (1) KR100962893B1 (ja)
CN (1) CN101258494B (ja)
AT (1) ATE426856T1 (ja)
DE (1) DE602006005943D1 (ja)
WO (1) WO2007028670A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080228715A1 (en) * 2007-03-12 2008-09-18 Terabyte Media, Llc Apparatus and method for distributed information retrieval and processing
US8079025B2 (en) * 2007-06-08 2011-12-13 Apple Inc. Asynchronous load of source dependencies
US8127038B2 (en) 2008-03-11 2012-02-28 International Business Machines Corporation Embedded distributed computing solutions
KR101383573B1 (ko) * 2008-08-01 2014-04-09 삼성전자주식회사 화상형성장치 및 그의 웹 정보 제공방법
CN101686245B (zh) * 2008-09-28 2014-06-11 国际商业机器公司 用于隔离超文本传输协议会话的方法和系统
US8949408B2 (en) * 2009-12-18 2015-02-03 Microsoft Corporation Session monitoring of virtual desktops in a virtual machine farm
US8995266B2 (en) 2010-07-07 2015-03-31 Cisco Technology, Inc. Performing path-oriented systems management
US8838781B2 (en) 2010-07-15 2014-09-16 Cisco Technology, Inc. Continuous autonomous monitoring of systems along a path
US8555083B1 (en) * 2010-07-22 2013-10-08 Symantec Corporation Systems and methods for protecting against unauthorized access of encrypted data during power-management modes
EP2533161A1 (en) * 2010-11-29 2012-12-12 Hughes Network Systems, LLC Computer networking system and method with javascript injection for web page response time determination
US20120197971A1 (en) * 2011-02-01 2012-08-02 Shiarng Llc Enhanced web-browsing system and method
US9021109B1 (en) * 2012-01-23 2015-04-28 Amazon Technologies, Inc. Controlling requests through message headers
US9525754B1 (en) * 2012-09-28 2016-12-20 EMC IP Holding Company LLC Task-based approach to execution, monitoring and execution control of actions
US9292373B2 (en) 2013-03-15 2016-03-22 International Business Machines Corporation Query rewrites for data-intensive applications in presence of run-time errors
US9537350B2 (en) 2013-03-15 2017-01-03 Regal Beloit America, Inc. Switch-mode power supply with a dual primary transformer
US10103961B2 (en) * 2014-07-25 2018-10-16 Teacher Insurance & Annuity Association of America Collecting client-side application performance monitoring information
US10778744B2 (en) * 2015-08-13 2020-09-15 Molbase (Shanghai) Biotechnology Co., Ltd. Configurable caching system and method thereof
US10462145B2 (en) * 2016-07-15 2019-10-29 The Directv Group, Inc. Method and apparatus for controlling access to custom browser functionality
CN109951567A (zh) * 2019-04-02 2019-06-28 山东浪潮云信息技术有限公司 一种双数据中心应用部署方法
CN114629885B (zh) * 2021-01-05 2024-12-03 亚信科技(中国)有限公司 一种业务请求的处理方法、装置、电子设备及存储介质
US12106013B2 (en) * 2021-09-30 2024-10-01 Intuit Inc. Conversational user interfaces based on knowledge graphs

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6012098A (en) * 1998-02-23 2000-01-04 International Business Machines Corp. Servlet pairing for isolation of the retrieval and rendering of data
GB9924259D0 (en) 1999-10-13 1999-12-15 Duncan Graham L Interactive service system
JP2002116983A (ja) * 2000-10-02 2002-04-19 Hewlett Packard Co <Hp> ウェブコンテンツの変換方法およびシステム
US20020133567A1 (en) 2001-01-12 2002-09-19 Te George A. Method and system for generalized common gateway interface processing
US20030145048A1 (en) 2002-01-18 2003-07-31 Bea Systems, Inc. System and method for HTTP request preprocessing for servlets and application servers
AU2002330478A1 (en) * 2002-09-03 2004-03-29 Fujitsu Limited Search system, search server, client, search method, program, and recording medium
US7426535B2 (en) * 2002-10-08 2008-09-16 Telecommunication Systems, Inc. Coordination of data received from one or more sources over one or more channels into a single context
US20040168122A1 (en) * 2003-02-21 2004-08-26 Kobipalayam Murugaiyan Senthil Nathan System, method and computer readable medium for transferring and rendering a web page
CN1619559A (zh) * 2003-11-18 2005-05-25 华为技术有限公司 一种提供客户服务的方法及其系统
JP4532885B2 (ja) 2003-12-01 2010-08-25 キヤノン株式会社 サーバコンピュータ及び、サーバコンピュータによりページデータを通信端末へネットワークを介して提供する方法

Also Published As

Publication number Publication date
US8566390B2 (en) 2013-10-22
CN101258494A (zh) 2008-09-03
CN101258494B (zh) 2010-10-27
EP1922655A1 (en) 2008-05-21
US20090125579A1 (en) 2009-05-14
US20090164613A1 (en) 2009-06-25
ATE426856T1 (de) 2009-04-15
EP1922655B1 (en) 2009-03-25
JP2009508197A (ja) 2009-02-26
DE602006005943D1 (de) 2009-05-07
WO2007028670A1 (en) 2007-03-15
KR100962893B1 (ko) 2010-06-09
KR20080041634A (ko) 2008-05-13

Similar Documents

Publication Publication Date Title
JP4640682B2 (ja) クライアント−サーブレット通信を改善するための方法およびシステム
US7051084B1 (en) Methods and apparatus for regenerating and transmitting a partial page
US8161472B2 (en) Methods and apparatus for incorporating a partial page on a client
US8924943B2 (en) Browser emulator system
US10630671B2 (en) Dynamic web services server
US8606852B2 (en) Server side processing of user interactions with a web browser
US20100082747A1 (en) Real-time collaborative browsing
US20120272131A1 (en) Handling unexpected responses to script executing in client-side application
CN103577187A (zh) 一种实现网页截图的方法及相关设备
Nichols et al. Highlight: a system for creating and deploying mobile web applications
US20110264729A1 (en) Augmentation of network traffic
CN103874998B (zh) 生成预测数据结构
US20060075069A1 (en) Method and system to provide message communication between different application clients running on a desktop
JP2006195979A (ja) ウェブアプリケーションアーキテクチャ
US11115462B2 (en) Distributed system
JP2009294851A (ja) Webページ編集サーバ、Webページ編集システム及びWebページの編集方法
WO2002063504A2 (en) Methods and apparatus for augmenting page generation code to effect partial page regeneration
JP4906870B2 (ja) サーバ・サイド動的ページの実行のための方法、システム、およびコンピュータ・プログラム
US10834167B1 (en) Client side navigation compositor
CN118916101B (zh) 插件处理方法、装置、电子设备及计算机程序产品
JP2007079988A (ja) Wwwブラウザ、htmlページ共有システムおよびhtmlページ共有方法
US8533291B1 (en) Method and system for protecting publicly viewable web client reference to server resources and business logic
Chen-Becker et al. Advanced Lift Architecture
Lechner A JavaScript API for an eXtensible Virtual Shared Memory (XVSM)
AU2006291366A1 (en) Server-side service framework

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090129

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090326

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100907

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100907

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20100907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101021

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20101021

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20101116

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20101116

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101119

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4640682

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131210

Year of fee payment: 3