JP2001522113A - 分散ウェブアプリケーションサーバ - Google Patents

分散ウェブアプリケーションサーバ

Info

Publication number
JP2001522113A
JP2001522113A JP2000519523A JP2000519523A JP2001522113A JP 2001522113 A JP2001522113 A JP 2001522113A JP 2000519523 A JP2000519523 A JP 2000519523A JP 2000519523 A JP2000519523 A JP 2000519523A JP 2001522113 A JP2001522113 A JP 2001522113A
Authority
JP
Japan
Prior art keywords
instance
dispatcher
cartridge
message
resource manager
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.)
Granted
Application number
JP2000519523A
Other languages
English (en)
Other versions
JP3853592B2 (ja
Inventor
チョウ,ツン−ジェン
アドゥヌトゥラ,セシュ
アナンド,マラ
シャルマ,アンクール
チェン,エレイン
ナコダ,シェザード
Original Assignee
オラクル・コーポレーション
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 オラクル・コーポレーション filed Critical オラクル・コーポレーション
Publication of JP2001522113A publication Critical patent/JP2001522113A/ja
Application granted granted Critical
Publication of JP3853592B2 publication Critical patent/JP3853592B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

(57)【要約】 ブラウザ(202、204、206)リクエストと関連するオペレーションを行なうためのシステム、方法およびコンピュータ可読媒体を提供する。システムは複数のウェブリスナ(210、216、222)に結合される複数のディスパッチャ(214、220、226)を含む。各ディスパッチャ(214、220、226)は、対応するウェブリスナ(210、216、222)が受取ったブラウザリクエストを対応するウェブリスナ(210、216、222)から受取る。システムはさらに、仮想パスマネージャ(250)およびリソースマネージャ(254)を含む。仮想パスマネージャ(250)はマシン間通信(282)機構を介してディスパッチャ(214、220、226)に結合される。仮想パスマネージャ(250)は、どのカートリッジ(260)がブラウザリクエストに関連付けられているのかをディスパッチャ(214、220226)に示す。リソースマネージャ(254)はマシン間通信(282)機構を介してディスパッチャ(214、220、226)に結合される。リソースマネージャ(254)は、ディスパッチャ(214、220、226)からあるインスタンスに対するリクエストを受取ったことに応答して、あるカートリッジ(260)のインスタンスを各ディスパッチャ(214、220、226)に割当てるよう構成される。ディスパッチャ(214、220、226)は、リソースマネージャ(254)によってディスパッチャ(214、220、226)に割当てられたインスタンスにマシン間通信(282)機構を介してメッセージを送るよう構成される。そのメッセージにより、インスタンスがブラウザリクエストに関連するオペレーションを行なうことになる。

Description

【発明の詳細な説明】
【0001】
【発明の分野】
この発明はネットワーク接続されたコンピュータシステムにおけるサーバアー
キテクチャに関し、より特定的には、種々のマシンを通じたユーザリクエストに
対する動的処理を可能にするための分散アーキテクチャに関する。
【0002】
【発明の背景】
ワールド・ワイド・ウェブ(World Wide Web)はインターネット(Internet)
上のサーバのネットワークを含み、その各々は1つ以上のHTML(Hypertext
Markup Language:ハイパテキスト・マークアップ言語)ページに関連付けられ ている。サーバに関連付けられているHTMLページは、情報と、そのサーバお
よび(通常は)他のサーバ上の他の文書へのハイパテキストリンクとを提供する
。サーバはハイパテキスト・トランスファー・プロトコル(HTTP:Hypertex
t Transfer Protocol)を用いてクライアントと通信する。サーバはクライアン トからのHTMLページに関するリクエストを聞くことから、多くの場合、「リ
スナ」と称される。
【0003】 ワールド・ワイド・ウェブのユーザはブラウザと呼ばれるクライアントプログ
ラムを用いてリスナから情報をリクエストし、デコードし、表示する。ブラウザ
のユーザがあるHTMLページ上のリンクを選択すると、そのページを表示して
いるブラウザはそのリンク内で特定されるユニバーサル・リソース・ロケータ(
URL:Universal Resource Locator)と関連付けられるリスナにインターネッ
トを通じてリクエストを送る。そのリクエストに応答して、リスナはそのリクエ
ストを発行したブラウザにリクエストされた情報を送信する。ブラウザは情報を
受取り、受取った情報をユーザに示し、次のユーザリクエストを待つ。
【0004】 従来、リスナに蔵置される情報は静的HTMLページの形態である。静的HT
MLページは、ウェブブラウザからのリクエストに先立ち作成されリスナに蔵置
される。リクエストに応答して、静的HTMLページが単に記憶から読出され、
リクエストを行なっているブラウザに送信される。現在、ブラウザリクエストに
応答して動的オペレーションを行なうリスナを開発しようとする趨勢にある。た
とえば、リスナはリクエストに応答する際にデータベースにクエリーを発行し、
そのクエリーの結果を含むウェブページを動的に構成し、動的に構成されたHT
MLページをリクエストを行なっているブラウザに送信してもよい。動的オペレ
ーションを行なうために、リスナの機能性を向上または増強させなければならな
い。動的オペレーションをサポートするようリスナを拡張するためにさまざまな
アプローチが開発されてきた。
【0005】 ウェブブラウザからのリクエストに応答して動的オペレーションをもたらす1
つのアプローチでは共通ゲートウェイ・インターフェイス(CGI)を用いる。
CGIはリスナとCGIプログラムとの間で情報を転送するための仕様である。
CGIプログラムはCGI仕様に従った、データを受け、かつ返すよう設計され
るプログラムであればどのようなものであってもよい。そのプログラムはC、Pe
rlまたはVisual Basicを含むどんなプログラム言語で書かれたものであってもよ
い。
【0006】 CGIのアプローチでは、サーバが特定されたリクエストを受取るたびに別個
のプロセス(CGIプログラムの別個のインスタンス)がイニシエートされると
いう不利な点がある。さらに、CGIプログラムはブラウザリクエストを受取っ
たリスナと同じマシン上で実行される。したがって、千ものこうしたリクエスト
を異なったユーザから受信すると、リスナを実行しているマシンで千ものプロセ
スがイニシエートされることとなり、サーバ上の使用可能なリソースを使い果た
すこととなる。
【0007】 CGIアプローチの第2の不利な点は、各リクエストに対して別個のプロセス
がイニシエートされ実行され終了されることである。すなわち、第1の組の10
のリクエストの後に第2の組の10のリクエストが続く場合、その第1の組のリ
クエストに対して第1の組の10のプロセスがイニシエートされ終了され、その
第2の組のリクエストに対して第2の組の10のプロセスがイニシエートされ終
了されることとなる。CGIではプロセスのイニシエートに関連するオーバーヘ
ッドを避けるため、第1の10のリクエストに対して用いられた10のプロセス
と同じものを第2の10のリクエストを処理するのに用いることが許されていな
い。
【0008】 リクエストに対する動的な応答を行なうための代替的なアプローチは「プラグ
イン」拡張を用いることである。プラグイン拡張はサーバに送られたメッセージ
をさまざまな段階で代行受信して特定のユーザリクエストに対してアプリケーシ
ョンに特有の処理を行なう。サーバ側のプラグインはリスナおよび他のすべての
サーバ側プラグインと同じアドレス空間において実行される。よって、プラグイ
ンを設計するアプリケーション開発者はリスナの下位レベルのオペレーションの
詳細に精通していなければならない。さらに、リスナと同じアドレス空間でプラ
グインを実行することによりリスナを安全性および安定性の面で危険にさらすこ
ととなる。障害のあるプラグインにより、他のプラグインまたはリスナそのもの
がクラッシュしたり、または予測できない態様で動作してしまうこともある。
【0009】 プラグインアプローチの第2の問題は、CGIアプローチと同様に、すべての
プラグインオペレーションがリスナを実行しているマシンと同じマシン上で実行
されることである。プラグイン拡張によって実行されるタスクは他のマシンに負
荷を転嫁することができないため、プラグインによるアプローチのスケーラビリ
ティ(scalability)は大幅に制限される。
【0010】
【発明の概要】
分散ウェブアプリケーションサーバによりブラウザリクエストを処理するため
の方法およびシステムを提供する。分散環境により、ブラウザリクエスト内で特
定されるオペレーションを実行するプロセス(「カートリッジインスタンス」)
が、そのリクエストを受取るリスナおよびそのリクエストを発行するブラウザと
は異なるマシン上で実行できる。カートリッジインスタンスがリスナとは異なる
マシン上にあるため、リスナは障害のあるカートリッジインスタンスからよりよ
く隔離されることとなり、システムの信頼性および安全性が向上する。さらに、
リスナが実行されるマシンと同じマシンでなく、数多くのマシン間でカートリッ
ジインスタンスを実行する処理の負担を分散することによってシステムのスケー
ラビリティが大幅に増加する。複数のマシンにわたってカートリッジインスタン
スの実行を分散できることから、いつどこで新しいカートリッジインスタンスを
生じさせるかを決定するのに数多くのタイプの負荷の最適配分の技法を用いるこ
とができる。
【0011】 この発明の一局面によれば、第1のマシン上で実行されるディスパッチャと第
2のマシン上で実行されるリソースマネージャとを用いてオペレーションが実行
される。第1のメッセージがディスパッチャからリソースマネージャへ送られる
。この第1のメッセージはオペレーションを行なうことのできるある特定のカー
トリッジを識別している。第2のメッセージがリソースマネージャからディスパ
ッチャへ送られる。この第2のメッセージはそのある特定のカートリッジのある
特定のインスタンスを特定している。このある特定のインスタンスは第3のマシ
ン上で実行されている。
【0012】 ディスパッチャからの第3のメッセージはそのある特定のインスタンスに送ら
れ、そのある特定のインスタンスにオペレーションを行なわせる。第1のマシン
、第2のマシンおよび第3のマシンのうちの少なくとも2つは別個のマシンであ
る。
【0013】 この発明の別の局面によれば、ブラウザリクエストに関連するオペレーション
を行なうためのシステムが提供される。システムは複数のウェブリスナに結合さ
れる複数のディスパッチャを含む。その複数のディスパッチャの各ディスパッチ
ャはその複数のウェブリスナの対応するウェブリスナからその対応するウェブリ
スナが受取ったブラウザリクエストを受取る。
【0014】 システムはさらに、仮想パスマネージャおよびリソースマネージャを含む。仮
想パスマネージャはマシン間通信機構を介して複数のディスパッチャに結合され
る。仮想パスマネージャは、複数のカートリッジのうちのどれがそのブラウザリ
クエストと関連付けられているのかをディスパッチャに示す。リソースマネージ
ャはマシン間通信機構を介して複数のディスパッチャに結合される。リソースマ
ネージャは、ディスパッチャからインスタンスに対するリクエストを受取ったこ
とに応答して、複数のディスパッチャの各々のディスパッチャに複数のカートリ
ッジのうちのあるカートリッジのインスタンスを割当てるよう構成される。
【0015】 複数のディスパッチャは、リソースマネージャによってディスパッチャに割当
てられるインスタンスへメッセージをマシン間通信機構を介して送るよう構成さ
れる。そのメッセージにより、インスタンスがブラウザリクエストに関連するオ
ペレーションを行なうことになる。
【0016】 この発明は限定によってではなく例によって、添付の図面において例示され、
添付の図面において類似の参照番号は類似の要素を指す。
【0017】
【好ましい実施例の詳細な説明】
ネットワークにわたってオペレーションを行なうための方法および装置を説明
する。以下において説明のため、この発明の完全な理解をもたらすように数多く
の特定の詳細事項を挙げている。しかしながら、当業者にはこの発明がこれらの
特定の詳細事項がなくても実施できることが明らかになるであろう。場合によっ
ては不必要にこの発明を曖昧にすることを避けるため周知の構造および装置をブ
ロック図の形態で示している。
【0018】 ハードウェアの概観 図1は、この発明の実施例が実装され得るコンピュータシステム100を示す
ブロック図である。コンピュータシステム100は、バス102または情報を通
信するための他の通信機構と、バス102に結合され情報を処理するためのプロ
セッサ104とを含む。コンピュータシステム100はまた、バス102に結合
され情報およびプロセッサ104が実行すべき命令を蔵置するための、ランダム
アクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ106を
含む。メインメモリ106はまた、プロセッサ104が実行すべき命令の実行の
間に一時変数または他の中間情報を蔵置するのに用いられてもよい。コンピュー
タシステム100はさらに、バス102に結合され静的情報およびプロセッサ1
04に対する命令を蔵置するための読取専用メモリ(ROM)108または他の
静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置110が設
けられ、バス102に結合されて情報および命令を蔵置する。
【0019】 コンピュータシステム100はバス102を介して、陰極線管(CRT)など
の表示装置112に結合されコンピュータユーザに対して情報を表示してもよい
。英数字および他のキーを含む入力装置114がバス102に結合され、情報お
よびコマンド選択をプロセッサ104に伝える。別のタイプのユーザ入力装置は
、プロセッサ104に方向情報およびコマンド選択を伝え、かつ表示装置112
上のカーソル移動を制御するためのマウス、トラックボールまたはカーソル方向
キーなどのカーソル制御装置116である。この入力装置は典型的に2つの軸、
すなわち第1の軸(たとえばx)および第2の軸(たとえばy)において2つの
自由度を有し、これは装置が平面上の位置を特定できるようにする。
【0020】 この発明はコンピュータシステム100を用いてブラウザからのメッセージに
応答して特定のオペレーションを行なうことに関する。この発明の一実施例によ
れば、プロセッサ104がメインメモリ106に含まれる1つ以上の命令の1つ
以上のシーケンスを実行することに応答してコンピュータシステム100がオペ
レーションを行なう。このような命令は、記憶装置110などの別のコンピュー
タ可読媒体からメインメモリ106に読込んでもよい。メインメモリ106に含
まれる命令のシーケンスを実行することにより、プロセッサ104がここに説明
するプロセスステップを実行することとなる。代替の実施例では、ソフトウェア
命令の代わりにまたはソフトウェア命令と併せて、結線回路を用いてこの発明を
実現してもよい。すなわち、この発明の実施例はハードウェア回路およびソフト
ウェアの如何なる特定の組合せにも限定されない。
【0021】 「コンピュータ可読媒体」という用語はここでは、実行のためにプロセッサ1
04に命令を提供するのにかかわるすべての媒体を指して用いる。このような媒
体は、不揮発性媒体、揮発性媒体および伝送媒体を含むが、これらに限定されな
い数多くの形態を取り得る。不揮発性媒体には、たとえば、記憶装置110など
の光ディスクまたは磁気ディスクが含まれる。揮発性媒体には、メインメモリ1
06などのダイナミックメモリが含まれる。伝送媒体には、バス102を構成す
るワイヤを含む、同軸ケーブル、導線および光ファイバが含まれる。伝送媒体は
また、電波および赤外線データ通信において生成されるもののような音波または
光波の形態を取ることもある。
【0022】 コンピュータ可読媒体の一般的な形態にはたとえば、フロッピーディスク、フ
レキシブルディスク、ハードディスク、磁気テープまたは何らかの他の磁気媒体
、CD−ROMおよび何らかの他の光媒体、パンチカード、せん孔テープおよび
孔のパターンを有する何らかの他の物理的媒体、RAM、PROM、EPROM
、FLASH−EPROMおよび何らかの他のメモリチップまたはカートリッジ
、以下に説明するような搬送波、またはコンピュータが読むことのできるもので
あればどのような他の媒体でも含まれる。
【0023】 実行のために1つ以上の命令の1つ以上のシーケンスをプロセッサ104に与
える上でさまざまな形態のコンピュータ可読媒体がかかわり得る。たとえば、命
令は初めに遠隔コンピュータの磁気ディスク上に担持されてもよい。遠隔コンピ
ュータは命令をそのダイナミックメモリにロードし、その命令をモデムを用いて
電話回線を介して送ることができる。コンピュータシステム100がローカルに
有するモデムが電話回線上でデータを受取り、赤外線送信機を用いてそのデータ
を赤外線信号に変換できる。バス102に結合される赤外線検出器は赤外線信号
で運ばれるデータを受取り、そのデータをバス102上に出力することができる
。バス102はそのデータをメインメモリ106へ運び、そこからプロセッサ1
04は命令を取出して実行する。メインメモリ106が受取った命令は場合によ
り、プロセッサ104による実行の前または後に記憶装置110に蔵置されても
よい。
【0024】 コンピュータシステム100はまた、バス102に結合される通信インターフ
ェイス118を含む。通信インターフェイス118はローカルネットワーク12
2に接続されるネットワークリンク120への両方向データ通信結合を提供する
。たとえば、通信インターフェイス118は、対応するタイプの電話回線に対し
てデータ通信接続を提供するサービス統合デジタル網(ISDN)カードまたは
モデムであってもよい。別の例としては、通信インターフェイス118は、互換
性のあるローカル・エリア・ネットワーク(LAN)に対するデータ通信接続を
提供するローカル・エリア・ネットワーク(LAN)カードであってもよい。ま
た、無線リンクを実現してもよい。このような実現例のいずれにおいても、通信
インターフェイス118はさまざまなタイプの情報を表わすデジタルデータスト
リームを運ぶ電気信号、電磁気信号または光信号を送受信する。
【0025】 ネットワークリンク120は典型的に1つ以上のネットワークを介して他のデ
ータ装置へのデータ通信を提供する。たとえば、ネットワークリンク120はロ
ーカルネットワーク122を介してホストコンピュータ124または、インター
ネットサービスプロバイダ(ISP:Internet Service Provider)126によ り運用されるデータ装置に対する接続を提供してもよい。ISP126はこれを
受けて、現在一般的に「インターネット」128と称される世界規模のパケット
データ通信網を介するデータ通信サービスを提供する。ローカルネットワーク1
22およびインターネット128はともに、デジタルデータストリームを運ぶ電
気信号、電磁気信号または光信号を用いる。コンピュータシステム100へまた
はコンピュータシステム100からデジタルデータを運ぶ、さまざまなネットワ
ークを介する信号およびネットワークリンク120上の、通信インターネット1
18を介する信号は情報を運ぶ搬送波の典型的な形態である。
【0026】 コンピュータシステム100はネットワーク、ネットワークリンク120およ
び通信インターネット118を介して、メッセージを送り、プログラムコードを
含むデータを受取ることができる。インターネットの例では、サーバ130はイ
ンターネット128、ISP126、ローカルネットワーク122および通信イ
ンターネット118を介してアプリケーションプログラムに対するリクエストさ
れたコードを送信するかもしれない。
【0027】 受取られたコードはそれが受取られると同時にプロセッサ104によって実行
され、および/または後に実行するために記憶装置110または他の不揮発性記
憶に蔵置されてもよい。このように、コンピュータシステム100は搬送波の形
態でアプリケーションコードを得ることもある。
【0028】 アプリケーションサーバ機能の概要 図2は、この発明の一実施例に従って設計されたシステム200のブロック図
である。システム200は、HTTPプロトコルに従ってインターネット208
にわたって複数のリスナ210、216および222と通信する複数のブラウザ
202、204および206を含む。ブラウザからのリクエストに応答して、リ
スナはウェブアプリケーションサーバ280にここでカートリッジと称するソフ
トウェアモジュールを呼出させる。例示の実施例では、ウェブアプリケーション
サーバ280は3つのカートリッジ230、234および238の実行を開始し
ている。
【0029】 ウェブアプリケーションサーバ280は、トランスポート・アダプタ212、
218および224、ディスパッチャ214、220および226、認証サーバ
252、仮想パスマネージャ250、リソースマネージャ254、コンフィギュ
レーションプロバイダ256および複数のカートリッジ実行エンジン228、2
32および236を含む、数多くの構成要素からなる。ウェブアプリケーション
サーバ280のさまざまな構成要素について以下により詳しく説明する。
【0030】 重要なことであるが、ウェブアプリケーションサーバ280の数多くの構成要
素はオブジェクトリクエストブローカ(Object Request Broker)282などの マシン間通信機構を介して通信する。マシン間通信機構を用いることにより、ブ
ラウザリクエストにおいて特定されるオペレーションを実行するカートリッジイ
ンスタンスは、リクエストを受取るリスナおよびリクエストを発行するブラウザ
とは異なるマシン上で実行することができる。カートリッジインスタンスがリス
ナとは異なるマシン上にあるため、リスナは障害のあるカートリッジインスタン
スからよりよく隔離されることとなり、システムの信頼性および安全性が向上す
る。さらに、リスナが実行されるマシンと同じマシンでなく、数多くのマシン間
でカートリッジインスタンスを実行する処理の負担を分散することによってシス
テムのスケーラビリティが大幅に増加する。複数のマシンにわたってカートリッ
ジインスタンスの実行を分散できることから、いつどこで新しいカートリッジイ
ンスタンスを生じさせるかを決定するのに数多くのタイプの負荷の最適配分の技
法を用いることができる。
【0031】 システム200内の典型的なオペレーションには一般的に以下の段階が含まれ
る。
【0032】 ブラウザがインターネット208にわたってリクエストを送信する。 リスナがそのリクエストを受取ってトランスポートアダプタを介してディスパ
ッチャに渡す。
【0033】 ディスパッチャは仮想パスマネージャ250と通信してそのリクエストを扱う
のに適切なカートリッジを判定する。
【0034】 この時点で、ディスパッチャは2つの事柄のうち1つを行なう。ディスパッチ
ャがそのカートリッジに関する使用されていないインスタンスのことを知ってい
る場合、ディスパッチャはそのインスタンスにリクエストを送る。そのカートリ
ッジに関して使用されていないカートリッジインスタンスがない場合、ディスパ
ッチャはリソースマネージャ254に新しいカートリッジインスタンスを作るよ
う依頼する。そのインスタンスがうまく起動した後に、カートリッジはその存在
をリソースマネージャに知らせる。リソースマネージャ254はそこで、ディス
パッチャに新しいインスタンスのことを知らせる。ディスパッチャはブラウザリ
クエストに基づいて変更されたリクエストを作り、その変更されたリクエストを
新しいインスタンスに送る。
【0035】 カートリッジインスタンスはその変更されたリクエストを処理して、ディスパ
ッチャに応答を送る。
【0036】 ディスパッチャはその応答をリスナを介してクライアントに戻す。 これらの段階について以下により詳しく説明する。
【0037】 カートリッジ カートリッジは特定のアプリケーションまたはシステム機能を行なうためのコ
ードのモジュールである。カートリッジはシステム200における分散の基本単
位を形成する。この発明の一実施例によれば、カートリッジはユニバーサル・リ
ソース・ロケータ(URL)を用いて名付けられる。すなわち、カートリッジ名
には2つの部分、すなわちカートリッジが存在するサーバのIPアドレスと、コ
ンパイルされたカートリッジコードのサーバディレクトリ構造における仮想パス
とがある。カートリッジはURLを用いて名付けられるため、カートリッジ名空
間はグローバルであり、文書などの他のウェブリソースにアクセスするのに用い
られるのと同じメッセージ通信技術を用いてカートリッジにアクセスすることが
できる。
【0038】 この発明の一実施例によれば、各カートリッジはすべてのカートリッジに対し
て共通の全体構造をもたらす標準インターフェイスを有する。この標準インター
フェイスは、特定の条件の下でウェブアプリケーションサーバ280により呼出
されるルーチンのインターフェイスを規定する。この発明の一実施例によれば、
抽象カートリッジインターフェイスは以下のとおりである。
【0039】
【表1】
【0040】 init()ルーチンはカートリッジインスタンスを初期化する役割を果たす。この
ことには、いくつかのサブオブジェクトのコンストラクタを呼出すことと、スレ
ッドを予め分岐させることと、他のすべての必要となる共用リソースを獲得する
こととが含まれ得る。
【0041】 shutdown()ルーチンはすべてのリソースを片付けカートリッジインスタンスを
シャットダウンする役割を果たす。カートリッジインスタンスに対して一度shut
down()ルーチンが呼出されると、直ちにカートリッジインスタンスは後続のリク
エストを処理するのに利用不可能となる。
【0042】 authenticate()ルーチンではカートリッジのサービスをリクエストしているク
ライアントがそのサービスを用いることを許可されているかどうかを検証する。
【0043】 exec()ルーチンはカートリッジに対してすべてのサービスリクエストをディス
パッチする包括的なやり方である。
【0044】 例示的カートリッジ 各カートリッジは、明確に定義された機能を行なうカートリッジとして構成さ
れるか、またはあるアプリケーションのためのインタプリタまたはルーチン環境
として作用するプログラム可能なカートリッジとして構成される。プログラム可
能なカートリッジの一例はPL/SQLランタイムであり、これは構造的問合せ
言語(Structured Query Language)を用いるオラクルベースのプログラム言語 (Oracle-based Programming Language)(PL/SQL)に従ってデータベー スクエリーを処理するよう構成される。PL/SQLランタイムはデータベース
クエリーを有するブラウザリクエストを実行する。PL/SQLランタイムは、
たとえば、データリンクを介してカートリッジインスタンスと通信しているデー
タベースサーバにアクセスすることによってリクエストを処理する。
【0045】 プログラム可能なカートリッジの別の例はJAVAランタイムインタプリタで
ある。JAVAランタイムインタプリタカートリッジのおかげで、ウェブアプリ
ケーション開発者らはブラウザリクエストを処理するためのサーバ側のJAVA
アプリケーションを書くことができる。同様に、たとえば第三者のサーバによっ
て実行されるプロセスにアクセスするなどの動的オペレーションをもたらすため
に、カスタムサーバをカートリッジとして構成してもよい。
【0046】 ディスパッチャ ディスパッチャは、リスナが受取ったリクエストを適当なカートリッジへ経路
選択するよう構成されるソフトウェアモジュールである。この発明の一実施例に
よれば、ディスパッチャはサーバ側のプログラム拡張(すなわち、「プラグイン
」)として実現される。そのため、ディスパッチャはそれらが属するリスナと同
じアドレス空間にロードされそこで実行される。ディスパッチャはコンパイル時
にリスナコードとリンクされてもよいし、実行時に動的にロードされてもよい。
【0047】 例示される実施例では、ディスパッチャ214、220および226はそれぞ
れ、リスナ210、216および222に関連付けられる。ディスパッチャ21
4、220および226は、リスナ210、216および222が受取ったブラ
ウザリクエストをカートリッジへ選択的に経路制御する。
【0048】 たとえば、リスナ210がユニフォーム・リソース・ロケータ(URL:Unif
orm Resource Locator)の形態で運ばれるブラウザリクエストをインターネット
208から受取ると仮定する。このブラウザリクエストは、たとえばHTMLペ
ージまたは実行すべきオペレーションであるウェブオブジェクトに対する識別子
の役割を果たす。リスナ210はそのブラウザリクエストの解釈を全く試みるこ
となくディスパッチャ214に受渡す。ブラウザリクエストを受取ると、ディス
パッチャ214は、 (1) 仮想パスマネージャ250と通信してブラウザリクエストによって選
択されるカートリッジを識別し、かつそのカートリッジが認証を要するかどうか
を判定し、 (2) そのカートリッジが認証を必要とする場合、認証サーバ252と通信
してブラウザがその選択されたカートリッジにアクセスすることが許されるかど
うかを判定し、 (3) アクセスが許可された場合に、リソースマネージャと通信してブラウ
ザリクエストを送るべき選択されたカートリッジの特定のインスタンスを定め、 (4) カートリッジの特定されたインスタンスによる実行のため、変更され
たブラウザリクエストを作りかつディスパッチする。
【0049】 変更されたブラウザリクエストは元のブラウザリクエストで受取った情報を再
パッケージする。変更されたブラウザリクエストはたとえば、カートリッジの正
しいオペレーションに必要なデータを含むコンテキストオブジェクトを含んでい
てもよい。カートリッジの正しいオペレーションに必要なデータには、たとえば
、そのブラウザリクエストが関連付けられるトランザクションを識別するトラン
ザクションIDが含まれる。
【0050】 カートリッジがリクエストに返答すると、そのカートリッジはディスパッチャ
にその返答を送り、ディスパッチャはこの返答をリスナに渡してそのリクエスト
を開始したブラウザへ送信されるようにする。
【0051】 コンフィギュレーションプロバイダ この発明の一実施例によれば、ウェブアプリケーションサーバ280とともに
用いるべきカートリッジはまずウェブアプリケーションサーバ280に登録され
る。登録プロセスの間、そのカートリッジに関する情報がコンフィギュレーショ
ンプロバイダ256に供給される。コンフィギュレーションプロバイダ256は
その情報をメタデータ258として蔵置してウェブアプリケーションサーバ28
0の構成要素が後からアクセスできるようにする。
【0052】 メタデータ258はたとえば、 (1) カートリッジ名、 (2) 必要となるインスタンスの最小数、 (3) インスタンスの最大数、 (4) カートリッジを実装するコードの場所、 (5) コールバック機能(初期化、リクエストハンドラ、シャットダウン)
を実行するためカートリッジ実行エンジンが用いるプログラムに依存した関数名
、 (6) カートリッジを実行するためのマシンのリスト、 (7) カートリッジのためのアイドルタイム(カートリッジのインスタンス
がシャットダウンされる前にアイドル状態でいることができる時間量)、 (8) オブジェクト識別子および (9) もしあれば、カートリッジとともに用いるべき、認証サービスのタイ
プを示すデータ を含んでいてもよい。
【0053】 オブジェクト識別子は、対応するカートリッジによるオペレーションの実行を
リクエストするためにブラウザリクエストが供給しなければならないデータを特
定する。オブジェクトタイプは特定のワードまたはURLであってもよく、また
は「/java」などの仮想パスを含んでいてもよい。
【0054】 一度コンフィギュレーションプロバイダ256が特定のカートリッジに対する
コンフィギュレーション情報をメタデータ258内に蔵置すると、そのカートリ
ッジはウェブアプリケーションサーバ280が起動される際に自動的に登録され
る。
【0055】 カートリッジがウェブアプリケーションサーバ280に登録された後、リソー
スマネージャ254はカートリッジに対する最小インスタンスをイニシエートす
る。一度最小数のインスタンスがイニシエートされると、ウェブアプリケーショ
ンサーバ280はブラウザリクエストを処理する準備が整う。
【0056】 仮想パスマネージャ 上に述べたように、ディスパッチャは仮想パスマネージャ250と通信して各
々の変更されたブラウザリクエストをどこに経路選択するかを定める。特定的に
は、各ブラウザリクエストは典型的にURLを含む。ブラウザリクエストを受取
ると、ディスパッチャはそのリクエスト内のURLを仮想パスマネージャ250
に送る。仮想パスマネージャ250はこれに応答して、もしあれば、URLに関
連付けられるカートリッジを識別するデータをディスパッチャに送る。
【0057】 必要とされる情報をディスパッチャに供給するため、仮想パスマネージャ25
0はURLをカートリッジにマッピングするメタデータ258を調べる。ブラウ
ザリクエストを受取ったことに応答して、仮想パスマネージャ250はマッピン
グデータを用いて、もしあれば、ブラウザリクエストに含まれるURLに対応す
るカートリッジを判定する。
【0058】 たとえば、ブラウザリクエストが仮想パス「/java」で始まるURLリクエス トである場合、マッピングにより、JAVAインタプリタカートリッジが仮想パ
ス「/java」を有するリクエストを取扱うよう構成されていることが示されるか もしれない。
【0059】 この発明の一実施例によれば、仮想パスマネージャ250はまた、URLに関
連付けられたカートリッジが認証を必要とするかどうかを判定する。カートリッ
ジが認証を要する場合、仮想パスマネージャ250はディスパッチャに送る応答
において、認証が必要であることを示す。認証が必要でない場合、ディスパッチ
ャは認証サーバ252を呼出すことなく、カートリッジのインスタンスに対する
変更されたブラウザリクエストを作って送る。認証が必要である場合、変更され
たリクエストをカートリッジのインスタンスに送出してもよいことを認証サーバ
が示した後に初めてディスパッチャはそのカートリッジのインスタンスに変更さ
れたリクエストを送る。
【0060】 リソースマネージャ ウェブアプリケーションサーバ280のリソースマネージャ254は、カート
リッジに対して予め定められた最小数のインスタンスをイニシエートし、各カー
トリッジのインスタンスの間で負荷の最適配分を行ない、所与のカートリッジの
予め定められた最大数のインスタンスまで必要に応じてカートリッジの新しいイ
ンスタンスをイニシエートすることによってカートリッジの各々の実行を管理す
る。
【0061】 たとえば、ある特定のカートリッジ(C1)のためのメタデータが以下の情報
を含んでいると仮定する。
【0062】 名称=C1 最小インスタンス=10 最大インスタンス=50 ホストマシン=M1、M3、M8 アイドルタイム=30秒 このメタデータに基づいて、カートリッジC1が初めに登録される際に、リソ
ースマネージャ254はC1の10のインスタンスをイニシエートさせる。リソ
ースマネージャ254はラベルM1、M3およびM8に関連付けられるマシン上
の10のインスタンスをイニシエートすることになる。
【0063】 C1をアクセスするリクエストをディスパッチャから受取った際、リソースマ
ネージャ254はC1のいずれかの既存のインスタンスが利用可能であるかどう
かを判定する。リクエストを受取った際にC1のどのインスタンスも利用可能で
ない場合、リソースマネージャ254はC1の最大数のインスタンスが既に実行
されているかどうかを判定する。C1の最大数のインスタンスが既に実行されて
いない場合、リソースマネージャ254は可能なホストマシンの1つの上でC1
の新しいインスタンスをイニシエートし、リクエストを発行したディスパッチャ
にこの新しいインスタンスを識別するメッセージを送信する。C1の最大数のイ
ンスタンスが既に実行されている場合、リソースマネージャ254はリクエスト
を発行したディスパッチャに対し、その時点でそのリクエストを取扱うことがで
きないことを示すメッセージを送る。
【0064】 負荷の最適配分 この発明の一実施例によれば、リソースマネージャ254は1組の負荷の最適
配分の規則を適用して、2つ以上の可能なホストマシンがある中、カートリッジ
のインスタンスをどこでイニシエートするかを定める。すなわち、上の例では、
M1、M2およびM3はすべてカートリッジC1のインスタンスを実行すること
が可能である。M1、M2およびM3が同じ処理能力を有する場合、インスタン
スを3つのマシンにわたって均等に分散するのが望ましいであろう。しかしなが
ら、M1がM2およびM3の10倍の処理力を有するなら、C1のインスタンス
のすべてをある時点まではM1でイニシエートし、それからさらなるインスタン
スをM1、M2およびM3の間で均等に分散させるのが望ましいであろう。
【0065】 可能なマシンの間で負荷の最適配分を如何に行なうかを定める上でリソースマ
ネージャ254を助けるため、各カートリッジに対して蔵置されるメタデータは
さらなる詳細を含んでいてもよい。たとえば、メタデータは各マシンに対してイ
ンスタンスの別個の最小および最大数を特定してもよい。その場合リソースマネ
ージャ254は、最大インスタンスに対する実際のインスタンスの比が最も小さ
なマシンはどれかに基づいて、マシン間で新しいインスタンスを分配することが
できる。
【0066】 メタデータはまた、カートリッジを実行できるマシンのための順序を特定して
もよい。その順序においてN+1の位置にあるマシンは、その順序においてN番
目の位置にあるマシンが既にその最大数のインスタンスを実行している場合にだ
けカートリッジのインスタンスを実行するのに用いられる。
【0067】 カートリッジインスタンスステータスの管理 この発明の一実施例によれば、リソースマネージャ254は作られたカートリ
ッジインスタンスを管理するためステート情報を維持する。ステート情報には、
インスタンスを識別し、そのインスタンスを実行するマシンを識別し、そのイン
スタンスが割当てられたリスナを識別するデータが含まれる。
【0068】 図5には、このステート情報を蔵置するためリソースマネージャ254が維持
し得る表500が示される。表500には、インスタンス列502、カートリッ
ジ列504、リスナ列506およびマシン列508が含まれる。表500の各行
は別個のカートリッジインスタンスに対応する。所与のカートリッジインスタン
スに対する行内で、カートリッジ列504はカートリッジインスタンスに関連づ
けられるカートリッジを識別し、インスタンス列502はそのカートリッジイン
スタンスのインスタンス番号を示す。たとえば、行510はカートリッジC1の
インスタンスに対応する。このため、行510のカートリッジ列504はカート
リッジC1を示す。行510のインスタンス列502は行510に関連づけられ
るカートリッジインスタンスがカートリッジC1のインスタンス1であることを
示す。
【0069】 リスナ列506は、ある行に関連づけられるカートリッジインスタンスが割当
てられたリスナを示す。マシン列508は、ある行に関連づけられるカートリッ
ジインスタンスが実行されているマシンを示す。たとえば、行510に関連づけ
られるカートリッジインスタンスはリスナ210に割当てられており、マシンM
1上で実行されている。
【0070】 リソースマネージャ254と同様に、各ディスパッチャはそのディスパッチャ
が設けられているリスナに割当てられたカートリッジインスタンスに対するステ
ート情報を維持する。このようなステート情報はたとえば、図4に示されるよう
な表400において維持されてもよい。表500と同様に、表400にはそれぞ
れインスタンス番号およびカートリッジ識別子を保持するインスタンス列402
およびカートリッジ列404が含まれる。しかしながら、表500ではリソース
マネージャ254によって割当てられるすべてのカートリッジインスタンスに対
して1つずつエントリが含まれるのに対し、表400では特定のリスナに割当て
られたカートリッジインスタンスに対するエントリしか含まれない。たとえば、
表400は、表500に列挙されたカートリッジインスタンスのうちリスナ20
0に割当てられたもののみに対するエントリを含む。
【0071】 インスタンス列402およびカートリッジ列404に加えて、表400にはス
テータス列406が含まれる。各行に対し、ステータス列406はその行に関連
づけられるインスタンスのステータスを示す値を保持する。たとえば、行408
のステータス列406はカートリッジC1にインスタンス1が現在ビジーである
ことを示している。例示される実施例では、ステータス列406はカートリッジ
インスタンスがBUSYまたはFREEのいずれかであることを示すフラグを保
持する。カートリッジステータスの重要性について、リソースマネージャ254
とディスパッチャ214および220とのオペレーションに関連して以下に説明
する。
【0072】 ディスパッチャとリソースマネージャとの相互作用 上述のように、ディスパッチャは特定のカートリッジに変更されたブラウザリ
クエストを送る必要がある際にリソースマネージャ254と通信する。この発明
の一実施例によれば、ディスパッチャはまず、適当なカートリッジのインスタン
スが(1)これに既に割当てられているかどうか、また(2)新しい変更された
ブラウザリクエストを処理するのに利用可能であるかどうかを判定する。適当な
カートリッジインスタンスがディスパッチャに既に割当てられており新しい変更
されたブラウザリクエストを処理するのに現在利用可能である場合、ディスパッ
チャはリソースマネージャ254とさらに通信することなく、変更されたブラウ
ザリクエストをカートリッジインスタンスへ転送する。
【0073】 たとえば、仮想パスマネージャ250によればカートリッジC1が処理しなけ
ればならないブラウザリクエストをリスナ210が受取ったと仮定する。また、
表400がリスナ210に割当てられたカートリッジインスタンスの現在のリス
トおよびステータスを反映すると仮定する。リスナ210からブラウザリクエス
トを受取ると、ディスパッチャ214は表400を調べてカートリッジC1のF
REEインスタンスがあるか探す。例示される表400では、行410がカート
リッジC1のインスタンス3が現在FREEであることを示している。したがっ
て、ディスパッチャ214はさらにリソースマネージャ254と通信することな
く変更されたブラウザリクエストを直接カートリッジC1のインスタンス3に転
送する。変更されたブラウザリクエストを送ることに応答してディスパッチャ2
14は行410のステータス列406のステータス値をBUSYに変える。
【0074】 リスナに現在利用可能である適当なカートリッジインスタンスが既に割当てら
れていない場合、カートリッジに関連づけられるディスパッチャはリソースマネ
ージャ254からのカートリッジインスタンスをリクエストする。必要とされる
カートリッジのインスタンスが利用可能でなく、かつ必要とされるカートリッジ
の既存のインスタンスの数が最大数より下であることをリソースマネージャ25
4が判定した場合、リソースマネージャ254は新しいカートリッジをイニシエ
ートする。新しいカートリッジをイニシエートする際に、リソースマネージャ2
54は表500に新しいカートリッジインスタンスのためのエントリを挿入する
【0075】 たとえば、カートリッジC3が処理しなければならないブラウザリクエストを
リスナ210が受取ったと仮定する。また、カートリッジC3のインスタンス3
がまだイニシエートされていないものと仮定する。こうした条件の下では、ディ
スパッチャ214はリソースマネージャ254にカートリッジC3のインスタン
スに対するハンドルを求めるリクエストを送る。このリクエストに応答して、リ
ソースマネージャ254はマシンM3上でカートリッジC3のインスタンス3を
イニシエートする。さらに、リソースマネージャ254は行512に見られるエ
ントリを表500に挿入する。
【0076】 表500にカートリッジC3のインスタンス3のための行512を挿入した後
、リソースマネージャ254はディスパッチャ214に新しく作られたインスタ
ンスに対するハンドルを送り返す。このハンドルを受取ったことに応答して、デ
ィスパッチャ214はそのステータス表400に新しいインスタンスのためのエ
ントリ(行412)を挿入する。ディスパッチャ214はそこで、変更されたブ
ラウザリクエストをカートリッジC3のインスタンス3に送信する。
【0077】 カートリッジインスタンスの解放 この発明の一実施例によれば、リスナはカートリッジインスタンスが未処理の
ブラウザリクエストに応答し終わった際にカートリッジインスタンスの所有権を
自動的に解放することはない。たとえば、カートリッジC3のインスタンス3が
変更されたブラウザリクエストを受取り、その変更されたブラウザリクエストを
処理して、ディスパッチャ214に応答を送り返すと想定する。ディスパッチャ
214はその応答をリスナ210に渡し、これがブラウザリクエストを発行した
ブラウザに送り返されるようにする。
【0078】 この時点で、リスナ210はカートリッジC3のインスタンス3の所有権をも
はや必要としない。しかしながら、カートリッジC3のインスタンス3の所有権
をリソースマネージャ254に戻す代わりに、ディスパッチャ214は単に行4
12のステータス列406をBUSYからFREEに変える。
【0079】 行412のステータス列406の値をFREEに変えることによって、カート
リッジC3のインスタンス3がもはやリクエストを処理しておらず、よって後続
のリクエストを処理する準備ができていることが示される。しかしながら、カー
トリッジC3のインスタンス3が利用可能であることを示す表400はディスパ
ッチャ214によって局所的に維持されているため、カートリッジC3のインス
タンス3はリスナ210に到達する後続のブラウザリクエストに対してだけ利用
可能である。リソースマネージャ254が維持する表500の行512はカート
リッジC3のインスタンス3をリスナ210が所有していることを引続き示す。
【0080】 リスナはリクエストが処理されるたびにカートリッジインスタンスを自動的に
解放するわけではないため、リソースマネージャ254とさまざまなディスパッ
チャとの間での通信に関連するオーバーヘッドは大幅に減少される。たとえば、
カートリッジC3に伝えなければならない10の連続したリクエストをリスナ2
10が受取るものと仮定する。10のリクエストの各々に対してリソースマネー
ジャ254と通信するのではなく、ディスパッチャ214は最初のリクエストに
応答してリソースマネージャ254と通信してもよい。ディスパッチャ214は
後続の9つのリクエストをリソースマネージャ254と通信することなく処理す
ることができるが、これはディスパッチャ214が最初のリクエストを処理する
C3の同じインスタンスを用いて9つの後続のリクエストを処理するためである
【0081】 各リクエストを処理する際にカートリッジインスタンスのリスナ所有権を自動
的に解放しないことでウェブアプリケーションサーバ280の効率が向上される
とはいえ、リスナは無期限にカートリッジインスタンスの所有権を維持すること
はできない。たとえば、長い期間にわたって用いられなかったインスタンスはリ
ソースマネージャ254に戻され、リソースを空けるためにその割当ての解除が
できるようにすべきである。さらに、他のリスナがそのカートリッジのインスタ
ンスを必要としているところに、1つのリスナが比較的長い時間使っていなかっ
たカートリッジのインスタンスの所有権を維持することは効率的ではない。
【0082】 したがって、リソースマネージャ254は、リスナに渡される各カートリッジ
インスタンスのための最大アイドルタイムを各リスナに伝える。最大アイドルタ
イムとは、リスナがカートリッジインスタンスの所有権を解放しなければならな
くなる前にそのカートリッジインスタンスが使用されない状態でいられる最大の
時間を示すものである。たとえば、カートリッジC3のインスタンス3のための
最大量のアイドルタイムが10分であることをリソースマネージャ254がリス
ナ210に示すものと仮定する。この情報に基づいて、リスナ210は、カート
リッジC3のインスタンス3が10分より長い間アイドル状態またはFREEと
ならない限りにおいてカートリッジC3のインスタンス3を続けて用いてカート
リッジC3に対するブラウザリクエストを処理することができる。
【0083】 カートリッジC3のインスタンス3が10分より長い間アイドル状態である場
合、ディスパッチャ214は表400から行412を取除き、リスナ210がカ
ートリッジC3のインスタンス3の所有権を解放することをリソースマネージャ
254にメッセージを送って知らせる。このメッセージに応答して、リソースマ
ネージャ254は行512を更新して、カートリッジC3のインスタンス3がい
ずれのリスナによっても所有されておらず、よって別のリスナに再割当てされる
か終了され得ることを示す。
【0084】 代替の実施例では、カートリッジインスタンスのためのアイドルタイムが満了
した際にもディスパッチャはカートリッジインスタンスを自動的に解放しない。
代わりに、ディスパッチャはリソースマネージャ254にメッセージを送り、満
了となったインスタンスを解放することを申し出る。リソースマネージャ254
はこの申し出に応答して、リスナがカートリッジインスタンスを解放するようリ
クエストするか、またはリスナがその満了となったカートリッジインスタンスの
所有権を持ち続けることを許可してもよい。
【0085】 この発明の一実施例によれば、リソースマネージャ254は直ちに処理するこ
とのできないリクエストのキューを維持する。キュー内のリクエストを処理する
ことが可能となると、そのリクエストはキューから取除かれ処理される。
【0086】 たとえば、カートリッジC1が処理しなければならないブラウザリクエストを
リスナ222が受取り、そのリスナ222にカートリッジC1のいずれのインス
タンスも割当てられていなかったと仮定する。ディスパッチャ226はリソース
マネージャ254にC1のインスタンスに対するリクエストを送る。さらに、C
1の最大50のインスタンスが許容され、C1の50のインスタンスがリスナ2
10に割当てられたと仮定する。こうした条件の下では、リソースマネージャ2
54はリスナ222からのリクエストを処理することができない。このため、リ
ソースマネージャ254はそのリクエストをキューにおく。リスナ210がC1
のインスタンスを解放すると、リソースマネージャ254はリスナ222にC1
のインスタンスが利用可能であることを伝える。
【0087】 ある特定の条件の下で、リソースマネージャ254は強制的にリスナにカート
リッジインスタンスを解放させることがある。たとえば、リソースマネージャ2
54はシステムオーバロード状況を検出し、これに応答して1組のカートリッジ
インスタンスを終了することがあり、これはそのカートリッジインスタンスが終
了されることになることをそのカートリッジインスタンスが現在割当てられてい
るリスナに知らせる前または知らせた後に行なわれる。
【0088】 また、リソースマネージャ254はリスナの間での公平性の方針を実現するた
めに強制的にリスナにカートリッジインスタンスを解放させることがある。たと
えば、別のリスナが予め定められたしきい値より長い時間にわたってカートリッ
ジのインスタンスを待っている場合、リソースマネージャ254は所与のカート
リッジの最も多い数のインスタンスを保持するリスナにそのカートリッジのある
インスタンスを解放させてもよい。たとえば、リスナ210にカートリッジC1
の50のインスタンスが割当てられ、C1は最大で50のインスタンスを有する
場合、リソースマネージャ254は別のリスナからC1のインスタンスに対する
リクエストを受取ってから10秒後にリスナ210にC1のあるインスタンスを
解放させてもよい。
【0089】 カートリッジ実行エンジン この発明の一実施例によれば、各カートリッジインスタンスはカートリッジ実
行エンジンおよびカートリッジから構成される。カートリッジ実行エンジンは、
ウェブアプリケーションサーバ280およびマシン間通信機構の複雑さからカー
トリッジを隔離するコードモジュールである。カートリッジは、関数テーブルに
カートリッジ関数に対するポインタを蔵置することによってカートリッジ実行エ
ンジンに利用可能となる。一実施例によれば、すべてのカートリッジが、上述の
例示のカートリッジインターフェイスにおいて特定された関数を提供する。すべ
てのカートリッジが同じインターフェイスをサポートするようにさせることによ
り、単一の標準カートリッジ実行エンジンをすべてのカートリッジに対して用い
ることができる。
【0090】 この発明の一実施例によれば、カートリッジは共用ライブラリとして実装され
、カートリッジ実行エンジンは標準カートリッジインターフェイスを用いて共用
ライブラリ内のルーチンを呼出す実行可能なプログラムである。カートリッジ実
行エンジンはカートリッジとディスパッチャとの間でインターフェイスをもたら
し、カートリッジの制御のフローを指示し、カートリッジが用いるサービスを提
供する。
【0091】 リソースマネージャ254が新しいカートリッジインスタンスの生成を必要と
する場合、リソースマネージャ254はカートリッジ実行エンジンのインスタン
スを生成させる。これに対し、このようにして作られたカートリッジ実行エンジ
ンのインスタンスは適当なカートリッジのインスタンスを生成させる。リソース
マネージャ254はたとえば、カートリッジが実行されるマシン上にある「カー
トリッジ実行エンジンファクトリ」と呼出すことによってカートリッジ実行エン
ジンのインスタンスを生成させることができる。カートリッジ実行エンジンのイ
ンスタンスはたとえば、そのカートリッジを構成する共用ライブラリ内のルーチ
ンのうちの1つに呼出を行なうことによってカートリッジのインスタンスを生成
させることができる。
【0092】 図2に示されるように、ウェブアプリケーションサーバ280はカートリッジ
230、234および238の各々に対しカートリッジ実行エンジン228、2
32および236を含む。カートリッジ実行エンジンは標準のカートリッジイン
ターフェイスを介してカートリッジへの呼出を行なうことにより対応するカート
リッジのインスタンスの実行を制御する。カートリッジ実行エンジンとカートリ
ッジとの間で基本的なコールバック機能を確立することにより、そのカートリッ
ジをコールバック機能に応答するよう構成し、次にそのカートリッジをコンフィ
ギュレーションプロバイダ256に登録することによってどんなカートリッジも
ウェブアプリケーションサーバ280に統合することができる。この事は以下に
説明する。
【0093】 このように、PL/SQLランタイムカートリッジがリクエストを処理するの
に適当なカートリッジであるとディスパッチャ214が判定すると、ディスパッ
チャ214はそのPL/SQLランタイムカートリッジに関連づけられるカート
リッジ実行エンジンを含むカートリッジインスタンスにそのリクエストをディス
パッチする。新しいインスタンスをイニシエートする必要がある場合、リソース
マネージャ254は別個のアドレス空間においてPL/SQLランタイムカート
リッジの新しいインスタンスを作り、その新しいインスタンスのカートリッジ実
行エンジン228へそのリクエストをディスパッチする。プログラムのインスタ
ンスを実行するのに用いられるアドレス空間は、ウェブアプリケーションサーバ
280の構成要素の1つ以上が実行されているコンピュータシステムのメモリ内
にあるか、または別のコンピュータシステム上にあってもよい。
【0094】 ディスパッチャからのメッセージに応答して、カートリッジ実行エンジンはカ
ートリッジにリクエストハンドラコールバック機能を発行し、カートリッジにそ
のリクエストを処理させる。そのリクエストを処理するカートリッジはその結果
をカートリッジ実行エンジンに返し、カートリッジ実行エンジンはその結果をデ
ィスパッチャに転送する。ウェブアプリケーションサーバ280がオペレーショ
ンにおいて障害を検出した場合にはカートリッジ実行エンジンはカートリッジの
シャットダウン関数を発行する。
【0095】 このように、カートリッジ実行エンジンは、実行すべき予め定められたオペレ
ーションを特定するウェブアプリケーションサーバ280へのアプリケーション
プログラミングインターフェイスを提供する。標準のカートリッジインターフェ
イスを使用することにより、カートリッジのプログラマが、カートリッジがとも
に用いられることになる特定のウェブリスナが用いるプロトコルとは無関係に、
各カートリッジをウェブアプリケーションサーバ280へ高レベルで統合化する
よう構成することができる。
【0096】 トランスポートアダプタ リスナは、サーバ側のプラグインが使用するためのプログラミングインターフ
ェイスおよびプロトコルを提供することによってそのようなプラグインの使用を
可能にする。残念なことに、リスナが提供するプログラミングインターフェイス
およびプロトコルはリスナごとに異なる。たとえば、ネットスケープ・サーバ・
アプリケーション・プログラミング・インターフェイス(NSAPI:Netscape
Server Application Programming Interface)、インターネット・サーバ・ア プリケーション・プログラミング・インターフェイス(ISAPI:Internet S
erver Application Programming Interface)およびアプリケーション開発イン ターフェイス(ADI:Application Development Interface)は現在リスナに よりもたらされる別個のプログラミングインターフェイスの3つの例である。
【0097】 トランスポートアダプタはウェブリスナが用いる私的プロトコルおよびインタ
ーフェイスからディスパッチャを隔離する。特定的には、各トランスポートアダ
プタはさまざまなリスナのプロトコルを認識し、リスナから受取ったブラウザリ
クエストを変換してリスナのプロトコルとは無関係の標準ディスパッチャプロト
コルを有する変換されたブラウザリクエストを生じるよう構成される。同様に、
トランスポートアダプタはディスパッチャからの返答をリスナのトランスポート
プロトコルに変換する。
【0098】 このように、トランスポートアダプタにより、ウェブアプリケーションサーバ
280を異なるベンダのリスナとともに用いることが可能となる。さらに、トラ
ンスポートアダプタは異なるサーバアーキテクチャおよびオペレーティングシス
テムに対応するよう構成されてもよい。
【0099】 ウェブアプリケーションサーバのオペレーション 図3Aおよび図3Bはこの発明の一実施例によるブラウザリクエストに応答す
る方法を示すフロー図である。ステップ350においてリスナがブラウザリクエ
ストを受取る。説明のために、このブラウザリクエストはブラウザ202により
発行されリスナ210により受取られるものと仮定する。
【0100】 ブラウザリクエストを受取ると、リスナ210はステップ352においてウェ
ブアプリケーションサーバ280にそのリクエストを転送する。特定的には、リ
スナ210はリスナ210の私的プログラミングインターフェイスを用いてその
リクエストをトランスポートアダプタ212に渡す。トランスポートアダプタ2
12は、必要に応じてそのリクエストを標準ディスパッチャプログラミングイン
ターフェイスを用いて変換しそのリクエストをディスパッチャ214に渡す。
【0101】 ディスパッチャ214は、仮想パスマネージャ250と通信することによって
、ブラウザリクエストにより特定される仮想パスに基づいて、ステップ354に
おいてブラウザリクエストに対応するリクエストオブジェクトタイプを識別する
。ディスパッチャ214はステップ356において、そのリクエストオブジェク
トタイプが識別可能なカートリッジに対応するかどうかを判定する。そのリクエ
ストオブジェクトタイプが識別可能なカートリッジに対応していない場合、その
リクエストはステップ358においてリスナ210に戻される(図3Bを参照)
。ステップ358においてそのリクエストが静的HTMLページに対するリクエ
ストであることをリスナ210が認識すると、リスナはその静的HTMLページ
にアクセスし、そのHTMLページをステップ360においてブラウザ202に
送る。ブラウザリクエストがリスナ210によって認識されない場合、ステップ
360において返答がブラウザ202に送られそのリクエストが認識不可能であ
ったことを示す。
【0102】 ステップ356において、(1)リクエストをカートリッジに送らなければな
らないことと、(2)リスナ210にそのカートリッジの現在FREEであるイ
ンスタンスが1つも割当てられていないこととをディスパッチャ214が判定す
ると、ディスパッチャ214は、そのブラウザリクエストを送ることのできるカ
ートリッジ230のインスタンスが割当てられることになるリソースマネージャ
254と通信する。図3Bに示されるステップ362では、リソースマネージャ
254は、識別されたカートリッジのインスタンスが既存のインスタンスの数の
中で利用可能である(所有されていない)かどうかを判定する。説明のため、こ
のリクエストはカートリッジ230に関連づけられるものであり、カートリッジ
230はPL/SQLランタイムカートリッジであると仮定する。
【0103】 ステップ362においてリソースマネージャが利用可能なインスタンス、たと
えばPL/SQLランライム230のインスタンス260を識別すると、リソー
スマネージャ254はリクエストをインスタンス260に送るべきであることを
ディスパッチャ214に知らせる。ディスパッチャ214はそこで、変更された
ブラウザリクエストを作りステップ368においてインスタンス260のカート
リッジ実行エンジン228にその変更されたブラウザリクエストを送って、以下
に説明するように利用可能なインスタンス260にそのリクエストを処理させる
【0104】 しかしながら、ステップ362においてカートリッジ230のインスタンスが
1つも利用可能でない場合、リソースマネージャ254はステップ364におい
て、既存のインスタンスの数が最大所定数を超えるかどうかを判定する。ステッ
プ364において既存のインスタンスの数が最大所定数を超える場合、リソース
マネージャ254はその時点ではそのリクエストを処理できないことをディスパ
ッチャ214に示す。これに応答して、ディスパッチャ214はステップ358
においてそのリクエストをリスナ210に返し、その後に、ウェブリスナ210
はステップ360においてネットワークを介してブラウザ202へ返答を送り、
そのリクエストが処理されなかったことを示す。
【0105】 代わりに、カートリッジインスタンスがリクエストを処理するためにその現時
点で利用可能でない場合、リスナ210はそのカートリッジインスタンスに対す
る待ちリストにそのリクエストを入れてもよい。カートリッジインスタンスが利
用可能となると、変更されたブラウザリクエストが待ちリストから取除かれカー
トリッジインスタンスに転送される。変更されたブラウザリクエストが予め定め
られた時間より長い間待ちリストに残っている場合、リスナ210はそのリクエ
ストを待ちリストから取除いてブラウザ202にメッセージを送りそのリクエス
トが処理できなかったことを示すようにしてもよい。
【0106】 ステップ364において既存のインスタンスの数が最大所定数を超えない場合
、リソースマネージャ254は識別されたプログラムの新しいインスタンスをイ
ニシエートし、ブラウザリクエストに基づく変更されたブラウザリクエストを新
しいインスタンスに送るべきであることをディスパッチャ214に知らせる。そ
こでディスパッチャ214は変更されたブラウザリクエストをその新しいインス
タンスのカートリッジ実行エンジンへディスパッチする。
【0107】 たとえば、リソースマネージャ254がブラウザリクエストに応答してインス
タンス260をイニシエートしたと仮定する。その初期化の間、PL/SQLラ
ンタイムのための蔵置された命令シーケンスにアクセスが行なわれ、ディスパッ
チャ214が実行しているアドレス空間とは別個のアドレス空間においてカート
リッジ230の新しいインスタンス260が作られる。一実施例によれば、初期
化はカートリッジ実行エンジン228をロードし、そのカートリッジ実行エンジ
ンにカートリッジ230内の初期化ルーチンを呼出させることによって行なわれ
る。
【0108】 一度新しいインスタンス260が実行されると、ディスパッチャ214はステ
ップ368においてその新しいインスタンス260に関連づけられているカート
リッジ実行エンジン228にリクエストをディスパッチする。カートリッジ実行
エンジン228は新しいインスタンス260にコールバックメッセージを送りそ
のリクエストの実行を要求する。そのコールバックメッセージにおいて、カート
リッジ実行エンジン228はそのリクエストを処理する上でインスタンス260
が必要とする全てのパラメータを渡す。このようなパラメータにはたとえば、パ
スワード、データベース探索キー、またはインスタンス260が実行する動的オ
ペレーションのための他のどんな引き数を含んでいてもよい。
【0109】 次にインスタンス260はリクエストを実行する。ステップ368におけるイ
ンスタンスによるリクエストの実行の間、ディスパッチャ214はステップ37
0においてインスタンスを監視して障害が発生するかどうかを判定する。ステッ
プ370においてディスパッチャ214が障害を検出すると、ディスパッチャ2
14はステップ372において対応するカートリッジ実行エンジン228を呼出
し、その障害を有するインスタンス260を打ち切る。これに対し対応するカー
トリッジ実行エンジン228はAPIを通して障害のあるインスタンスに対して
シャットダウンコマンドを発行する。そのインスタンスはカートリッジ実行エン
ジン228によるシャットダウンコマンドに応答して、他のどんなアドレス空間
における他のどんなプロセスにも影響を与えることなくシャットダウンする。
【0110】 ステップ370において障害が検出されない場合、ディスパッチャ214はス
テップ374において実行の完了の際にインスタンス260から返答を受取る。
ステップ376においてディスパッチャ214はその返答をリスナ210に転送
し、リスナ210は実行されたインスタンス260からの返答をもってブラウザ
に応答する。インスタンス260を実行した後、ステップ378においてディス
パッチャ214はステップ378に示されるようにメモリ内にインスタンスを維
持し、後続のリクエストの実行を可能にする。
【0111】 ウェブサーバの分散アーキテクチャ 重要なことであるが、ウェブアプリケーションサーバ280のさまざまな構成
要素は、それら構成要素が同じアドレス空間において実行される必要がなく同じ
マシン上で実行されることさえ必要としない通信機構を用いて互いに通信する。
例示される実施例では、ウェブアプリケーションサーバ280の構成要素はオブ
ジェクトリクエストブローカ(ORB:Object Request Broker)282を介し て通信するよう構成される。オブジェクトリクエストブローカは「共通オブジェ
クトリクエストブローカ:アーキテクチャおよび仕様(CORBA)」("Commo
n Object Request Broker: Architecture and Specification (CORBA)")に詳し
く記載されている。CORBAに関連するこのおよび他の文献はワールド・ワイ
ド・ウェブのhttp://www.omg.orgにおいて見つけることができる。
【0112】 この発明の実施例はCORBAに従ったORBを介する通信に関連して説明す
るが、他のクロスプラットフォーム通信機構を用いてもよい。たとえば、ウェブ
アプリケーションサーバ280の構成要素は代わりに、遠隔手続き呼出(RPC
:Remote Procedure Calls)、UNIXパイプ、Microsoft COMを用いて互いに 通信してもよい。
【0113】 ウェブアプリケーションサーバ280のさまざまな構成要素がマシンから独立
した通信機構を用いて互いに通信するため、構成要素が互いに対してどこに存在
するかということに関して固有の制約はない。たとえば、リスナ210、216
および222は同じマシン上で実行していてもよく、またはそれぞれがこのよう
なオペレーティングシステムを有する3つの完全に異なったマシン上で実行して
もよい。同様に、認証サーバ252、仮想パスマネージャ250、リソースマネ
ージャ254およびコンフィギュレーションプロバイダ256は同じマシン上で
実行していてもよく、または4つの異なるマシン上で実行していてもよい。さら
に、これらの4つの異なるマシンはリスナ210、216および222を実行す
る3つのマシンと少しも重複していなくてもよい。
【0114】 カートリッジ実行エンジン228、232および236は、オブジェクトリク
エストブローカ282を介してウェブアプリケーションサーバ280の他の構成
要素と通信するのに必要な論理のすべてを組込んでいる。したがって、カートリ
ッジインスタンス自体の場所は通信機構によって本質的に制約されるものではな
い。すなわち、インスタンス260はこれがリクエストを受取るディスパッチャ
とは全く異なるマシンおよびオペレーティングシステムにおいて実行されてもよ
い。同様に、インスタンス260は、リソースマネージャ254、または同じウ
ェブアプリケーションサーバ280によって管理される他のカートリッジのイン
スタンスを含む、ウェブアプリケーションサーバ280の他の構成要素のいずれ
とも異なるマシンおよびオペレーティングシステム上にあってもよい。
【0115】 重要なことだが、ウェブアプリケーションサーバ280が用いるカートリッジ
が享受する場所の独立性は、カートリッジそのものにおける何らかのカスタムプ
ログラミングを介してではなくカートリッジ実行エンジンの通信論理を介して達
成される。したがって、分散アプリケーションサーバ環境における実行のために
特別にカートリッジを設計する必要がない。このように、カートリッジ設計者ら
は分散システムの複雑さから隔離され、カートリッジが作られる目的であるタス
クと関連する論理に労力を集中させることができる。
【0116】 上述のように、異なるカートリッジの複数のインスタンスを管理してさまざま
なユーザリクエストを処理するウェブアプリケーションサーバ280が提供され
る。各カートリッジインスタンスはリスナとは別個のメモリ空間において実行さ
れ、このためサーバ側のプラグインに関連のある安全性の問題を回避できる。さ
らに、リスナが受取ったブラウザリクエストを処理するのに用いられるカートリ
ッジインスタンスはリスナとは全く異なるマシン上で実行されてもよい。このた
め、システムのスケーラビリティが向上すると同時に、いずれかの特定のマシン
の負担が軽減される。
【0117】 さらに、ウェブアプリケーションサーバ280はまた、所与のカートリッジの
各々に対するインスタンスの数を制御する。よって、サーバ側のリソースが制御
され、インスタンスが制御不可能なほど生成されることによって多数のリクエス
トがいずれかのマシンを圧倒することがないことが確実となる。
【0118】 さらに、実行する準備の整ったインスタンスの最小数を維持することによって
実行のスループットもまた向上する。単一の実行の後にインスタンスを終了して
、それから後続のリクエストの実行のためにインスタンスを再び作るためにメモ
リにカートリッジを再ロードするのではなく、さらにインスタンスをイニシエー
トしてメモリ内に維持して後続のリクエストを実行するようにしてもよい。
【0119】 前述の明細書において、この発明をその特定の実施例に関連して説明した。し
かしながら、この発明のより幅の広い精神および範囲から逸脱することなくさま
ざまな修正および変更を行なうことができることが明らかになるであろう。した
がって、明細書および図面は限定的な意味ではなく例示的な意味で考慮されるべ
きである。
【図面の簡単な説明】
【図1】 この発明の一実施例が実装され得るコンピュータシステムのブロ
ック図である。
【図2】 この発明の一実施例による分散アプリケーションサーバのブロッ
ク図である。
【図3A】 この発明の一実施例によるブラウザリクエストを処理するため
のステップを示すフローチャートの一部の図である。
【図3B】 この発明の一実施例によるブラウザリクエストを処理するため
のステップを示すフローチャートの別の部分の図である。
【図4】 この発明の一実施例によるディスパッチャが維持する情報を含む
表のブロック図である。
【図5】 この発明の一実施例によるリソースマネージャが維持する情報を
含む表のブロック図である。
【手続補正書】特許協力条約第19条補正の翻訳文提出書
【提出日】平成11年7月1日(1999.7.1)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【請求項27】 前記複数のディスパッチャのうちのあるディスパッチャが
ある特定のカートリッジに関連付けられるブラウザリクエストを受取り、かつそ
のディスパッチャが維持するインスタンスのリストが、そのある特定のカートリ
ッジのインスタンスが現在利用可能であることを示している場合、ディスパッチ
ャはリソースマネージャからのブラウザリクエストに対するインスタンスをリク
エストすることなくインスタンスにメッセージを送る、請求項21に記載のシス
テム。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成11年11月16日(1999.11.16)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正内容】
【0009】 プラグインアプローチの第2の問題は、CGIアプローチと同様に、すべての
プラグインオペレーションがリスナを実行しているマシンと同じマシン上で実行
されることである。プラグイン拡張によって実行されるタスクは他のマシンに負
荷を転嫁することができないため、プラグインによるアプローチのスケーラビリ
ティ(scalability)は大幅に制限される。 背景および、この発明の実施例により解決される課題についてのさらなる詳細
は、ナイジェル・エドワーズ(Nigel Edwards)およびオーエン・リーズ(Owen
Rees)による「安全性の高いウェブサーバおよびゲートウェイ」(“High secur
ity Web servers and gateways” COMPUTER NETWORKS AND ISDN SYSTEMS, 29, (
1997) 927-938.)と題された論文に記載されている。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0062
【補正方法】変更
【補正内容】
【0062】 名称=C1 最小インスタンス=10 最大インスタンス=50 ホストマシン=M1、M2、M3 アイドルタイム=30秒 このメタデータに基づいて、カートリッジC1が初めに登録される際に、リソ
ースマネージャ254はC1の10のインスタンスをイニシエートさせる。リソ
ースマネージャ254はラベルM1、M2およびM3に関連付けられるマシン上
の10のインスタンスをイニシエートすることになる。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0119
【補正方法】変更
【補正内容】
【0119】 前述の明細書において、この発明をその特定の実施例に関連して説明した。し
かしながら、この発明のより幅の広い範囲から逸脱することなくさまざまな修正
および変更を行なうことができることが明らかになるであろう。したがって、明
細書および図面は限定的な意味ではなく例示的な意味で考慮されるべきである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SZ,UG,ZW),EA(AM ,AZ,BY,KG,KZ,MD,RU,TJ,TM) ,AL,AM,AT,AU,AZ,BA,BB,BG, BR,BY,CA,CH,CN,CZ,DE,DK,E E,ES,FI,GB,GD,GE,GH,GM,HR ,HU,ID,IL,IS,JP,KE,KG,KR, KZ,LC,LK,LR,LS,LT,LU,LV,M D,MG,MK,MN,MW,MX,NO,NZ,PL ,PT,RO,RU,SD,SE,SG,SI,SK, SL,TJ,TM,TR,TT,UA,UG,UZ,V N,YU,ZW (72)発明者 アナンド,マラ アメリカ合衆国、94301 カリフォルニア 州、パロ・アルト、フォレスト・アベニ ュ、501 (72)発明者 シャルマ,アンクール アメリカ合衆国、94002 カリフォルニア 州、ベルモント、オールド・カントリー・ ロード、951−2、ナンバー・365 (72)発明者 チェン,エレイン アメリカ合衆国、94063 カリフォルニア 州、レッドウッド・シティ、ブラッドフォ ード・ストリート、780、ナンバー・15 (72)発明者 ナコダ,シェザード アメリカ合衆国、94306 カリフォルニア 州、パロ・アルト、グラント・アベニュ、 455、ナンバー・14 Fターム(参考) 5B045 BB11 GG01 GG02 5B089 GA11 GB04 GB06 GB08 HA10 HB05 JA11 KA06 KB07 5B098 AA10 GA04 GA07 GC08 GD02 GD14 GD18 GD22 5K030 HA05 HB19 HD06 KA01 KA02 LE01 【要約の続き】 スパッチャ(214、220、226)からあるインス タンスに対するリクエストを受取ったことに応答して、 あるカートリッジ(260)のインスタンスを各ディス パッチャ(214、220、226)に割当てるよう構 成される。ディスパッチャ(214、220、226) は、リソースマネージャ(254)によってディスパッ チャ(214、220、226)に割当てられたインス タンスにマシン間通信(282)機構を介してメッセー ジを送るよう構成される。そのメッセージにより、イン スタンスがブラウザリクエストに関連するオペレーショ ンを行なうことになる。

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】 オペレーションを実行するための方法であって、ディスパッ
    チャを第1のマシン上で実行するステップと、 リソースマネージャを第2のマシン上で実行するステップと、 第1のメッセージをディスパッチャからリソースマネージャへ送るステップと
    を含み、第1のメッセージは前記オペレーションを行なうことのできるある特定
    のカートリッジを識別し、前記方法はさらに 第2のメッセージをリソースマネージャからディスパッチャへ送るステップを
    含み、第2のメッセージはある特定のカートリッジのある特定のインスタンスを
    識別し、ある特定のインスタンスは第3のマシン上で実行されており、前記方法
    はさらに 第3のメッセージをディスパッチャからある特定のインスタンスに送り、ある
    特定のインスタンスにオペレーションを実行させるようにするステップを含み、 第1のマシン、第2のマシンおよび第3のマシンのうちの少なくとも2つは別
    個のマシンである、方法。
  2. 【請求項2】 ブラウザがブラウザリクエストをウェブリスナに送るステッ
    プと、 ウェブリスナがブラウザリクエストをディスパッチャに渡すステップとをさら
    に含み、 ディスパッチャはウェブリスナからブラウザリクエストを受取ったことに応答
    して第1のメッセージを送る、請求項1に記載の方法。
  3. 【請求項3】 第1のマシンおよび第2のマシンは別個のマシンであり、 第1のメッセージをディスパッチャからリソースマネージャへ送る前記ステッ
    プは、第1のメッセージをディスパッチャからリソースマネージャへオブジェク
    トリクエストブローカを介して送ることによって行なわれ、 第2のメッセージをリソースマネージャからディスパッチャへ送る前記ステッ
    プは、第2のメッセージをリソースマネージャからディスパッチャへオブジェク
    トリクエストブローカを介して送ることによって行なわれる、請求項1に記載の
    方法。
  4. 【請求項4】 第2のマシンおよび第3のマシンは別個のマシンであり、 リソースマネージャが第1のメッセージを受取ったことに応答してリソースマ
    ネージャがある特定のインスタンスに第3のマシン上での実行を開始させるステ
    ップを含む、請求項1に記載の方法。
  5. 【請求項5】 リソースマネージャは、第1のメッセージを受取ったことに
    応答して以下のステップを行なうことによってどのある特定のインスタンスがオ
    ペレーションを行なうべきであるかを定め、前記以下のステップは ある特定のカートリッジのインスタンスで現在実行されており割当てされてい
    ないものがあるかどうかを判定するステップと、 ある特定のカートリッジのインスタンスのどれかが現在実行されており割当て
    されていない場合、現在実行されており割当てされていないインスタンスを前記
    第2のメッセージにおいて特定するステップと、 第1のメッセージにおいて特定されるある特定のカートリッジのインスタンス
    で現在実行されており割当てされていないものがない場合、ある特定のカートリ
    ッジの新しいインスタンスをイニシエートして前記新しいインスタンスを前記第
    2のメッセージにおいて特定するステップとを含む、請求項1に記載の方法。
  6. 【請求項6】 新しいインスタンスをイニシエートする前に、リソースマネ
    ージャは メタデータを調べて、前記ある特定のカートリッジを実行することのできる、
    前記第3のマシンを含む1組のマシンを定めるステップと、 前記第3のマシンを選択して前記ある特定のカートリッジの前記新しいインス
    タンスを実行するステップとを行なう、請求項5に記載の方法。
  7. 【請求項7】 前記ディスパッチャに割当てられたインスタンスのリストを
    前記ディスパッチャに維持させるステップと、 前記第2のメッセージを受取ったことに応答して、前記ディスパッチャにイン
    スタンスの前記リストを更新させて前記ある特定のインスタンスに対するエント
    リを含むようにさせるステップとをさらに含む、請求項1に記載の方法。
  8. 【請求項8】 インスタンスのリストは、前記リストにおけるインスタンス
    が現在ビジーであるかどうかを示すデータを含み、 前記第2のメッセージを送ることに応答して、ディスパッチャは前記ある特定
    のインスタンスに対する前記エントリにおいて前記ある特定のインスタンスがビ
    ジーであることを示し、 前記方法はさらに、ディスパッチャが前記第3のメッセージに応答して前記あ
    る特定のインスタンスから第4のメッセージを受取るステップを含み、 前記第4のメッセージを受取ったことに応答して、ディスパッチャは前記エン
    トリを更新して前記ある特定のインスタンスが現在ビジーでないことを示す、請
    求項7に記載の方法。
  9. 【請求項9】 ディスパッチャが、第2のカートリッジによって行なうべき
    第2のオペレーションを特定するブラウザリクエストを受取るステップと、 ディスパッチャがインスタンスの前記リストを調べてリストが現在ビジーでは
    ない前記第2のカートリッジのインスタンスに対するエントリを含むかどうかを
    判定するステップと、 リストが現在ビジーではない前記第2のカートリッジのインスタンスに対する
    エントリを含む場合、 ディスパッチャが前記ブラウザリクエストに応答して前記ある特定のインス
    タンスへ第5のメッセージを送り、前記ある特定のインスタンスに前記第2のオ
    ペレーションを行なわせるステップと、 前記エントリを更新して前記ある特定のインスタンスが現在ビジーであるこ
    とを示すステップとを行なうステップと、 リストが現在ビジーではない前記第2のカートリッジのインスタンスに対する
    エントリを含んでいない場合、第6のメッセージを前記リソースマネージャへ送
    り、前記リソースマネージャに前記第2のオペレーションを行なうための前記第
    2のカートリッジのインスタンスを示すようにさせるステップとをさらに含む、
    請求項8に記載の方法。
  10. 【請求項10】 前記ある特定のインスタンスが予め定められた長さの時間
    より長い間アイドル状態であった場合これを判定するステップと、 前記ある特定のインスタンスが予め定められた長さの時間より長い間アイドル
    状態であった場合に、前記ディスパッチャが前記ある特定のインスタンスを前記
    リソースマネージャに解放するステップとをさらに含む、請求項8に記載の方法
  11. 【請求項11】 オペレーションを実行するための1つ以上の命令シーケン
    スを担持するコンピュータ可読媒体であって、1つ以上のプロセッサによる1つ
    以上の命令シーケンスの実行により、1つ以上のプロセッサに ディスパッチャを第1のマシン上で実行するステップと、 リソースマネージャを第2のマシン上で実行するステップと、 第1のメッセージをディスパッチャからリソースマネージャへ送るステップと
    、当該第1のメッセージは前記オペレーションを行なうことのできるある特定の
    カートリッジを特定し、 第2のメッセージをリソースマネージャからディスパッチャへ送るステップと
    、当該第2のメッセージはある特定のカートリッジのある特定のインスタンスを
    特定し、当該ある特定のインスタンスは第3のマシン上で実行しており、 第3のメッセージをディスパッチャからある特定のインスタンスへ送り、ある
    特定のインスタンスにオペレーションを実行させるステップとを行なわせ、 第1のマシン、第2のマシンおよび第3のマシンのうちの少なくとも2つは別
    個のマシンである、コンピュータ可読媒体。
  12. 【請求項12】 ウェブリスナがブラウザから受取ったブラウザリクエスト
    をディスパッチャへ渡すステップを行なうための命令をさらに含み、 ディスパッチャはウェブリスナからブラウザリクエストを受取ったことに応答
    して第1のメッセージを送る、請求項11に記載のコンピュータ可読媒体。
  13. 【請求項13】 第1のマシンおよび第2のマシンは別個のマシンであり、 第1のメッセージをディスパッチャからリソースマネージャへ送る前記ステッ
    プは、第1のメッセージをディスパッチャからリソースマネージャへオブジェク
    トリクエストブローカを介して送ることによって行なわれ、 第2のメッセージをリソースマネージャからディスパッチャへ送る前記ステッ
    プは、第2のメッセージをリソースマネージャからディスパッチャへオブジェク
    トリクエストブローカを介して送ることによって行なわれる、請求項11に記載
    のコンピュータ可読媒体。
  14. 【請求項14】 第2のマシンおよび第3のマシンは別個のマシンであり、 リソースマネージャが第1のメッセージを受取ったことに応答してリソースマ
    ネージャがある特定のインスタンスに第3のマシン上で実行を開始させるステッ
    プを含む、請求項11に記載のコンピュータ可読媒体。
  15. 【請求項15】 リソースマネージャは、第1のメッセージを受取ったこと
    に応答して以下のステップを行なうことによってどのある特定のインスタンスが
    オペレーションを行なうべきであるかを判定し、前記以下のステップは ある特定のカートリッジのインスタンスで現在実行されており割当てされてい
    ないものがあるかどうかを判定するステップと、 ある特定のカートリッジのインスタンスで現在実行されており割当てされてい
    ないものがある場合、前記第2のメッセージにおいて、現在実行されており割当
    てされていないインスタンスを特定するステップと、 第1のメッセージにおいて特定されるある特定のカートリッジのインスタンス
    で現在実行されており割当てされていないものがない場合、ある特定のカートリ
    ッジの新しいインスタンスをイニシエートして前記新しいインスタンスを前記第
    2のメッセージにおいて特定するステップとを行なうことによって判定する、請
    求項11に記載のコンピュータ可読媒体。
  16. 【請求項16】 新しいインスタンスをイニシエートする前に、リソースマ
    ネージャは メタデータを調べて、前記ある特定のカートリッジを実行することのできる、
    前記第3のマシンを含む1組のマシンを定めるステップと、 前記第3のマシンを選択して前記ある特定のカートリッジの前記新しいインス
    タンスを実行するステップとを行なう、請求項15に記載のコンピュータ可読媒
    体。
  17. 【請求項17】 前記ディスパッチャに割当てられたインスタンスのリスト
    を前記ディスパッチャに維持させるステップと、 前記第2のメッセージを受取ったことに応答して、前記ディスパッチャにイン
    スタンスの前記リストを更新させて前記ある特定のインスタンスに対するエント
    リを含むようにさせるステップとを行なうための命令をさらに含む、請求項11
    に記載のコンピュータ可読媒体。
  18. 【請求項18】 コンピュータ可読媒体であって、 インスタンスのリストは、前記リスト内のインスタンスが現在ビジーであるか
    どうかを示すデータを含んでおり、 前記第2のメッセージを送ることに応答して、ディスパッチャは前記ある特定
    のインスタンスに対する前記エントリにおいて前記ある特定のインスタンスがビ
    ジーであることを示し、 前記コンピュータ可読媒体は、ディスパッチャが前記第3のメッセージに応答
    して前記ある特定のインスタンスから第4のメッセージを受取るステップを行な
    うための命令をさらに含み、 前記第4のメッセージを受取ったことに応答して、ディスパッチャが前記エン
    トリを更新して前記ある特定のインスタンスが現在ビジーではないことを示す、
    請求項17に記載のコンピュータ可読媒体。
  19. 【請求項19】 ディスパッチャが、第2のカートリッジによって行なうべ
    き第2のオペレーションを特定するブラウザリクエストを受取るステップと、 ディスパッチャがインスタンスの前記リストを調べて、リストが現在ビジーで
    はない前記第2のカートリッジのインスタンスに対するエントリを含んでいるか
    どうかを判定するステップと、 リストが現在ビジーではない前記第2のカートリッジのインスタンスに対する
    エントリを含んでいる場合、 ディスパッチャが前記ブラウザリクエストに応答して前記ある特定のインス
    タンスへ第5のメッセージを送り、前記ある特定のインスタンスに前記第2のオ
    ペレーションを行なわせるステップおよび 前記エントリを更新して前記ある特定のインスタンスが現在ビジーであるこ
    とを示すステップとを行なうステップと、 リストが現在ビジーではない前記第2のカートリッジのインスタンスに対する
    エントリを含んでいない場合、第6のメッセージを前記リソースマネージャに送
    り、前記リソースマネージャに前記第2のオペレーションを行なうべき前記第2
    のカートリッジのインスタンスを示させるステップとを行なうための命令をさら
    に含む、請求項18に記載のコンピュータ可読媒体。
  20. 【請求項20】 前記ある特定のインスタンスが予め定められた長さの時間
    より長い間アイドル状態であった場合これを判定するステップと、 前記ある特定のインスタンスが予め定められた長さの時間より長い間アイドル
    状態であった場合に、前記ディスパッチャが前記ある特定のインスタンスを前記
    リソースマネージャに解放するステップとを行なうための命令をさらに含む、請
    求項18に記載のコンピュータ可読媒体。
  21. 【請求項21】 ブラウザリクエストに関連のあるオペレーションを行なう
    ためのシステムであって、 複数のウェブリスナに結合される複数のディスパッチャを含み、前記複数のデ
    ィスパッチャの各ディスパッチャは前記複数のウェブリスナの対応するウェブリ
    スナから前記対応するウェブリスナが受取ったブラウザリクエストを受取り、前
    記システムはさらに マシン間通信機構を介して前記複数のディスパッチャに結合されるリソースマ
    ネージャを含み、前記マシン間通信機構は前記複数のディスパッチャが存在する
    マシンにかかわらず前記リソースマネージャが前記複数のディスパッチャと通信
    できるようにし、前記リソースマネージャは、前記ディスパッチャからインスタ
    ンスに対するリクエストを受取ったことに応答して前記複数のディスパッチャの
    各ディスパッチャに前記複数のカートリッジのうちのあるカートリッジのインス
    タンスを割当てるよう構成されており、 前記複数のディスパッチャは、前記リソースマネージャによって前記ディスパ
    ッチャに割当てられるインスタンスへメッセージを前記マシン間通信機構を介し
    て送るよう構成されており、前記マシン間通信機構により、前記インスタンスが
    存在するマシンにかかわらず前記複数のディスパッチャが前記インスタンスと通
    信することができ、前記メッセージは前記インスタンスに前記ブラウザリクエス
    トと関連するオペレーションを行なわせる、システム。
  22. 【請求項22】 前記マシン間通信機構を介して前記複数のディスパッチャ
    に結合される仮想パスマネージャをさらに含み、前記仮想パスマネージャは複数
    のカートリッジのどれが前記ブラウザリクエストに関連付けられているかを前記
    ディスパッチャに示す、請求項21に記載のシステム。
  23. 【請求項23】 前記マシン間通信機構はオブジェクトリクエストブローカ
    である、請求項21に記載のシステム。
  24. 【請求項24】 リソースマネージャはさらに、前記ディスパッチャからの
    メッセージに応答してカートリッジの新しいインスタンスをイニシエートするよ
    う構成されている、請求項21に記載のシステム。
  25. 【請求項25】 各カートリッジに対して、前記リソースマネージャは、実
    行しているインスタンスの数を予め定められた最小数と予め定められた最大数と
    の間で維持するよう構成される、請求項24に記載のシステム。
  26. 【請求項26】 前記複数のディスパッチャの各ディスパッチャは、前記リ
    ソースマネージャによって前記ディスパッチャに割当てられているインスタンス
    のリストを維持するよう構成される、請求項21に記載のシステム。
  27. 【請求項27】 前記複数のディスパッチャのうちのあるディスパッチャが
    ある特定のカートリッジに関連付けられるブラウザリクエストを受取り、かつそ
    のディスパッチャが維持するインスタンスのリストが、そのある特定のカートリ
    ッジのインスタンスが現在利用可能であることを示している場合、ディスパッチ
    ャはリソースマネージャからのブラウザリクエストに対するインスタンスをリク
    エストすることなくインスタンスにメッセージを送る、請求項21に記載のシス
    テム。
JP2000519523A 1997-10-31 1998-10-26 分散ウェブアプリケーションサーバ Expired - Lifetime JP3853592B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/962,485 1997-10-31
US08/962,485 US6247056B1 (en) 1997-02-03 1997-10-31 Method and apparatus for handling client request with a distributed web application server
PCT/US1998/022656 WO1999023784A2 (en) 1997-10-31 1998-10-26 Distributed web application server

Publications (2)

Publication Number Publication Date
JP2001522113A true JP2001522113A (ja) 2001-11-13
JP3853592B2 JP3853592B2 (ja) 2006-12-06

Family

ID=25505934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000519523A Expired - Lifetime JP3853592B2 (ja) 1997-10-31 1998-10-26 分散ウェブアプリケーションサーバ

Country Status (8)

Country Link
US (1) US6247056B1 (ja)
EP (1) EP1027796B1 (ja)
JP (1) JP3853592B2 (ja)
AU (1) AU742156B2 (ja)
CA (1) CA2308782C (ja)
DE (1) DE69824879T2 (ja)
HK (1) HK1029686A1 (ja)
WO (1) WO1999023784A2 (ja)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760746B1 (en) * 1999-09-01 2004-07-06 Eric Schneider Method, product, and apparatus for processing a data request
JP4634547B2 (ja) * 1998-06-30 2011-02-16 株式会社東芝 リアルタイム情報配信方法
US6163794A (en) * 1998-10-23 2000-12-19 General Magic Network system extensible by users
US6353846B1 (en) * 1998-11-02 2002-03-05 Harris Corporation Property based resource manager system
US6691165B1 (en) * 1998-11-10 2004-02-10 Rainfinity, Inc. Distributed server cluster for controlling network traffic
US6687900B1 (en) * 1998-11-19 2004-02-03 X/Net Associates, Inc. Method and system for loading instructions into an executing process
US6631512B1 (en) * 1999-01-15 2003-10-07 Gillis E Onyeabor Method and system for database-driven, scalable web page development, deployment-download, and execution
US6463459B1 (en) * 1999-01-22 2002-10-08 Wall Data Incorporated System and method for executing commands associated with specific virtual desktop
US9141717B2 (en) 1999-03-22 2015-09-22 Esdr Network Solutions Llc Methods, systems, products, and devices for processing DNS friendly identifiers
US6801949B1 (en) 1999-04-12 2004-10-05 Rainfinity, Inc. Distributed server cluster with graphical user interface
US7346695B1 (en) 2002-10-28 2008-03-18 F5 Networks, Inc. System and method for performing application level persistence
US7287084B1 (en) 1999-07-15 2007-10-23 F5 Networks, Inc. Enabling encryption of application level persistence between a server and a client
US6970933B1 (en) 1999-07-15 2005-11-29 F5 Networks, Inc. Enabling application level persistence between a server and another resource over a network
US7337209B1 (en) 2000-04-28 2008-02-26 Sheer Networks, Inc. Large-scale network management using distributed autonomous agents
US6941362B2 (en) * 2000-04-28 2005-09-06 Sheer Networks Inc. Root cause analysis in a distributed network management architecture
CA2368627A1 (en) * 2000-04-28 2001-11-08 Sharon Barkai Network management method and system
US7139805B2 (en) * 2000-05-30 2006-11-21 Hewlett-Packard Development Company, L.P. Scalable java servers for network server applications
WO2002009355A2 (en) * 2000-07-24 2002-01-31 Trendium, Inc. Network models, methods, and computer program products for managing a service independent of the underlying network technology
IL144709A (en) 2000-08-03 2010-11-30 Cisco Tech Inc Path discovery in a distributed network management architecture
US7032002B1 (en) * 2000-09-06 2006-04-18 Xanboo, Inc. Service broker for processing data from a data network
US7814198B2 (en) * 2007-10-26 2010-10-12 Microsoft Corporation Model-driven, repository-based application monitoring system
US6609126B1 (en) 2000-11-15 2003-08-19 Appfluent Technology, Inc. System and method for routing database requests to a database and a cache
US7657590B2 (en) * 2001-02-07 2010-02-02 Ubs Ag Load balancing system and method
US7000008B2 (en) * 2001-04-16 2006-02-14 Sun Microsystems, Inc. Method, system, and program for providing data updates to a page including multiple regions of dynamic content
US20030208527A1 (en) * 2001-07-20 2003-11-06 Lino Lglesais Method for smart device network application infrastructure (SDNA)
US7444410B1 (en) 2002-02-15 2008-10-28 Oracle International Corporation Application platform execution environment
US7194473B1 (en) 2002-02-15 2007-03-20 Oracle International Corporation Application platform development environment
US8020162B2 (en) * 2002-07-19 2011-09-13 International Business Machines Corporation Employing a resource broker in managing workloads of a peer-to-peer computing environment
US7430755B1 (en) 2002-09-03 2008-09-30 Fs Networks, Inc. Method and system for providing persistence in a secure network access
US7370336B2 (en) * 2002-09-16 2008-05-06 Clearcube Technology, Inc. Distributed computing infrastructure including small peer-to-peer applications
US7860957B1 (en) * 2002-12-20 2010-12-28 Cisco Technology, Inc. System and method for managing network services in a distributed system
US7171470B2 (en) * 2003-02-20 2007-01-30 International Business Machines Corporation Grid service scheduling of related services using heuristics
US7516195B2 (en) * 2003-04-29 2009-04-07 International Business Machines Corporation Method of handling a web service call
US7568025B2 (en) * 2003-06-27 2009-07-28 Bank Of America Corporation System and method to monitor performance of different domains associated with a computer system or network
US9525566B2 (en) * 2003-07-31 2016-12-20 Cloudsoft Corporation Limited Self-managed mediated information flow
US8307112B2 (en) 2003-07-31 2012-11-06 Cloudsoft Corporation Limited Mediated information flow
US7543041B2 (en) * 2003-11-12 2009-06-02 International Business Machines Corporation Pattern based web services using caching
US7289989B2 (en) * 2003-11-12 2007-10-30 International Business Machines Corporation Pattern based web services
US7404189B2 (en) 2003-12-30 2008-07-22 International Business Machines Corporation Scheduler supporting web service invocation
EP1569106B1 (en) 2003-12-30 2015-12-30 International Business Machines Corporation A scheduler supporting web service invocation
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
EP2341431A1 (en) 2004-03-13 2011-07-06 Adaptive Computing Enterprises, Inc. System and method of providing a self-optimizing reservation in space of compute resources
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7490105B2 (en) * 2004-09-15 2009-02-10 International Business Machines Corporation Externalized selection middleware for variability management
US20060080273A1 (en) * 2004-10-12 2006-04-13 International Business Machines Corporation Middleware for externally applied partitioning of applications
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US20060168268A1 (en) * 2004-12-02 2006-07-27 International Business Machines Corporation Specific method of setting transport-specific properties from transport-agnostic clients
US7711693B2 (en) * 2004-12-03 2010-05-04 Oracle International Corporation Deployment of life-cycle model for LDAP applications
US20080022004A1 (en) * 2004-12-04 2008-01-24 Electronics And Telecommunications Research Institute Method And System For Providing Resources By Using Virtual Path
US8370448B2 (en) 2004-12-28 2013-02-05 Sap Ag API for worker node retrieval of session request
US7539821B2 (en) 2004-12-28 2009-05-26 Sap Ag First in first out eviction implementation
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US8204931B2 (en) 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US7971001B2 (en) 2004-12-28 2011-06-28 Sap Ag Least recently used eviction implementation
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9015324B2 (en) 2005-03-16 2015-04-21 Adaptive Computing Enterprises, Inc. System and method of brokering cloud computing resources
CA2601384A1 (en) 2005-03-16 2006-10-26 Cluster Resources, Inc. Automatic workload transfer to an on-demand center
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US20060224773A1 (en) * 2005-03-31 2006-10-05 International Business Machines Corporation Systems and methods for content-aware load balancing
US8782120B2 (en) 2005-04-07 2014-07-15 Adaptive Computing Enterprises, Inc. Elastic management of compute resources between a web server and an on-demand compute environment
EP3203374B1 (en) 2005-04-07 2021-11-24 III Holdings 12, LLC On-demand access to compute resources
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
GB2426161A (en) * 2005-05-13 2006-11-15 Onshare Ltd Networking via a communication layer
US7689660B2 (en) 2005-06-09 2010-03-30 Sap Ag Application server architecture
US7966412B2 (en) 2005-07-19 2011-06-21 Sap Ag System and method for a pluggable protocol handler
US20070078927A1 (en) * 2005-09-12 2007-04-05 Microsoft Corporation Server-side service framework
US20070156907A1 (en) 2005-12-30 2007-07-05 Galin Galchev Session handling based on shared session information
US8707323B2 (en) 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
GB2439195B8 (en) * 2006-06-12 2011-01-19 Enigmatec Corp Ltd Self-managed distributed mediation networks.
US8566452B1 (en) 2006-08-03 2013-10-22 F5 Networks, Inc. Intelligent HTTP based load-balancing, persistence, and application traffic management of SSL VPN tunnels
US8020149B2 (en) 2006-08-04 2011-09-13 Apple Inc. System and method for mitigating repeated crashes of an application resulting from supplemental code
GB0619644D0 (en) * 2006-10-05 2006-11-15 Ibm Data processing system and method of handling requests
US8024396B2 (en) * 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US8239505B2 (en) * 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US7970892B2 (en) * 2007-06-29 2011-06-28 Microsoft Corporation Tuning and optimizing distributed systems with declarative models
US8230386B2 (en) * 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US7926070B2 (en) * 2007-10-26 2011-04-12 Microsoft Corporation Performing requested commands for model-based applications
US8099720B2 (en) 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US8181151B2 (en) * 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous applications
US7974939B2 (en) * 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US20090112932A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Visualizing key performance indicators for model-based applications
US8225308B2 (en) * 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
US20090113292A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Flexibly editing heterogeneous documents
US20090177986A1 (en) * 2008-01-07 2009-07-09 Microsoft Corporation Third party in-page application platform
US8112771B2 (en) * 2008-01-30 2012-02-07 Microsoft Corporation Managing component programs within a service application
TW201009698A (en) * 2008-08-19 2010-03-01 Arcadyan Technology Corp Method for improving the accessing efficiency of embedded web page
US8291418B2 (en) * 2008-10-02 2012-10-16 International Business Machines Corporation Sub-dispatching application server
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US8984109B2 (en) 2010-11-02 2015-03-17 International Business Machines Corporation Ensemble having one or more computing systems and a controller thereof
US9253016B2 (en) 2010-11-02 2016-02-02 International Business Machines Corporation Management of a data network of a computing environment
US9081613B2 (en) 2010-11-02 2015-07-14 International Business Machines Corporation Unified resource manager providing a single point of control
US8966020B2 (en) 2010-11-02 2015-02-24 International Business Machines Corporation Integration of heterogeneous computing systems into a hybrid computing system
US8959220B2 (en) 2010-11-02 2015-02-17 International Business Machines Corporation Managing a workload of a plurality of virtual servers of a computing environment
US10965780B2 (en) * 2018-01-18 2021-03-30 Bevara Technologies, Llc Browser navigation for facilitating data access
US11734058B2 (en) * 2020-10-27 2023-08-22 Salesforce, Inc. Systems and methods of a virtualized management operation engine of a distributed system

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361350A (en) 1991-12-12 1994-11-01 International Business Machines Corporation Object oriented method management system and software for managing class method names in a computer system
WO1994001820A1 (en) 1992-07-01 1994-01-20 Telefonaktiebolaget Lm Ericsson System for implementation-independent interface specification
JP3365576B2 (ja) 1993-06-14 2003-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトの実行方法および装置
CA2168762C (en) 1993-08-03 2000-06-27 Paul Butterworth Flexible multi-platform partitioning for computer applications
US5715314A (en) 1994-10-24 1998-02-03 Open Market, Inc. Network sales system
US5623656A (en) 1994-12-15 1997-04-22 Lucent Technologies Inc. Script-based data communication system and method utilizing state memory
US5822585A (en) 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
US5907675A (en) 1995-03-22 1999-05-25 Sun Microsystems, Inc. Methods and apparatus for managing deactivation and shutdown of a server
US5761684A (en) 1995-05-30 1998-06-02 International Business Machines Corporation Method and reusable object for scheduling script execution in a compound document
US5737592A (en) 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5737607A (en) 1995-09-28 1998-04-07 Sun Microsystems, Inc. Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats
US5774670A (en) 1995-10-06 1998-06-30 Netscape Communications Corporation Persistent client state in a hypertext transfer protocol based client-server system
US5706442A (en) 1995-12-20 1998-01-06 Block Financial Corporation System for on-line financial services using distributed objects
US5745681A (en) 1996-01-11 1998-04-28 Sun Microsystems, Inc. Stateless shopping cart for the web
US5761673A (en) 1996-01-31 1998-06-02 Oracle Corporation Method and apparatus for generating dynamic web pages by invoking a predefined procedural package stored in a database
US5859971A (en) 1996-02-15 1999-01-12 International Business Machines Corp. Differencing client/server communication system for use with CGI forms
US5862325A (en) 1996-02-29 1999-01-19 Intermind Corporation Computer-based communication system and method using metadata defining a control structure
WO1997040457A2 (en) 1996-04-19 1997-10-30 Intergraph Corporation System and method for data access
US5835712A (en) 1996-05-03 1998-11-10 Webmate Technologies, Inc. Client-server system using embedded hypertext tags for application and database development
US5859972A (en) 1996-05-10 1999-01-12 The Board Of Trustees Of The University Of Illinois Multiple server repository and multiple server remote application virtual client computer
US5864871A (en) 1996-06-04 1999-01-26 Multex Systems Information delivery system and method including on-line entitlements
US5848246A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US5857191A (en) 1996-07-08 1999-01-05 Gradient Technologies, Inc. Web application server with secure common gateway interface
US5860072A (en) 1996-07-11 1999-01-12 Tandem Computers Incorporated Method and apparatus for transporting interface definition language-defined data structures between heterogeneous systems
US5897622A (en) 1996-10-16 1999-04-27 Microsoft Corporation Electronic shopping and merchandising system
US5796393A (en) 1996-11-08 1998-08-18 Compuserve Incorporated System for intergrating an on-line service community with a foreign service
US5826239A (en) 1996-12-17 1998-10-20 Hewlett-Packard Company Distributed workflow resource management system and method
US5864866A (en) 1997-03-26 1999-01-26 International Business Machines Corporation Apparatus and method for providing externalization in an object-oriented environment

Also Published As

Publication number Publication date
JP3853592B2 (ja) 2006-12-06
CA2308782C (en) 2009-06-23
WO1999023784A3 (en) 1999-07-15
HK1029686A1 (en) 2001-04-06
EP1027796B1 (en) 2004-06-30
DE69824879T2 (de) 2005-08-25
DE69824879D1 (de) 2004-08-05
US6247056B1 (en) 2001-06-12
WO1999023784A2 (en) 1999-05-14
WO1999023784B1 (en) 1999-08-26
WO1999023784A9 (en) 2000-07-20
CA2308782A1 (en) 1999-05-14
EP1027796A2 (en) 2000-08-16
AU1278999A (en) 1999-05-24
AU742156B2 (en) 2001-12-20

Similar Documents

Publication Publication Date Title
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
JP2001522114A (ja) 分散を意識させない態様で分散ソフトウェア開発を容易にするための方法およびシステム
JP3853593B2 (ja) ウェブアプリケーションサーバにおいて拡張可能な認証機構を実現するための方法および装置
JP4729172B2 (ja) 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置
EP0956687B1 (en) Web request broker controlling multiple processes
US6710786B1 (en) Method and apparatus for incorporating state information into a URL
US6225995B1 (en) Method and apparatus for incorporating state information into a URL
EP1235150B1 (en) Apparatus and method for processing servlets
US6944666B2 (en) Mechanism for enabling customized session managers to interact with a network server
JP2002505466A (ja) 遠隔メソッド呼出し方法及び装置
JP2006318499A (ja) サーバとクライアントノードとの間の接続を管理するシステムおよび方法
JP2002505491A (ja) 分散形システムにおける動的情報証明のための装置及び方法
JP2002505463A (ja) 分散システム内の遠隔処理呼出に関連する処理をおこなうためのダウンロード可能なスマートプロキシ
JP2002505478A (ja) 分散形システムにおけるイベント通知のためのオブジェクトの据置き復元及び遠隔ローディング

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20050913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051122

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060217

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060425

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: 20060829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060906

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100915

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110915

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120915

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130915

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term