JP2001522114A - 分散を意識させない態様で分散ソフトウェア開発を容易にするための方法およびシステム - Google Patents

分散を意識させない態様で分散ソフトウェア開発を容易にするための方法およびシステム

Info

Publication number
JP2001522114A
JP2001522114A JP2000519524A JP2000519524A JP2001522114A JP 2001522114 A JP2001522114 A JP 2001522114A JP 2000519524 A JP2000519524 A JP 2000519524A JP 2000519524 A JP2000519524 A JP 2000519524A JP 2001522114 A JP2001522114 A JP 2001522114A
Authority
JP
Japan
Prior art keywords
cartridge
message
execution engine
dispatcher
request
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.)
Pending
Application number
JP2000519524A
Other languages
English (en)
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 JP2001522114A publication Critical patent/JP2001522114A/ja
Pending 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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • 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/54Interprogram communication
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 ブラウザ(202、204、206)リクエストと関連する動作を行なうためのシステム、方法およびコンピュータ可読媒体を提供する。システムは複数のウェブリスナ(210、216、222)に結合される複数のディスパッチャ(214、220、226)を含む。ディスパッチャ(214、220、226)の各々は、対応するウェブリスナ(210、216、222)が受取ったブラウザリクエストを対応するウェブリスナ(210、216、222)から受取る。ディスパッチャ(214、220、226)は、カートリッジインスタンス(260)へマシン間通信機構(282)を介してメッセージを送るよう構成される。メッセージにより、カートリッジインスタンス(260)はブラウザリクエストに関連する動作を行なうことになる。各カートリッジインスタンス(260)にはカートリッジ実行エンジン(228、232、236)およびカートリッジ(230、234、238)が含まれる。カートリッジ実行エンジン(228、232、236)はディスパッチャ(214、220、226)とのすべてのマシン間通信を扱い、カートリッジのアプリケーションプログラミングインターフェイスを呼出すことによってリクエストをカートリッジ(230、234、238)に渡す。したがって、カートリッジはマシン間通信の複雑さから隔離されており、よって分散を意識させることなく高度に分散化されたシステムにおいて用いることができる。

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のプロセスが開始され終了されることとなる。CG
Iではプロセスの開始に関連するオーバーヘッドを避けるため、第1の10のリ
クエストに対して用いられた10のプロセスと同じものを第2の10のリクエス
トを処理するのに用いることが許されていない。
【0008】 リクエストに対する動的な応答を行なうための代替的なアプローチは「プラグ
イン」拡張を用いることである。プラグイン拡張はサーバに送られたメッセージ
をさまざまな段階で代行受信して特定のユーザリクエストに対してアプリケーシ
ョンに特有の処理を行なう。サーバ側のプラグインはリスナおよび他のすべての
サーバ側プラグインと同じアドレス空間において実行される。よって、プラグイ
ンを設計するアプリケーション開発者はリスナの下位レベルのオペレーションの
詳細に精通していなければならない。さらに、リスナと同じアドレス空間でプラ
グインを実行することによりリスナを安全性および安定性の面で危険にさらすこ
ととなる。障害のあるプラグインにより、他のプラグインまたはリスナそのもの
がクラッシュしたり、または予測できない態様で動作してしまうこともある。
【0009】 プラグインアプローチの第2の問題は、CGIアプローチと同様に、すべての
プラグイン動作がリスナを実行しているマシンと同じマシン上で実行されること
である。プラグイン拡張によって実行されるタスクは他のマシンに負荷を転嫁す
ることができないため、プラグインによるアプローチのスケーラビリティ(scal
ability)は大幅に制限される。
【0010】
【発明の概要】
オペレーションを実行しているモジュールに分散を意識させる必要のない態様
で分散環境においてオペレーションを実行するための方法およびシステムが提供
される。分散環境により、ブラウザリクエスト内で特定されるオペレーションを
実行するプロセス(「カートリッジインスタンス」)が、そのリクエストを受取
るリスナおよびそのリクエストを発行するブラウザとは異なるマシン上で実行で
きる。カートリッジインスタンスがリスナとは異なるマシン上にあるため、リス
ナは障害のあるカートリッジインスタンスからよりよく隔離されることとなり、
システムの信頼性および安全性が向上する。さらに、リスナが実行されるマシン
と同じマシンでなく、数多くのマシン間でカートリッジインスタンスを実行する
処理の負担を分散することによってシステムのスケーラビリティが大幅に増加す
る。複数のマシンにわたってカートリッジインスタンスの実行を分散できること
から、いつどこで新しいカートリッジインスタンスを生じさせるかを決定するの
に数多くのタイプの負荷の最適配分の技法を用いることができる。
【0011】 カートリッジ開発者にはほとんど負担がかかることなく、システムの分散され
た性質から得られる恩恵を享受できる。より明確には、カートリッジはそれらが
分散システムの一部として動作しているという事実を「意識する」必要がない。
なぜなら、カートリッジはここでカートリッジ実行エンジンと称するモジュール
によって分散システムの複雑さから隔離されるためである。このようにして達成
される隔離により、カートリッジ開発者らはマシン間通信の複雑さではなくカー
トリッジが目的とする課題に専念することができる。
【0012】 この発明の一局面によれば、ディスパッチャが第1のマシン上で実行される。
カートリッジ実行エンジンは第1のマシンとは異なる第2のマシン上で実行され
る。ディスパッチャはオペレーションの実行をリクエストする第1のメッセージ
をウェブリスナから受取る。この第1のメッセージはウェブリスナがブラウザか
らブラウザリクエストを受取ったことに応答してディスパッチャに送られたもの
である。
【0013】 この第1のメッセージに応答して、ディスパッチャはカートリッジ実行エンジ
ンに第2メッセージを送る。この第2のメッセージに応答して、カートリッジ実
行エンジンは第2のマシン上で実行されているカートリッジに第3のメッセージ
をわたす。この第3のメッセージを受けたことに応答して、カートリッジはオペ
レーションを実行する。カートリッジへのリクエストはカートリッジ実行エンジ
ンを介して送られカートリッジ実行エンジンはカートリッジと同じマシン上に存
在するため、カートリッジ実行エンジンによりカートリッジはマシン間通信をサ
ポートすることの複雑さから効果的に隔離される。
【0014】 この発明の別の局面によれば、ブラウザリクエストと関連付けられるオペレー
ションを実行するためのシステムが提供される。このシステムは複数のウェブリ
スナに結合される複数のディスパッチャ、マシン間通信機構および複数のカート
リッジを含む。カートリッジは標準カートリッジインターフェイスを介して呼出
されるが、種々のオペレーションを行なう。
【0015】 このシステムはまた、マシン間通信機構を介して複数のディスパッチャと通信
し、かつ標準カートリッジインターフェイスを介して複数のカートリッジ内のル
ーチンに対して呼出を行なうことによって、複数のカートリッジと通信する複数
のカートリッジ実行エンジンを含む。各ディスパッチャは、特定のカートリッジ
があるオペレーションを行なうことを必要とするブラウザリクエストをウェブリ
スナが受取ったことに応答して、複数のカートリッジ実行エンジンのうちの特定
のカートリッジ実行エンジンに対してマシン間通信機構を介して第1のメッセー
ジを送るよう構成される。この特定のカートリッジ実行エンジンはこの第1のメ
ッセージに応答して、オペレーションを行なう特定のカートリッジ内のルーチン
を標準カートリッジインターフェイスを介して呼出すように構成される。
【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内の典型的なオペレーションには一般的に以下の段階が含まれ
る。 ブラウザがインターネット208にわたってリクエストを送信する。
【0032】 リスナがそのリクエストを受取ってトランスポートアダプタを介してディスパ
ッチャに渡す。
【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番目の位置にあるマシンが既にN番目のマシンで許容されるその最大数
のインスタンスを実行している場合にだけカートリッジのインスタンスを実行す
るのに用いられる。
【0067】 各々の特定のマシンの最大および実際の数のインスタンスの代わりに、または
それに加えて、リソースマネージャ254はまた、さまざまなシステムパラメー
タを考慮してどのマシンがカートリッジの新しいインスタンスをホストすべきで
あるかを定めてもよい。そのようなパラメータにはたとえば、マシン上の使用さ
れていないメモリの量、そのマシン上で現在実行されているプロセッサの総数、
マシンのタイプなどが含まれていてもよい。各々の可能なマシンに対し、リソー
スマネージャ254はこれらのパラメータの加重平均を定める。加重平均が最も
高いマシンが新しいカートリッジインスタンスをホストするよう選択される。
【0068】 カートリッジインスタンスステータスの管理 この発明の一実施例によれば、リソースマネージャ254は作られたカートリ
ッジインスタンスを管理するためステート情報を維持する。ステート情報には、
インスタンスを識別し、そのインスタンスを実行するマシンを識別し、そのイン
スタンスが割当てられたリスナを識別するデータが含まれる。
【0069】 図5には、このステート情報を蔵置するためリソースマネージャ254が維持
し得る表500が示される。表500には、インスタンス列502、カートリッ
ジ列504、リスナ列506およびマシン列508が含まれる。表500の各行
は別個のカートリッジインスタンスに対応する。所与のカートリッジインスタン
スに対する行内で、カートリッジ列504はカートリッジインスタンスに関連づ
けられるカートリッジを識別し、インスタンス列502はそのカートリッジイン
スタンスのインスタンス番号を示す。たとえば、行510はカートリッジC1の
インスタンスに対応する。このため、行510のカートリッジ列504はカート
リッジC1を示す。行510のインスタンス列502は行510に関連づけられ
るカートリッジインスタンスがカートリッジC1のインスタンス1であることを
示す。
【0070】 リスナ列506は、ある行に関連づけられるカートリッジインスタンスが割当
てられたリスナを示す。マシン列508は、ある行に関連づけられるカートリッ
ジインスタンスが実行されているマシンを示す。たとえば、行510に関連づけ
られるカートリッジインスタンスはリスナ210に割当てられており、マシンM
1上で実行されている。
【0071】 リソースマネージャ254と同様に、各ディスパッチャはそのディスパッチャ
が設けられているリスナに割当てられたカートリッジインスタンスに対するステ
ート情報を維持する。このようなステート情報はたとえば、図4に示されるよう
な表400において維持されてもよい。表500と同様に、表400にはそれぞ
れインスタンス番号およびカートリッジ識別子を保持するインスタンス列402
およびカートリッジ列404が含まれる。しかしながら、表500ではリソース
マネージャ254によって割当てられるすべてのカートリッジインスタンスに対
して1つずつエントリが含まれるのに対し、表400では特定のリスナに割当て
られたカートリッジインスタンスに対するエントリしか含まれない。たとえば、
表400は、表500に列挙されたカートリッジインスタンスのうちリスナ20
0に割当てられたもののみに対するエントリを含む。
【0072】 インスタンス列402およびカートリッジ列404に加えて、表400にはス
テータス列406が含まれる。各行に対し、ステータス列406はその行に関連
づけられるインスタンスのステータスを示す値を保持する。たとえば、行408
のステータス列406はカートリッジC1にインスタンス1が現在ビジーである
ことを示している。例示される実施例では、ステータス列406はカートリッジ
インスタンスがBUSYまたはFREEのいずれかであることを示すフラグを保
持する。カートリッジステータスの重要性について、リソースマネージャ254
とディスパッチャ214および220とのオペレーションに関連して以下に説明
する。
【0073】 ディスパッチャとリソースマネージャとの相互作用 上述のように、ディスパッチャは特定のカートリッジに変更されたブラウザリ
クエストを送る必要がある際にリソースマネージャ254と通信する。この発明
の一実施例によれば、ディスパッチャはまず、適当なカートリッジのインスタン
スが(1)これに既に割当てられているかどうか、また(2)新しい変更された
ブラウザリクエストを処理するのに利用可能であるかどうかを判定する。適当な
カートリッジインスタンスがディスパッチャに既に割当てられており新しい変更
されたブラウザリクエストを処理するのに現在利用可能である場合、ディスパッ
チャはリソースマネージャ254とさらに通信することなく、変更されたブラウ
ザリクエストをカートリッジインスタンスへ転送する。
【0074】 たとえば、仮想パスマネージャ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に変える。
【0075】 リスナに現在利用可能である適当なカートリッジインスタンスが既に割当てら
れていない場合、カートリッジに関連づけられるディスパッチャはリソースマネ
ージャ254からのカートリッジインスタンスをリクエストする。必要とされる
カートリッジのインスタンスが利用可能でなく、かつ必要とされるカートリッジ
の既存のインスタンスの数が最大数より下であることをリソースマネージャ25
4が判定した場合、リソースマネージャ254は新しいカートリッジをイニシエ
ートする。新しいカートリッジをイニシエートする際に、リソースマネージャ2
54は表500に新しいカートリッジインスタンスのためのエントリを挿入する
【0076】 たとえば、カートリッジC3が処理しなければならないブラウザリクエストを
リスナ210が受取ったと仮定する。また、カートリッジC3のインスタンス3
がまだイニシエートされていないものと仮定する。こうした条件の下では、ディ
スパッチャ214はリソースマネージャ254にカートリッジC3のインスタン
スに対するハンドルを求めるリクエストを送る。このリクエストに応答して、リ
ソースマネージャ254はマシンM3上でカートリッジC3のインスタンス3を
イニシエートする。さらに、リソースマネージャ254は行512に見られるエ
ントリを表500に挿入する。
【0077】 表500にカートリッジC3のインスタンス3のための行512を挿入した後
、リソースマネージャ254はディスパッチャ214に新しく作られたインスタ
ンスに対するハンドルを送り返す。このハンドルを受取ったことに応答して、デ
ィスパッチャ214はそのステータス表400に新しいインスタンスのためのエ
ントリ(行412)を挿入する。ディスパッチャ214はそこで、変更されたブ
ラウザリクエストをカートリッジC3のインスタンス3に送信する。
【0078】 カートリッジインスタンスの解放 この発明の一実施例によれば、リスナはカートリッジインスタンスが未処理の
ブラウザリクエストに応答し終わった際にカートリッジインスタンスの所有権を
自動的に解放することはない。たとえば、カートリッジC3のインスタンス3が
変更されたブラウザリクエストを受取り、その変更されたブラウザリクエストを
処理して、ディスパッチャ214に応答を送り返すと想定する。ディスパッチャ
214はその応答をリスナ210に渡し、これがブラウザリクエストを発行した
ブラウザに送り返されるようにする。
【0079】 この時点で、リスナ210はカートリッジC3のインスタンス3の所有権をも
はや必要としない。しかしながら、カートリッジC3のインスタンス3の所有権
をリソースマネージャ254に戻す代わりに、ディスパッチャ214は単に行4
12のステータス列406をBUSYからFREEに変える。
【0080】 行412のステータス列406の値をFREEに変えることによって、カート
リッジC3のインスタンス3がもはやリクエストを処理しておらず、よって後続
のリクエストを処理する準備ができていることが示される。しかしながら、カー
トリッジC3のインスタンス3が利用可能であることを示す表400はディスパ
ッチャ214によって局所的に維持されているため、カートリッジC3のインス
タンス3はリスナ210に到達する後続のブラウザリクエストに対してだけ利用
可能である。リソースマネージャ254が維持する表500の行512はカート
リッジC3のインスタンス3をリスナ210が所有していることを引続き示す。
【0081】 リスナはリクエストが処理されるたびにカートリッジインスタンスを自動的に
解放するわけではないため、リソースマネージャ254とさまざまなディスパッ
チャとの間での通信に関連するオーバーヘッドは大幅に減少される。たとえば、
カートリッジC3に伝えなければならない10の連続したリクエストをリスナ2
10が受取るものと仮定する。10のリクエストの各々に対してリソースマネー
ジャ254と通信するのではなく、ディスパッチャ214は最初のリクエストに
応答してリソースマネージャ254と通信してもよい。ディスパッチャ214は
後続の9つのリクエストをリソースマネージャ254と通信することなく処理す
ることができるが、これはディスパッチャ214が最初のリクエストを処理する
C3の同じインスタンスを用いて9つの後続のリクエストを処理するためである
【0082】 各リクエストを処理する際にカートリッジインスタンスのリスナ所有権を自動
的に解放しないことでウェブアプリケーションサーバ280の効率が向上される
とはいえ、リスナは無期限にカートリッジインスタンスの所有権を維持すること
はできない。たとえば、長い期間にわたって用いられなかったインスタンスはリ
ソースマネージャ254に戻され、リソースを空けるためにその割当ての解除が
できるようにすべきである。さらに、他のリスナがそのカートリッジのインスタ
ンスを必要としているところに、1つのリスナが比較的長い時間使っていなかっ
たカートリッジのインスタンスの所有権を維持することは効率的ではない。
【0083】 したがって、リソースマネージャ254は、リスナに渡される各カートリッジ
インスタンスのための最大アイドルタイムを各リスナに伝える。最大アイドルタ
イムとは、リスナがカートリッジインスタンスの所有権を解放しなければならな
くなる前にそのカートリッジインスタンスが使用されない状態でいられる最大の
時間を示すものである。たとえば、カートリッジC3のインスタンス3のための
最大量のアイドルタイムが10分であることをリソースマネージャ254がリス
ナ210に示すものと仮定する。この情報に基づいて、リスナ210は、カート
リッジC3のインスタンス3が10分より長い間アイドル状態またはFREEと
ならない限りにおいてカートリッジC3のインスタンス3を続けて用いてカート
リッジC3に対するブラウザリクエストを処理することができる。
【0084】 カートリッジC3のインスタンス3が10分より長い間アイドル状態である場
合、ディスパッチャ214は表400から行412を取除き、リスナ210がカ
ートリッジC3のインスタンス3の所有権を解放することをリソースマネージャ
254にメッセージを送って知らせる。このメッセージに応答して、リソースマ
ネージャ254は行512を更新して、カートリッジC3のインスタンス3がい
ずれのリスナによっても所有されておらず、よって別のリスナに再割当てされる
か終了され得ることを示す。
【0085】 代替の実施例では、カートリッジインスタンスのためのアイドルタイムが満了
した際にもディスパッチャはカートリッジインスタンスを自動的に解放しない。
代わりに、ディスパッチャはリソースマネージャ254にメッセージを送り、満
了となったインスタンスを解放することを申し出る。リソースマネージャ254
はこの申し出に応答して、リスナがカートリッジインスタンスを解放するようリ
クエストするか、またはリスナがその満了となったカートリッジインスタンスの
所有権を持ち続けることを許可してもよい。
【0086】 この発明の一実施例によれば、リソースマネージャ254は直ちに処理するこ
とのできないリクエストのキューを維持する。キュー内のリクエストを処理する
ことが可能となると、そのリクエストはキューから取除かれ処理される。
【0087】 たとえば、カートリッジC1が処理しなければならないブラウザリクエストを
リスナ222が受取り、そのリスナ222にカートリッジC1のいずれのインス
タンスも割当てられていなかったと仮定する。ディスパッチャ226はリソース
マネージャ254にC1のインスタンスに対するリクエストを送る。さらに、C
1の最大50のインスタンスが許容され、C1の50のインスタンスがリスナ2
10に割当てられたと仮定する。こうした条件の下では、リソースマネージャ2
54はリスナ222からのリクエストを処理することができない。このため、リ
ソースマネージャ254はそのリクエストをキューにおく。リスナ210がC1
のインスタンスを解放すると、リソースマネージャ254はリスナ222にC1
のインスタンスが利用可能であることを伝える。
【0088】 ある特定の条件の下で、リソースマネージャ254は強制的にリスナにカート
リッジインスタンスを解放させることがある。たとえば、リソースマネージャ2
54はシステムオーバロード状況を検出し、これに応答して1組のカートリッジ
インスタンスを終了することがあり、これはそのカートリッジインスタンスが終
了されることになることをそのカートリッジインスタンスが現在割当てられてい
るリスナに知らせる前または知らせた後に行なわれる。
【0089】 また、リソースマネージャ254はリスナの間での公平性の方針を実現するた
めに強制的にリスナにカートリッジインスタンスを解放させることがある。たと
えば、別のリスナが予め定められたしきい値より長い時間にわたってカートリッ
ジのインスタンスを待っている場合、リソースマネージャ254は所与のカート
リッジの最も多い数のインスタンスを保持するリスナにそのカートリッジのある
インスタンスを解放させてもよい。たとえば、リスナ210にカートリッジC1
の50のインスタンスが割当てられ、C1は最大で50のインスタンスを有する
場合、リソースマネージャ254は別のリスナからC1のインスタンスに対する
リクエストを受取ってから10秒後にリスナ210にC1のあるインスタンスを
解放させてもよい。
【0090】 カートリッジ実行エンジン この発明の一実施例によれば、各カートリッジインスタンスはカートリッジ実
行エンジンおよびカートリッジから構成される。カートリッジ実行エンジンは、
ウェブアプリケーションサーバ280のさまざまな構成要素の間でメッセージを
通信するのに用いられるマシン間通信機構およびウェブアプリケーションサーバ
280の複雑さからカートリッジを隔離するコードモジュールである。
【0091】 カートリッジは、関数テーブルにカートリッジ関数に対するポインタを蔵置す
ることによってカートリッジ実行エンジンに利用可能となる。一実施例によれば
、すべてのカートリッジが、上述の例示のカートリッジインターフェイスにおい
て特定された関数を提供する。すべてのカートリッジが同じインターフェイスを
サポートするようにさせることにより、単一の標準カートリッジ実行エンジンを
すべてのカートリッジに対して用いることができる。
【0092】 図2に示されるように、ウェブアプリケーションサーバ280はカートリッジ
230、234および238の各々に対しカートリッジ実行エンジン228、2
32および236を含む。カートリッジ実行エンジンは標準のカートリッジイン
ターフェイスを介してカートリッジへの呼出を行なうことにより対応するカート
リッジの実行を制御する。カートリッジ実行エンジンとカートリッジとの間で基
本的なコールバック機能を確立することにより、そのカートリッジをコールバッ
ク機能に応答するよう構成し、次にそのカートリッジをコンフィギュレーション
プロバイダ256に登録することによってどんなカートリッジもウェブアプリケ
ーションサーバ280に統合することができる。
【0093】 この発明の一実施例によれば、カートリッジは共用ライブラリとして実装され
、カートリッジ実行エンジンは標準カートリッジインターフェイスを用いて共用
ライブラリ内のルーチンを呼出す実行可能なプログラムである。カートリッジ実
行エンジンはカートリッジとディスパッチャとの間でインターフェイスをもたら
し、カートリッジの制御のフローを指示し、カートリッジが用いるサービスを提
供する。
【0094】 リソースマネージャ254が新しいカートリッジインスタンスの生成を必要と
する場合、リソースマネージャ254はカートリッジ実行エンジンのインスタン
スを生成させる。これに対し、このようにして作られたカートリッジ実行エンジ
ンのインスタンスは適当なカートリッジのインスタンスを生成させる。リソース
マネージャ254はたとえば、カートリッジが実行されるマシン上にある「カー
トリッジ実行エンジンファクトリ」と呼出すことによってカートリッジ実行エン
ジンのインスタンスを生成させることができる。カートリッジ実行エンジンのイ
ンスタンスはたとえば、そのカートリッジを構成する共用ライブラリ内のルーチ
ンのうちの1つに呼出を行なうことによってカートリッジのインスタンスを生成
させることができる。
【0095】 カートリッジが共用ライブラリとして実装される実施例では、カートリッジお
よびカートリッジ実行エンジンは単一のプロセスとして実行される。すなわち、
カートリッジはそのカートリッジへ呼出を行なうカートリッジ実行エンジンと同
じマシン上でかつ同じアドレス空間において実行される。このような実施例では
、カートリッジは実行の前にカートリッジ実行エンジンに静的にリンクされても
よく、または実行時にカートリッジ実行エンジンに動的にリンクされてもよい。
【0096】 代替の実施例によれば、カートリッジ実行エンジンはそれらが通信するカート
リッジとは別個のプロセスとして実行されてもよい。しかしながら、カートリッ
ジ開発者らのプログラミングの負担を軽減するために、カートリッジ実行エンジ
ンプロセスとその対応するカートリッジプロセスとは同じマシン上で実行される
【0097】 重要なことであるが、単一プロセスおよび個別プロセスの実施例の双方におい
て、カートリッジ開発者らはマシン間通信の複雑さに取組む必要がない。カート
リッジと、他のマシンにわたって分散されるウェブアプリケーションサーバの構
成要素との間でのすべての通信は、そのカートリッジと同じマシン上にあるカー
トリッジ実行エンジンを介して実行される。このように、カートリッジは複数の
マシンにわたって分散されるシステムにおいて用いられていることを意識しない
ということができる。
【0098】 カートリッジラッパーの例 図2を参照して、PL/SQLランタイムカートリッジがリクエストを処理す
るのに適当なカートリッジであるとディスパッチャ214が判定すると、ディス
パッチャ214はそのPL/SQLランタイムカートリッジに関連づけられるカ
ートリッジ実行エンジンを含むカートリッジインスタンスにそのリクエストをデ
ィスパッチする。新しいインスタンスをイニシエートする必要がある場合、リソ
ースマネージャ254は別個のアドレス空間においてPL/SQLランタイムカ
ートリッジの新しいインスタンスを作り、その新しいインスタンスのカートリッ
ジ実行エンジン228へそのリクエストをディスパッチする。プログラムのイン
スタンスを実行するのに用いられるアドレス空間は、ウェブアプリケーションサ
ーバ280の構成要素の1つ以上が実行されているコンピュータシステムのメモ
リ内にあるか、または別のコンピュータシステム上にあってもよい。
【0099】 ディスパッチャからのメッセージに応答して、カートリッジ実行エンジンはカ
ートリッジにリクエストハンドラコールバック機能を発行し、カートリッジにそ
のリクエストを処理させる。そのリクエストを処理するカートリッジはその結果
をカートリッジ実行エンジンに返し、カートリッジ実行エンジンはその結果をデ
ィスパッチャに転送する。ウェブアプリケーションサーバ280がオペレーショ
ンにおいて障害を検出した場合にはカートリッジ実行エンジンはカートリッジの
シャットダウン関数を発行する。
【0100】 このように、カートリッジ実行エンジンは、実行すべき予め定められたオペレ
ーションを特定するウェブアプリケーションサーバ280へのアプリケーション
プログラミングインターフェイスを提供する。標準のカートリッジインターフェ
イスを使用することにより、カートリッジのプログラマが、カートリッジがとも
に用いられることになる特定のウェブリスナが用いるプロトコルとは無関係に、
各カートリッジをウェブアプリケーションサーバ280へ高レベルで統合化する
よう構成することができる。
【0101】 トランスポートアダプタ リスナは、サーバ側のプラグインが使用するためのプログラミングインターフ
ェイスおよびプロトコルを提供することによってそのようなプラグインの使用を
可能にする。残念なことに、リスナが提供するプログラミングインターフェイス
およびプロトコルはリスナごとに異なる。たとえば、ネットスケープ・サーバ・
アプリケーション・プログラミング・インターフェイス(NSAPI:Netscape
Server Application Programming Interface)、インターネット・サーバ・ア プリケーション・プログラミング・インターフェイス(ISAPI:Internet S
erver Application Programming Interface)およびアプリケーション開発イン ターフェイス(ADI:Application Development Interface)は現在リスナに よりもたらされる別個のプログラミングインターフェイスの3つの例である。
【0102】 トランスポートアダプタはウェブリスナが用いる私的プロトコルおよびインタ
ーフェイスからディスパッチャを隔離する。特定的には、各トランスポートアダ
プタはさまざまなリスナのプロトコルを認識し、リスナから受取ったブラウザリ
クエストを変換してリスナのプロトコルとは無関係の標準ディスパッチャプロト
コルを有する変換されたブラウザリクエストを生じるよう構成される。同様に、
トランスポートアダプタはディスパッチャからの返答をリスナのトランスポート
プロトコルに変換する。
【0103】 このように、トランスポートアダプタにより、ウェブアプリケーションサーバ
280を異なるベンダのリスナとともに用いることが可能となる。さらに、トラ
ンスポートアダプタは異なるサーバアーキテクチャおよびオペレーティングシス
テムに対応するよう構成されてもよい。
【0104】 ウェブアプリケーションサーバのオペレーション 図3Aおよび図3Bはこの発明の一実施例によるブラウザリクエストに応答す
る方法を示すフロー図である。ステップ350においてリスナがブラウザリクエ
ストを受取る。説明のために、このブラウザリクエストはブラウザ202により
発行されリスナ210により受取られるものと仮定する。
【0105】 ブラウザリクエストを受取ると、リスナ210はステップ352においてウェ
ブアプリケーションサーバ280にそのリクエストを転送する。特定的には、リ
スナ210はリスナ210の私的プログラミングインターフェイスを用いてその
リクエストをトランスポートアダプタ212に渡す。トランスポートアダプタ2
12は、必要に応じてそのリクエストを標準ディスパッチャプログラミングイン
ターフェイスを用いて変換しそのリクエストをディスパッチャ214に渡す。
【0106】 ディスパッチャ214は、仮想パスマネージャ250と通信することによって
、ブラウザリクエストにより特定される仮想パスに基づいて、ステップ354に
おいてブラウザリクエストに対応するリクエストオブジェクトタイプを識別する
。ディスパッチャ214はステップ356において、そのリクエストオブジェク
トタイプが識別可能なカートリッジに対応するかどうかを判定する。そのリクエ
ストオブジェクトタイプが識別可能なカートリッジに対応していない場合、その
リクエストはステップ358においてリスナ210に戻される(図3Bを参照)
。ステップ358においてそのリクエストが静的HTMLページに対するリクエ
ストであることをリスナ210が認識すると、リスナはその静的HTMLページ
にアクセスし、そのHTMLページをステップ360においてブラウザ202に
送る。ブラウザリクエストがリスナ210によって認識されない場合、ステップ
360において返答がブラウザ202に送られそのリクエストが認識不可能であ
ったことを示す。
【0107】 ステップ356において、(1)リクエストをカートリッジに送らなければな
らないことと、(2)リスナ210にそのカートリッジの現在FREEであるイ
ンスタンスが1つも割当てられていないこととをディスパッチャ214が判定す
ると、ディスパッチャ214は、そのブラウザリクエストを送ることのできるカ
ートリッジ230のインスタンスが割当てられることになるリソースマネージャ
254と通信する。図3Bに示されるステップ362では、リソースマネージャ
254は、識別されたカートリッジのインスタンスが既存のインスタンスの数の
中で利用可能である(所有されていない)かどうかを判定する。説明のため、こ
のリクエストはカートリッジ230に関連づけられるものであり、カートリッジ
230はPL/SQLランタイムカートリッジであると仮定する。
【0108】 ステップ362においてリソースマネージャが利用可能なインスタンス、たと
えばPL/SQLランライム230のインスタンス260を識別すると、リソー
スマネージャ254はリクエストをインスタンス260に送るべきであることを
ディスパッチャ214に知らせる。ディスパッチャ214はそこで、変更された
ブラウザリクエストを作りステップ368においてインスタンス260のカート
リッジ実行エンジン228にその変更されたブラウザリクエストを送って、以下
に説明するように利用可能なインスタンス260にそのリクエストを処理させる
【0109】 しかしながら、ステップ362においてカートリッジ230のインスタンスが
1つも利用可能でない場合、リソースマネージャ254はステップ364におい
て、既存のインスタンスの数が最大所定数を超えるかどうかを判定する。ステッ
プ364において既存のインスタンスの数が最大所定数を超える場合、リソース
マネージャ254はその時点ではそのリクエストを処理できないことをディスパ
ッチャ214に示す。これに応答して、ディスパッチャ214はステップ358
においてそのリクエストをリスナ210に返し、その後に、ウェブリスナ210
はステップ360においてネットワークを介してブラウザ202へ返答を送り、
そのリクエストが処理されなかったことを示す。
【0110】 代わりに、カートリッジインスタンスがリクエストを処理するためにその現時
点で利用可能でない場合、リスナ210はそのカートリッジインスタンスに対す
る待ちリストにそのリクエストを入れてもよい。カートリッジインスタンスが利
用可能となると、変更されたブラウザリクエストが待ちリストから取除かれカー
トリッジインスタンスに転送される。変更されたブラウザリクエストが予め定め
られた時間より長い間待ちリストに残っている場合、リスナ210はそのリクエ
ストを待ちリストから取除いてブラウザ202にメッセージを送りそのリクエス
トが処理できなかったことを示すようにしてもよい。
【0111】 ステップ364において既存のインスタンスの数が最大所定数を超えない場合
、リソースマネージャ254は識別されたプログラムの新しいインスタンスをイ
ニシエートし、ブラウザリクエストに基づく変更されたブラウザリクエストを新
しいインスタンスに送るべきであることをディスパッチャ214に知らせる。そ
こでディスパッチャ214は変更されたブラウザリクエストをその新しいインス
タンスのカートリッジ実行エンジンへディスパッチする。
【0112】 たとえば、リソースマネージャ254がブラウザリクエストに応答してインス
タンス260をイニシエートしたと仮定する。その初期化の間、PL/SQLラ
ンタイムのための蔵置された命令シーケンスにアクセスが行なわれ、ディスパッ
チャ214が実行しているアドレス空間とは別個のアドレス空間においてカート
リッジ230の新しいインスタンス260が作られる。一実施例によれば、初期
化はカートリッジ実行エンジン228をロードし、そのカートリッジ実行エンジ
ンにカートリッジ230内の初期化ルーチンを呼出させることによって行なわれ
る。
【0113】 一度新しいインスタンス260が実行されると、ディスパッチャ214はステ
ップ368においてその新しいインスタンス260に関連づけられているカート
リッジ実行エンジン228にリクエストをディスパッチする。カートリッジ実行
エンジン228は新しいインスタンス260にコールバックメッセージを送りそ
のリクエストの実行を要求する。そのコールバックメッセージにおいて、カート
リッジ実行エンジン228はそのリクエストを処理する上でインスタンス260
が必要とする全てのパラメータを渡す。このようなパラメータにはたとえば、パ
スワード、データベース探索キー、またはインスタンス260が実行する動的オ
ペレーションのための他のどんな引き数を含んでいてもよい。
【0114】 次にインスタンス260はリクエストを実行する。ステップ368におけるイ
ンスタンスによるリクエストの実行の間、ディスパッチャ214はステップ37
0においてインスタンスを監視して障害が発生するかどうかを判定する。ステッ
プ370においてディスパッチャ214が障害を検出すると、ディスパッチャ2
14はステップ372において対応するカートリッジ実行エンジン228を呼出
し、その障害を有するインスタンス260を打ち切る。これに対し対応するカー
トリッジ実行エンジン228はAPIを通して障害のあるインスタンスに対して
シャットダウンコマンドを発行する。そのインスタンスはカートリッジ実行エン
ジン228によるシャットダウンコマンドに応答して、他のどんなアドレス空間
における他のどんなプロセスにも影響を与えることなくシャットダウンする。
【0115】 ステップ370において障害が検出されない場合、ディスパッチャ214はス
テップ374において実行の完了の際にインスタンス260から返答を受取る。
ステップ376においてディスパッチャ214はその返答をリスナ210に転送
し、リスナ210は実行されたインスタンス260からの返答をもってブラウザ
に応答する。インスタンス260を実行した後、ステップ378においてディス
パッチャ214はステップ378に示されるようにメモリ内にインスタンスを維
持し、後続のリクエストの実行を可能にする。
【0116】 ウェブサーバの分散アーキテクチャ 重要なことであるが、ウェブアプリケーションサーバ280のさまざまな構成
要素は、それら構成要素が同じアドレス空間において実行される必要がなく同じ
マシン上で実行されることさえ必要としない通信機構を用いて互いに通信する。
例示される実施例では、ウェブアプリケーションサーバ280の構成要素はオブ
ジェクトリクエストブローカ(ORB:Object Request Broker)282を介し て通信するよう構成される。オブジェクトリクエストブローカは「共通オブジェ
クトリクエストブローカ:アーキテクチャおよび仕様(CORBA)」("Commo
n Object Request Broker: Architecture and Specification (CORBA)")に詳し
く記載されている。CORBAに関連するこのおよび他の文献はワールド・ワイ
ド・ウェブのhttp://www.omg.orgにおいて見つけることができる。
【0117】 この発明の実施例はCORBAに従ったORBを介する通信に関連して説明す
るが、他のクロスプラットフォーム通信機構を用いてもよい。たとえば、ウェブ
アプリケーションサーバ280の構成要素は代わりに、遠隔手続き呼出(RPC
:Remote Procedure Calls)、UNIXパイプ、Microsoft COMを用いて互いに 通信してもよい。
【0118】 ウェブアプリケーションサーバ280のさまざまな構成要素がマシンから独立
した通信機構を用いて互いに通信するため、構成要素が互いに対してどこに存在
するかということに関して固有の制約はない。たとえば、リスナ210、216
および222は同じマシン上で実行していてもよく、またはそれぞれがこのよう
なオペレーティングシステムを有する3つの完全に異なったマシン上で実行して
もよい。同様に、認証サーバ252、仮想パスマネージャ250、リソースマネ
ージャ254およびコンフィギュレーションプロバイダ256は同じマシン上で
実行していてもよく、または4つの異なるマシン上で実行していてもよい。さら
に、これらの4つの異なるマシンはリスナ210、216および222を実行す
る3つのマシンと少しも重複していなくてもよい。
【0119】 カートリッジ実行エンジン228、232および236は、オブジェクトリク
エストブローカ282を介してウェブアプリケーションサーバ280の他の構成
要素と通信するのに必要な論理のすべてを組込んでいる。したがって、カートリ
ッジインスタンス自体の場所は通信機構によって本質的に制約されるものではな
い。すなわち、インスタンス260はこれがリクエストを受取るディスパッチャ
とは全く異なるマシンおよびオペレーティングシステムにおいて実行されてもよ
い。同様に、インスタンス260は、リソースマネージャ254、または同じウ
ェブアプリケーションサーバ280によって管理される他のカートリッジのイン
スタンスを含む、ウェブアプリケーションサーバ280の他の構成要素のいずれ
とも異なるマシンおよびオペレーティングシステム上にあってもよい。
【0120】 カートリッジの隔離 重要なことだが、ウェブアプリケーションサーバ280が用いるカートリッジ
が享受する場所の独立性は、カートリッジそのものにおける何らかのカスタムプ
ログラミングを介してではなくカートリッジ実行エンジンの通信論理を介して達
成される。したがって、分散アプリケーションサーバ環境における実行のために
特別にカートリッジを設計する必要がない。このように、カートリッジ設計者ら
は分散システムの複雑さから隔離され、カートリッジが作られる目的であるタス
クと関連する論理に労力を集中させることができる。
【0121】 たとえば、マシン間通信機構がオブジェクトリクエストブローカである場合、
そのオブジェクトリクエストブローカを介して通信するすべてのモジュールはそ
れらのインターフェイスをインターフェイス定義言語(IDL:Interface Defi
nition Language)を用いて定義することを求められ、ある特定の基底クラスを 継承しその上に構築しなければならない。これらおよび他の込み入った事情のた
め、マシン間通信が可能であるモジュールを作ることは比較的複雑になっている
。カートリッジ実行エンジンがオブジェクトリクエストブローカからカートリッ
ジを隔離するため、カートリッジ開発者らはこれらの制約に従う必要がない。こ
のため、カートリッジ開発者らはカートリッジが実行することを求められる特定
のオペレーションを達成するためのコードを書くことに労力を集中させることが
できる。
【0122】 上述のように、異なるカートリッジの複数のインスタンスを管理してさまざま
なユーザリクエストを処理するウェブアプリケーションサーバ280が提供され
る。各カートリッジインスタンスはリスナとは別個のメモリ空間において実行さ
れ、このためサーバ側のプラグインに関連のある安全性の問題を回避できる。さ
らに、リスナが受取ったブラウザリクエストを処理するのに用いられるカートリ
ッジインスタンスはリスナとは全く異なるマシン上で実行されてもよい。このた
め、システムのスケーラビリティが向上すると同時に、いずれかの特定のマシン
の負担が軽減される。
【0123】 さらに、ウェブアプリケーションサーバ280はまた、所与のカートリッジの
各々に対するインスタンスの数を制御する。よって、サーバ側のリソースが制御
され、インスタンスが制御不可能なほど生成されることによって多数のリクエス
トがいずれかのマシンを圧倒することがないことが確実となる。
【0124】 さらに、実行する準備の整ったインスタンスの最小数を維持することによって
実行のスループットもまた向上する。単一の実行の後にインスタンスを終了して
、それから後続のリクエストの実行のためにインスタンスを再び作るためにメモ
リにカートリッジを再ロードするのではなく、さらにインスタンスをイニシエー
トしてメモリ内に維持して後続のリクエストを実行するようにしてもよい。
【0125】 前述の明細書において、この発明をその特定の実施例に関連して説明した。し
かしながら、この発明のより幅の広い精神および範囲から逸脱することなくさま
ざまな修正および変更を行なうことができることが明らかになるであろう。した
がって、明細書および図面は限定的な意味ではなく例示的な意味で考慮されるべ
きである。
【図面の簡単な説明】
【図1】 この発明の一実施例が実装され得るコンピュータシステムのブロ
ック図である。
【図2】 この発明の一実施例による分散アプリケーションサーバのブロッ
ク図である。
【図3A】 この発明の一実施例によるブラウザリクエストを処理するため
のステップを示すフローチャートの一部の図である。
【図3B】 この発明の一実施例によるブラウザリクエストを処理するため
のステップを示すフローチャートの別の部分の図である。
【図4】 この発明の一実施例によるディスパッチャが維持する情報を含む
表のブロック図である。
【図5】 この発明の一実施例によるリソースマネージャが維持する情報を
含む表のブロック図である。
【手続補正書】特許協力条約第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】
【補正対象書類名】明細書
【補正対象項目名】0125
【補正方法】変更
【補正内容】
【0125】 前述の明細書において、この発明をその特定の実施例に関連して説明した。し
かしながら、この発明のより幅の広い範囲から逸脱することなくさまざまな修正
および変更を行なうことができることが明らかになるであろう。したがって、明
細書および図面は限定的な意味ではなく例示的な意味で考慮されるべきである。
───────────────────────────────────────────────────── フロントページの続き (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 Fターム(参考) 5B045 GG01 5B076 BA04 BB06 5B089 GB01 JA11 JA22 KA06 MA03 5B098 AA10 GA07 GC16 【要約の続き】 を扱い、カートリッジのアプリケーションプログラミン グインターフェイスを呼出すことによってリクエストを カートリッジ(230、234、238)に渡す。した がって、カートリッジはマシン間通信の複雑さから隔離 されており、よって分散を意識させることなく高度に分 散化されたシステムにおいて用いることができる。

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 オペレーションを実行するための方法であって、第1のマシ
    ン上でディスパッチャを実行するステップと、 第2のマシン上でカートリッジ実行エンジンを実行するステップとを含み、前
    記第2のマシンは前記第1のマシンとは異なるものであり、前記方法はさらに 前記オペレーションの実行をリクエストする第1のメッセージをウェブリスナ
    から前記ディスパッチャが受取るステップを含み、前記第1のメッセージは前記
    ウェブリスナがブラウザからブラウザリクエストを受取ることに応答して前記デ
    ィスパッチャに送られたものであり、前記方法はさらに 前記第1のメッセージに応答して、前記ディスパッチャが第2のメッセージを
    カートリッジ実行エンジンに送るステップと、 前記第2のメッセージに応答して、前記カートリッジ実行エンジンが第3のメ
    ッセージを、前記第2のマシン上で実行しているカートリッジに渡すステップと
    、 前記第3のメッセージを受取ったことに応答して、前記カートリッジが前記オ
    ペレーションを実行するステップとを含む、方法。
  2. 【請求項2】 前記オペレーションを実行した後に、前記カートリッジが第
    4のメッセージを前記カートリッジ実行エンジンに渡すステップと、 前記第4のメッセージに応答して、前記カートリッジ実行エンジンが第5のメ
    ッセージを前記ディスパッチャに送るステップと、 前記第5のメッセージに応答して、前記ディスパッチャが第6のメッセージを
    前記ウェブリスナに送り、前記ウェブリスナがこれを前記ブラウザに転送するス
    テップとをさらに含む、請求項1に記載の方法。
  3. 【請求項3】 前記ディスパッチャが第2のメッセージをカートリッジ実行
    エンジンに送る前記ステップは、前記ディスパッチャが第2のメッセージをオブ
    ジェクトリクエストブローカを介してカートリッジ実行エンジンに送ることによ
    って実行される、請求項2に記載の方法。
  4. 【請求項4】 前記カートリッジ実行エンジンが第5のメッセージを前記デ
    ィスパッチャに送る前記ステップは、前記カートリッジ実行エンジンが第5のメ
    ッセージを前記オブジェクトリクエストブローカを介して前記ディスパッチャに
    送ることによって実行される、請求項3に記載の方法。
  5. 【請求項5】 前記カートリッジは共用ライブラリであり、 前記カートリッジ実行エンジンが第3のメッセージを前記カートリッジに渡す
    前記ステップは前記カートリッジが前記共用ライブラリ内のルーチンを呼出すス
    テップを含む、請求項1に記載の方法。
  6. 【請求項6】 前記カートリッジ実行エンジンをコンパイル時において前記
    カートリッジに静的にリンクするステップをさらに含む、請求項5に記載の方法
  7. 【請求項7】 前記カートリッジ実行エンジンを実行時において前記カート
    リッジに動的にリンクするステップをさらに含む、請求項5に記載の方法。
  8. 【請求項8】 カートリッジ実行エンジンはある特定のアプリケーションプ
    ログラミングインターフェイスを介して前記カートリッジと通信し、 前記カートリッジ実行エンジンが、前記カートリッジとは異なるオペレーショ
    ンを行なう第2のカートリッジと前記ある特定のアプリケーションプログラミン
    グインターフェイスを介して通信するステップをさらに含む、請求項1に記載の
    方法。
  9. 【請求項9】 前記カートリッジ実行エンジンが第3のメッセージをカート
    リッジに渡す前記ステップは前記カートリッジ実行エンジンが前記カートリッジ
    内のルーチンを呼出すことによって行なわれ、 前記カートリッジが第4のメッセージを前記カートリッジ実行エンジンに渡す
    前記ステップは、前記カートリッジ内で呼出された前記ルーチンから戻ることに
    よって行なわれる、請求項2に記載の方法。
  10. 【請求項10】 オペレーションを実行するための1つ以上の命令シーケン
    スを担持するコンピュータ可読媒体であって、1つ以上のプロセッサによる1つ
    以上の命令シーケンスの実行により前記1つ以上のプロセッサは、 ディスパッチャを第1のマシン上で実行するステップと、 カートリッジ実行エンジンを第2のマシン上で実行するステップとを行ない、
    前記第2のマシンは前記第1のマシンとは異なるものであり、さらに 前記ディスパッチャが前記オペレーションの実行をリクエストする第1のメッ
    セージをウェブリスナから受取るステップとを行ない、前記第1のメッセージは
    前記ウェブリスナがブラウザからブラウザリクエストを受取ったことに応答して
    前記ディスパッチャに送られるものであり、さらに 前記第1のメッセージに応答して、前記ディスパッチャが第2のメッセージを
    カートリッジ実行エンジンに送るステップと、 前記第2のメッセージに応答して、前記カートリッジ実行エンジンが第3のメ
    ッセージを、前記第2のマシン上で実行されるカートリッジに渡すステップと、 前記第3のメッセージを受取ったことに応答して、前記カートリッジが前記オ
    ペレーションを実行するステップとを行なう、コンピュータ可読媒体。
  11. 【請求項11】 前記オペレーションを実行した後に前記カートリッジが第
    4のメッセージを前記カートリッジ実行エンジンに渡すステップと、 前記第4のメッセージに応答して、前記カートリッジ実行エンジンが第5のメ
    ッセージを前記ディスパッチャに送るステップと、 前記第5のメッセージに応答して、前記ディスパッチャが第6のメッセージを
    前記ウェブリスナに送り、前記ウェブリスナが前記ブラウザにこれを転送するス
    テップとを実行するための命令をさらに含む、請求項10に記載のコンピュータ
    可読媒体。
  12. 【請求項12】 前記ディスパッチャが第2のメッセージをカートリッジ実
    行エンジンに送る前記ステップは、前記ディスパッチャが第2のメッセージをカ
    ートリッジ実行エンジンにオブジェクトリクエストブローカを介して送ることに
    よって行なわれる、請求項11に記載のコンピュータ可読媒体。
  13. 【請求項13】 前記カートリッジ実行エンジンが第5のメッセージを前記
    ディスパッチャに送る前記ステップは、前記カートリッジ実行エンジンが第5の
    メッセージを前記ディスパッチャに前記オブジェクトリクエストブローカを介し
    て送ることによって行なわれる、請求項12に記載のコンピュータ可読媒体。
  14. 【請求項14】 前記カートリッジは共用ライブラリであり、 前記カートリッジ実行エンジンが第3のメッセージを前記カートリッジに渡す
    前記ステップは前記カートリッジが前記共用ライブラリ内のルーチンを呼出すス
    テップを含む、請求項10に記載のコンピュータ可読媒体。
  15. 【請求項15】 カートリッジ実行エンジンはある特定のアプリケーション
    プログラミングインターフェイスを介して前記カートリッジと通信し、 前記カートリッジ実行エンジンが前記ある特定のアプリケーションプログラミ
    ングインターフェイスを介して、前記カートリッジとは異なるオペレーションを
    行なう第2のカートリッジと通信するステップをさらに含む、請求項10に記載
    のコンピュータ可読媒体。
  16. 【請求項16】 前記カートリッジ実行エンジンが第3のメッセージをカー
    トリッジに渡す前記ステップは前記カートリッジ実行エンジンが前記カートリッ
    ジ内のルーチンを呼出すことによって行なわれ、 前記カートリッジが第4のメッセージを前記カートリッジ実行エンジンに渡す
    前記ステップは、前記カートリッジ内で呼出された前記ルーチンから戻ることに
    よって行なわれる、請求項11に記載のコンピュータ可読媒体。
  17. 【請求項17】 ブラウザリクエストに関連するオペレーションを実行する
    ためのシステムであって、 複数のウェブリスナに結合される複数のディスパッチャと、 マシン間通信機構と、 複数のカートリッジとを含み、前記カートリッジの各々は標準カートリッジイ
    ンターフェイスを介して呼出されるルーチンを含み、前記標準カートリッジイン
    ターフェイスを介して受取った呼出に応答して別々のカートリッジが別々のオペ
    レーションを行ない、前記システムはさらに 前記マシン間通信機構を介して前記複数のディスパッチャと通信し、かつ前記
    標準カートリッジインターフェイスを介して前記複数のカートリッジ内の前記ル
    ーチンを呼出すことによって、前記複数のカートリッジと通信する複数のカート
    リッジ実行エンジンを含み、 前記複数のディスパッチャの各ディスパッチャは、オペレーションを行なうの
    にある特定のカートリッジを必要とするブラウザリクエストをウェブリスナが受
    取ったことに応答して、前記複数のカートリッジ実行エンジンのある特定のカー
    トリッジ実行エンジンへ第1のメッセージを前記マシン間通信機構を介して送る
    よう構成されており、 前記ある特定のカートリッジ実行エンジンは、前記第1のメッセージに応答し
    て、前記オペレーションを行なう前記ある特定のカートリッジ内のルーチンを前
    記標準カートリッジインターフェイスを介して呼出すよう構成される、システム
  18. 【請求項18】 前記マシン間機構はある特定のカートリッジに対しトラン
    スペアレントであり、 前記ある特定のカートリッジは、前記ルーチンから戻る際に第2のメッセージ
    を前記ある特定のカートリッジ実行エンジンへ前記標準カートリッジインターフ
    ェイスを介して送るよう構成されており、 前記ある特定のカートリッジ実行エンジンは、前記第2のメッセージに基づい
    た第3のメッセージを前記ディスパッチャへ前記マシン間通信機構を介して送る
    よう構成される、請求項17に記載のシステム。
  19. 【請求項19】 前記マシン間通信機構はオブジェクトリクエストブローカ
    である、請求項17に記載のシステム。
  20. 【請求項20】 分散システムのモジュールに分散を意識させない態様でオ
    ペレーションを行なわせるための方法であって、 前記モジュールをある特定のマシン上で実行するステップと、 前記モジュールに関連付けられるカートリッジ実行エンジンを介して前記モジ
    ュールへ前記分散システムの他の構成要素からリクエストを渡すステップと、 前記モジュールと関連付けられる前記カートリッジ実行エンジンを介して前記
    モジュールから前記分散システムの前記他の構成要素へ返答を渡すステップとを
    含み、 前記カートリッジ実行エンジンおよび前記モジュールは第1のマシン上で実行
    しており、 前記他の構成要素は前記第1のマシン上で実行していない、方法。
  21. 【請求項21】 前記モジュールに関連付けられるカートリッジ実行エンジ
    ンを介して前記モジュールへ前記分散システムの他の構成要素からリクエストを
    渡す前記ステップは、 前記リクエストをマシン間通信機構を介して前記カートリッジ実行エンジン
    へ送るステップと、 前記カートリッジ実行エンジンに前記モジュール内のルーチンを呼出させる
    ことによって前記カートリッジ実行エンジンから前記リクエストを前記モジュー
    ルへ送るステップとを含む、請求項20に記載の方法。
  22. 【請求項22】 前記リクエストを前記カートリッジ実行エンジンへマシン
    間通信機構を介して送る前記ステップは、前記リクエストを前記カートリッジ実
    行エンジンへオブジェクトリクエストブローカを介して送ることによって行なわ
    れる、請求項21に記載の方法。
JP2000519524A 1997-10-31 1998-10-28 分散を意識させない態様で分散ソフトウェア開発を容易にするための方法およびシステム Pending JP2001522114A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/962,414 US6026404A (en) 1997-02-03 1997-10-31 Method and system for executing and operation in a distributed environment
US08/962,414 1997-10-31
PCT/US1998/022820 WO1999023785A2 (en) 1997-10-31 1998-10-28 Method and system for facilitating distributed software development in a distribution unaware manner

Publications (1)

Publication Number Publication Date
JP2001522114A true JP2001522114A (ja) 2001-11-13

Family

ID=25505830

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000519524A Pending JP2001522114A (ja) 1997-10-31 1998-10-28 分散を意識させない態様で分散ソフトウェア開発を容易にするための方法およびシステム

Country Status (8)

Country Link
US (1) US6026404A (ja)
EP (1) EP1027794B1 (ja)
JP (1) JP2001522114A (ja)
AU (1) AU746391B2 (ja)
CA (1) CA2308772C (ja)
DE (1) DE69814900T2 (ja)
HK (1) HK1028690A1 (ja)
WO (1) WO1999023785A2 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6847987B2 (en) * 1998-09-30 2005-01-25 International Business Machines Corporation System and method for extending client-server software to additional client platforms for servicing thin clients requests
US6687900B1 (en) * 1998-11-19 2004-02-03 X/Net Associates, Inc. Method and system for loading instructions into an executing process
US6751606B1 (en) 1998-12-23 2004-06-15 Microsoft Corporation System for enhancing a query interface
US6782408B1 (en) * 1999-03-30 2004-08-24 International Business Machines Corporation Controlling a number of instances of an application running in a computing environment
US6842903B1 (en) * 1999-05-19 2005-01-11 Sun Microsystems, Inc. System and method for providing dynamic references between services in a computer system
US6782387B1 (en) * 1999-08-06 2004-08-24 Ricoh Company, Ltd. System for document management and information processing
AU4710001A (en) * 1999-12-06 2001-06-12 Warp Solutions, Inc. System and method for enhancing operation of a web server cluster
US20010047385A1 (en) * 1999-12-30 2001-11-29 Jeffrey Tuatini Passthru to shared service funtionality
US7389246B1 (en) * 2000-02-15 2008-06-17 Insweb Corporation Insurance rating calculation software component architecture
US6514079B1 (en) 2000-03-27 2003-02-04 Rume Interactive Interactive training method for demonstrating and teaching occupational skills
US6687735B1 (en) 2000-05-30 2004-02-03 Tranceive Technologies, Inc. Method and apparatus for balancing distributed applications
CA2307155A1 (en) * 2000-04-28 2001-10-28 Ibm Canada Limited-Ibm Canada Limitee Execution of database queries including filtering
AU2001288757A1 (en) * 2000-09-01 2002-03-13 Op40, Inc. System, method, uses, products, program products, and business methods for distributed internet and distributed network services
AU2002211349A1 (en) * 2000-10-03 2002-04-15 Sun Microsystems, Inc. Http transaction monitor with capacity to replay in debugging session
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
EP1346289A1 (en) * 2000-11-30 2003-09-24 Appfluent Technology, Inc. System and method for delivering dynamic content
US7010609B1 (en) * 2000-12-21 2006-03-07 Borland Software Corporation System and method for adding transport protocols in distributed middleware applications
US20020107835A1 (en) * 2001-02-08 2002-08-08 Coram Michael T. System and method for adaptive result set caching
US7178143B2 (en) * 2001-03-09 2007-02-13 Bea Systems, Inc. Multi-version hosting of application services
US20020178264A1 (en) * 2001-03-27 2002-11-28 Isource Concepts Inc. Secure creation and distribution of instructions to uniquely support network applications
US20020178227A1 (en) * 2001-05-25 2002-11-28 International Business Machines Corporation Routing instant messages using configurable, pluggable delivery managers
US20030014478A1 (en) * 2001-06-29 2003-01-16 Noble Alan C. Dynamically distributed client-server web browser
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
US20030236813A1 (en) * 2002-06-24 2003-12-25 Abjanic John B. Method and apparatus for off-load processing of a message stream
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
US6973480B2 (en) * 2002-09-26 2005-12-06 Sun Microsystems, Inc. Mechanism for implementing server-side pluglets
US7353521B1 (en) * 2002-10-19 2008-04-01 Borland Software Corporation Object oriented distributed software system with methodology for piggybacked reflective callbacks
US7437358B2 (en) 2004-06-25 2008-10-14 Apple Inc. Methods and systems for managing data
US7730012B2 (en) 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US7774326B2 (en) * 2004-06-25 2010-08-10 Apple Inc. Methods and systems for managing data
US20070124345A1 (en) * 2005-11-30 2007-05-31 Heinz Kathy K Library backup
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
US7974939B2 (en) * 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US20090113292A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Flexibly editing heterogeneous documents
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
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
CN107332814B (zh) * 2016-04-29 2021-01-01 华为技术有限公司 一种请求消息传输方法及装置
US10481963B1 (en) * 2016-06-29 2019-11-19 Amazon Technologies, Inc. Load-balancing for achieving transaction fault tolerance
EP3740882A1 (en) * 2018-01-18 2020-11-25 Bevara Technologies, LLC Browser navigation for facilitating data access
US11750575B2 (en) * 2019-12-16 2023-09-05 Jpmorgan Chase Bank, N.A. Systems and methods for gateway communications for distributed ledger systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281974A (ja) * 1994-04-05 1995-10-27 Internatl Business Mach Corp <Ibm> ネットワーク内のコンピュータ間でデータを交換するための通信システム

Family Cites Families (32)

* 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
AU686105B2 (en) * 1992-07-01 1998-02-05 Telefonaktiebolaget Lm Ericsson (Publ) System for implementation-independent interface specification
US5329619A (en) * 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
JP3003440B2 (ja) * 1993-01-19 2000-01-31 株式会社日立製作所 負荷分散制御方法および分散処理システム
JP3365576B2 (ja) * 1993-06-14 2003-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトの実行方法および装置
EP0746816B1 (en) * 1993-08-03 2001-10-24 Sun Microsystems, Inc. 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
JPH0926970A (ja) * 1994-12-20 1997-01-28 Sun Microsyst Inc 情報を検索するコンピュータによる実行方法及び装置
US5822585A (en) * 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
US5761684A (en) * 1995-05-30 1998-06-02 International Business Machines Corporation Method and reusable object for scheduling script execution in a compound document
US5752246A (en) * 1995-06-07 1998-05-12 International Business Machines Corporation Service agent for fulfilling requests of a web browser
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
US5761507A (en) * 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
EP0894392A2 (en) * 1996-04-19 1999-02-03 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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281974A (ja) * 1994-04-05 1995-10-27 Internatl Business Mach Corp <Ibm> ネットワーク内のコンピュータ間でデータを交換するための通信システム

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
保西義孝: "分散オブジェクト基盤 ObjectDirector", FUJITSU(企業技報), vol. 第48巻、第2号, CSNH199700197005, 10 March 1997 (1997-03-10), JP, pages 93 - 97, ISSN: 0000765968 *
山本美桜: "NCA、産声をあげた新しいシステムパラダイム", NET PC, vol. 第2巻、第5号, CSND199700550013, May 1997 (1997-05-01), JP, pages 108 - 113, ISSN: 0000765971 *
森永輔: "WWWサーバで可能になるトランザクション処理", 日経コンピュータ, vol. 第427号, CSND199700475002, 29 September 1997 (1997-09-29), JP, pages 178 - 181, ISSN: 0000765970 *
河込和宏: "CORBAの仕組みとプログラミング前編", BIT, vol. 第29巻、第8号, CSND199700210003, 1 August 1997 (1997-08-01), JP, pages 25 - 32, ISSN: 0000765969 *
渡邊正三、外2名: "インターネットのトランザクション連携(NETSTAGE)", FUJITSU(富士通技報), vol. 第48巻、第2号, CSNH199700197012, 10 March 1997 (1997-03-10), JP, pages 140 - 144, ISSN: 0000765967 *

Also Published As

Publication number Publication date
AU1203299A (en) 1999-05-24
WO1999023785A2 (en) 1999-05-14
CA2308772C (en) 2005-02-15
DE69814900D1 (de) 2003-06-26
EP1027794A2 (en) 2000-08-16
WO1999023785A3 (en) 1999-07-15
HK1028690A1 (en) 2001-02-23
DE69814900T2 (de) 2004-05-13
EP1027794B1 (en) 2003-05-21
CA2308772A1 (en) 1999-05-14
US6026404A (en) 2000-02-15
AU746391B2 (en) 2002-05-02

Similar Documents

Publication Publication Date Title
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
JP2001522114A (ja) 分散を意識させない態様で分散ソフトウェア開発を容易にするための方法およびシステム
JP3853593B2 (ja) ウェブアプリケーションサーバにおいて拡張可能な認証機構を実現するための方法および装置
JP4729172B2 (ja) 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置
EP0956687B1 (en) Web request broker controlling multiple processes
US6225995B1 (en) Method and apparatus for incorporating state information into a URL
EP1235150B1 (en) Apparatus and method for processing servlets
US6393497B1 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
JP2002505466A (ja) 遠隔メソッド呼出し方法及び装置
JP2002505491A (ja) 分散形システムにおける動的情報証明のための装置及び方法
WO1999023558A1 (en) Method and apparatus for conducting a transaction in a stateless web environment
JP2002505478A (ja) 分散形システムにおけるイベント通知のためのオブジェクトの据置き復元及び遠隔ローディング

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050518

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

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060519

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061222

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070105

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070309

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090304

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090401

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090407

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090501

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090511

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091102

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091106

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091203

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100608

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100614

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100714

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100806

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100909