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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5055—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-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
Description
キテクチャに関し、より特定的には、分散を意識させない態様での分散ソフトウ
ェア開発を容易にすることに関する。
上のサーバのネットワークを含み、その各々は1つ以上のHTML(Hypertext
Markup Language:ハイパテキスト・マークアップ言語)ページに関連付けられ ている。サーバに関連付けられているHTMLページは、情報と、そのサーバお
よび(通常は)他のサーバ上の他の文書へのハイパテキストリンクとを提供する
。サーバはハイパテキスト・トランスファー・プロトコル(HTTP:Hypertex
t Transfer Protocol)を用いてクライアントと通信する。サーバはクライアン トからのHTMLページに関するリクエストを聞くことから、多くの場合、「リ
スナ」と称される。
ラムを用いてリスナから情報をリクエストし、デコードし、表示する。ブラウザ
のユーザがあるHTMLページ上のリンクを選択すると、そのページを表示して
いるブラウザはそのリンク内で特定されるユニバーサル・リソース・ロケータ(
URL:Universal Resource Locator)と関連付けられるリスナにインターネッ
トを通じてリクエストを送る。そのリクエストに応答して、リスナはそのリクエ
ストを発行したブラウザにリクエストされた情報を送信する。ブラウザは情報を
受取り、受取った情報をユーザに示し、次のユーザリクエストを待つ。
MLページは、ウェブブラウザからのリクエストに先立ち作成されリスナに蔵置
される。リクエストに応答して、静的HTMLページが単に記憶から読出され、
リクエストを行なっているブラウザに送信される。現在、ブラウザリクエストに
応答して動的オペレーションを行なうリスナを開発しようとする趨勢にある。た
とえば、リスナはリクエストに応答する際にデータベースにクエリーを発行し、
そのクエリーの結果を含むウェブページを動的に構成し、動的に構成されたHT
MLページをリクエストを行なっているブラウザに送信してもよい。動的オペレ
ーションを行なうために、リスナの機能性を向上または増強させなければならな
い。動的オペレーションをサポートするようリスナを拡張するためにさまざまな
アプローチが開発されてきた。
つのアプローチでは共通ゲートウェイ・インターフェイス(CGI)を用いる。
CGIはリスナとCGIプログラムとの間で情報を転送するための仕様である。
CGIプログラムはCGI仕様に従った、データを受け、かつ返すよう設計され
るプログラムであればどのようなものであってもよい。そのプログラムはC、Pe
rlまたはVisual Basicを含むどんなプログラム言語で書かれたものであってもよ
い。
のプロセス(CGIプログラムの別個のインスタンス)が開始されるという不利
な点がある。さらに、CGIプログラムはブラウザリクエストを受取ったリスナ
と同じマシン上で実行される。したがって、千ものこうしたリクエストを異なっ
たユーザから受信すると、リスナを実行しているマシンで千ものプロセスが開始
されることとなり、サーバ上の使用可能なリソースを使い果たすこととなる。
が開始され実行され終了されることである。すなわち、第1の組の10のリクエ
ストの後に第2の組の10のリクエストが続く場合、その第1の組のリクエスト
に対して第1の組の10のプロセスが開始され終了され、その第2の組のリクエ
ストに対して第2の組の10のプロセスが開始され終了されることとなる。CG
Iではプロセスの開始に関連するオーバーヘッドを避けるため、第1の10のリ
クエストに対して用いられた10のプロセスと同じものを第2の10のリクエス
トを処理するのに用いることが許されていない。
イン」拡張を用いることである。プラグイン拡張はサーバに送られたメッセージ
をさまざまな段階で代行受信して特定のユーザリクエストに対してアプリケーシ
ョンに特有の処理を行なう。サーバ側のプラグインはリスナおよび他のすべての
サーバ側プラグインと同じアドレス空間において実行される。よって、プラグイ
ンを設計するアプリケーション開発者はリスナの下位レベルのオペレーションの
詳細に精通していなければならない。さらに、リスナと同じアドレス空間でプラ
グインを実行することによりリスナを安全性および安定性の面で危険にさらすこ
ととなる。障害のあるプラグインにより、他のプラグインまたはリスナそのもの
がクラッシュしたり、または予測できない態様で動作してしまうこともある。
プラグイン動作がリスナを実行しているマシンと同じマシン上で実行されること
である。プラグイン拡張によって実行されるタスクは他のマシンに負荷を転嫁す
ることができないため、プラグインによるアプローチのスケーラビリティ(scal
ability)は大幅に制限される。
で分散環境においてオペレーションを実行するための方法およびシステムが提供
される。分散環境により、ブラウザリクエスト内で特定されるオペレーションを
実行するプロセス(「カートリッジインスタンス」)が、そのリクエストを受取
るリスナおよびそのリクエストを発行するブラウザとは異なるマシン上で実行で
きる。カートリッジインスタンスがリスナとは異なるマシン上にあるため、リス
ナは障害のあるカートリッジインスタンスからよりよく隔離されることとなり、
システムの信頼性および安全性が向上する。さらに、リスナが実行されるマシン
と同じマシンでなく、数多くのマシン間でカートリッジインスタンスを実行する
処理の負担を分散することによってシステムのスケーラビリティが大幅に増加す
る。複数のマシンにわたってカートリッジインスタンスの実行を分散できること
から、いつどこで新しいカートリッジインスタンスを生じさせるかを決定するの
に数多くのタイプの負荷の最適配分の技法を用いることができる。
た性質から得られる恩恵を享受できる。より明確には、カートリッジはそれらが
分散システムの一部として動作しているという事実を「意識する」必要がない。
なぜなら、カートリッジはここでカートリッジ実行エンジンと称するモジュール
によって分散システムの複雑さから隔離されるためである。このようにして達成
される隔離により、カートリッジ開発者らはマシン間通信の複雑さではなくカー
トリッジが目的とする課題に専念することができる。
カートリッジ実行エンジンは第1のマシンとは異なる第2のマシン上で実行され
る。ディスパッチャはオペレーションの実行をリクエストする第1のメッセージ
をウェブリスナから受取る。この第1のメッセージはウェブリスナがブラウザか
らブラウザリクエストを受取ったことに応答してディスパッチャに送られたもの
である。
ンに第2メッセージを送る。この第2のメッセージに応答して、カートリッジ実
行エンジンは第2のマシン上で実行されているカートリッジに第3のメッセージ
をわたす。この第3のメッセージを受けたことに応答して、カートリッジはオペ
レーションを実行する。カートリッジへのリクエストはカートリッジ実行エンジ
ンを介して送られカートリッジ実行エンジンはカートリッジと同じマシン上に存
在するため、カートリッジ実行エンジンによりカートリッジはマシン間通信をサ
ポートすることの複雑さから効果的に隔離される。
ションを実行するためのシステムが提供される。このシステムは複数のウェブリ
スナに結合される複数のディスパッチャ、マシン間通信機構および複数のカート
リッジを含む。カートリッジは標準カートリッジインターフェイスを介して呼出
されるが、種々のオペレーションを行なう。
し、かつ標準カートリッジインターフェイスを介して複数のカートリッジ内のル
ーチンに対して呼出を行なうことによって、複数のカートリッジと通信する複数
のカートリッジ実行エンジンを含む。各ディスパッチャは、特定のカートリッジ
があるオペレーションを行なうことを必要とするブラウザリクエストをウェブリ
スナが受取ったことに応答して、複数のカートリッジ実行エンジンのうちの特定
のカートリッジ実行エンジンに対してマシン間通信機構を介して第1のメッセー
ジを送るよう構成される。この特定のカートリッジ実行エンジンはこの第1のメ
ッセージに応答して、オペレーションを行なう特定のカートリッジ内のルーチン
を標準カートリッジインターフェイスを介して呼出すように構成される。
添付の図面において類似の参照番号は類似の要素を指す。
する。以下において説明のため、この発明の完全な理解をもたらすように数多く
の特定の詳細事項を挙げている。しかしながら、当業者にはこの発明がこれらの
特定の詳細事項がなくても実施できることが明らかになるであろう。場合によっ
ては不必要にこの発明を曖昧にすることを避けるため周知の構造および装置をブ
ロック図の形態で示している。
ブロック図である。コンピュータシステム100は、バス102または情報を通
信するための他の通信機構と、バス102に結合され情報を処理するためのプロ
セッサ104とを含む。コンピュータシステム100はまた、バス102に結合
され情報およびプロセッサ104が実行すべき命令を蔵置するための、ランダム
アクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ106を
含む。メインメモリ106はまた、プロセッサ104が実行すべき命令の実行の
間に一時変数または他の中間情報を蔵置するのに用いられてもよい。コンピュー
タシステム100はさらに、バス102に結合され静的情報およびプロセッサ1
04に対する命令を蔵置するための読取専用メモリ(ROM)108または他の
静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置110が設
けられ、バス102に結合されて情報および命令を蔵置する。
の表示装置112に結合されコンピュータユーザに対して情報を表示してもよい
。英数字および他のキーを含む入力装置114がバス102に結合され、情報お
よびコマンド選択をプロセッサ104に伝える。別のタイプのユーザ入力装置は
、プロセッサ104に方向情報およびコマンド選択を伝え、かつ表示装置112
上のカーソル移動を制御するためのマウス、トラックボールまたはカーソル方向
キーなどのカーソル制御装置116である。この入力装置は典型的に2つの軸、
すなわち第1の軸(たとえばx)および第2の軸(たとえばy)において2つの
自由度を有し、これは装置が平面上の位置を特定できるようにする。
応答して特定のオペレーションを行なうことに関する。この発明の一実施例によ
れば、プロセッサ104がメインメモリ106に含まれる1つ以上の命令の1つ
以上のシーケンスを実行することに応答してコンピュータシステム100がオペ
レーションを行なう。このような命令は、記憶装置110などの別のコンピュー
タ可読媒体からメインメモリ106に読込んでもよい。メインメモリ106に含
まれる命令のシーケンスを実行することにより、プロセッサ104がここに説明
するプロセスステップを実行することとなる。代替の実施例では、ソフトウェア
命令の代わりにまたはソフトウェア命令と併せて、結線回路を用いてこの発明を
実現してもよい。すなわち、この発明の実施例はハードウェア回路およびソフト
ウェアの如何なる特定の組合せにも限定されない。
04に命令を提供するのにかかわるすべての媒体を指して用いる。このような媒
体は、不揮発性媒体、揮発性媒体および伝送媒体を含むが、これらに限定されな
い数多くの形態を取り得る。不揮発性媒体には、たとえば、記憶装置110など
の光ディスクまたは磁気ディスクが含まれる。揮発性媒体には、メインメモリ1
06などのダイナミックメモリが含まれる。伝送媒体には、バス102を構成す
るワイヤを含む、同軸ケーブル、導線および光ファイバが含まれる。伝送媒体は
また、電波および赤外線データ通信において生成されるもののような音波または
光波の形態を取ることもある。
レキシブルディスク、ハードディスク、磁気テープまたは何らかの他の磁気媒体
、CD−ROMおよび何らかの他の光媒体、パンチカード、せん孔テープおよび
孔のパターンを有する何らかの他の物理的媒体、RAM、PROM、EPROM
、FLASH−EPROMおよび何らかの他のメモリチップまたはカートリッジ
、以下に説明するような搬送波、またはコンピュータが読むことのできるもので
あればどのような他の媒体でも含まれる。
える上でさまざまな形態のコンピュータ可読媒体がかかわり得る。たとえば、命
令は初めに遠隔コンピュータの磁気ディスク上に担持されてもよい。遠隔コンピ
ュータは命令をそのダイナミックメモリにロードし、その命令をモデムを用いて
電話回線を介して送ることができる。コンピュータシステム100がローカルに
有するモデムが電話回線上でデータを受取り、赤外線送信機を用いてそのデータ
を赤外線信号に変換できる。バス102に結合される赤外線検出器は赤外線信号
で運ばれるデータを受取り、そのデータをバス102上に出力することができる
。バス102はそのデータをメインメモリ106へ運び、そこからプロセッサ1
04は命令を取出して実行する。メインメモリ106が受取った命令は場合によ
り、プロセッサ104による実行の前または後に記憶装置110に蔵置されても
よい。
ェイス118を含む。通信インターフェイス118はローカルネットワーク12
2に接続されるネットワークリンク120への両方向データ通信結合を提供する
。たとえば、通信インターフェイス118は、対応するタイプの電話回線に対し
てデータ通信接続を提供するサービス統合デジタル網(ISDN)カードまたは
モデムであってもよい。別の例としては、通信インターフェイス118は、互換
性のあるローカル・エリア・ネットワーク(LAN)に対するデータ通信接続を
提供するローカル・エリア・ネットワーク(LAN)カードであってもよい。ま
た、無線リンクを実現してもよい。このような実現例のいずれにおいても、通信
インターフェイス118はさまざまなタイプの情報を表わすデジタルデータスト
リームを運ぶ電気信号、電磁気信号または光信号を送受信する。
ータ装置へのデータ通信を提供する。たとえば、ネットワークリンク120はロ
ーカルネットワーク122を介してホストコンピュータ124または、インター
ネットサービスプロバイダ(ISP:Internet Service Provider)126によ り運用されるデータ装置に対する接続を提供してもよい。ISP126はこれを
受けて、現在一般的に「インターネット」128と称される世界規模のパケット
データ通信網を介するデータ通信サービスを提供する。ローカルネットワーク1
22およびインターネット128はともに、デジタルデータストリームを運ぶ電
気信号、電磁気信号または光信号を用いる。コンピュータシステム100へまた
はコンピュータシステム100からデジタルデータを運ぶ、さまざまなネットワ
ークを介する信号およびネットワークリンク120上の、通信インターネット1
18を介する信号は情報を運ぶ搬送波の典型的な形態である。
び通信インターネット118を介して、メッセージを送り、プログラムコードを
含むデータを受取ることができる。インターネットの例では、サーバ130はイ
ンターネット128、ISP126、ローカルネットワーク122および通信イ
ンターネット118を介してアプリケーションプログラムに対するリクエストさ
れたコードを送信するかもしれない。
され、および/または後に実行するために記憶装置110または他の不揮発性記
憶に蔵置されてもよい。このように、コンピュータシステム100は搬送波の形
態でアプリケーションコードを得ることもある。
である。システム200は、HTTPプロトコルに従ってインターネット208
にわたって複数のリスナ210、216および222と通信する複数のブラウザ
202、204および206を含む。ブラウザからのリクエストに応答して、リ
スナはウェブアプリケーションサーバ280にここでカートリッジと称するソフ
トウェアモジュールを呼出させる。例示の実施例では、ウェブアプリケーション
サーバ280は3つのカートリッジ230、234および238の実行を開始し
ている。
218および224、ディスパッチャ214、220および226、認証サーバ
252、仮想パスマネージャ250、リソースマネージャ254、コンフィギュ
レーションプロバイダ256および複数のカートリッジ実行エンジン228、2
32および236を含む、数多くの構成要素からなる。ウェブアプリケーション
サーバ280のさまざまな構成要素について以下により詳しく説明する。
素はオブジェクトリクエストブローカ(Object Request Broker)282などの マシン間通信機構を介して通信する。マシン間通信機構を用いることにより、ブ
ラウザリクエストにおいて特定されるオペレーションを実行するカートリッジイ
ンスタンスは、リクエストを受取るリスナおよびリクエストを発行するブラウザ
とは異なるマシン上で実行することができる。カートリッジインスタンスがリス
ナとは異なるマシン上にあるため、リスナは障害のあるカートリッジインスタン
スからよりよく隔離されることとなり、システムの信頼性および安全性が向上す
る。さらに、リスナが実行されるマシンと同じマシンでなく、数多くのマシン間
でカートリッジインスタンスを実行する処理の負担を分散することによってシス
テムのスケーラビリティが大幅に増加する。複数のマシンにわたってカートリッ
ジインスタンスの実行を分散できることから、いつどこで新しいカートリッジイ
ンスタンスを生じさせるかを決定するのに数多くのタイプの負荷の最適配分の技
法を用いることができる。
る。 ブラウザがインターネット208にわたってリクエストを送信する。
ッチャに渡す。
のに適切なカートリッジを判定する。
ャがそのカートリッジに関する使用されていないインスタンスのことを知ってい
る場合、ディスパッチャはそのインスタンスにリクエストを送る。そのカートリ
ッジに関して使用されていないカートリッジインスタンスがない場合、ディスパ
ッチャはリソースマネージャ254に新しいカートリッジインスタンスを作るよ
う依頼する。そのインスタンスがうまく起動した後に、カートリッジはその存在
をリソースマネージャに知らせる。リソースマネージャ254はそこで、ディス
パッチャに新しいインスタンスのことを知らせる。ディスパッチャはブラウザリ
クエストに基づいて変更されたリクエストを作り、その変更されたリクエストを
新しいインスタンスに送る。
ッチャに応答を送る。
ードのモジュールである。カートリッジはシステム200における分散の基本単
位を形成する。この発明の一実施例によれば、カートリッジはユニバーサル・リ
ソース・ロケータ(URL)を用いて名付けられる。すなわち、カートリッジ名
には2つの部分、すなわちカートリッジが存在するサーバのIPアドレスと、コ
ンパイルされたカートリッジコードのサーバディレクトリ構造における仮想パス
とがある。カートリッジはURLを用いて名付けられるため、カートリッジ名空
間はグローバルであり、文書などの他のウェブリソースにアクセスするのに用い
られるのと同じメッセージ通信技術を用いてカートリッジにアクセスすることが
できる。
て共通の全体構造をもたらす標準インターフェイスを有する。この標準インター
フェイスは、特定の条件の下でウェブアプリケーションサーバ280により呼出
されるルーチンのインターフェイスを規定する。この発明の一実施例によれば、
抽象カートリッジインターフェイスは以下のとおりである。
ことには、いくつかのサブオブジェクトのコンストラクタを呼出すことと、スレ
ッドを予め分岐させることと、他のすべての必要となる共用リソースを獲得する
こととが含まれ得る。
シャットダウンする役割を果たす。カートリッジインスタンスに対して一度shut
down()ルーチンが呼出されると、直ちにカートリッジインスタンスは後続のリク
エストを処理するのに利用不可能となる。
ライアントがそのサービスを用いることを許可されているかどうかを検証する。
パッチする包括的なやり方である。
れるか、またはあるアプリケーションのためのインタプリタまたはルーチン環境
として作用するプログラム可能なカートリッジとして構成される。プログラム可
能なカートリッジの一例はPL/SQLランタイムであり、これは構造的問合せ
言語(Structured Query Language)を用いるオラクルベースのプログラム言語 (Oracle-based Programming Language)(PL/SQL)に従ってデータベー スクエリーを処理するよう構成される。PL/SQLランタイムはデータベース
クエリーを有するブラウザリクエストを実行する。PL/SQLランタイムは、
たとえば、データリンクを介してカートリッジインスタンスと通信しているデー
タベースサーバにアクセスすることによってリクエストを処理する。
ある。JAVAランタイムインタプリタカートリッジのおかげで、ウェブアプリ
ケーション開発者らはブラウザリクエストを処理するためのサーバ側のJAVA
アプリケーションを書くことができる。同様に、たとえば第三者のサーバによっ
て実行されるプロセスにアクセスするなどの動的オペレーションをもたらすため
に、カスタムサーバをカートリッジとして構成してもよい。
選択するよう構成されるソフトウェアモジュールである。この発明の一実施例に
よれば、ディスパッチャはサーバ側のプログラム拡張(すなわち、「プラグイン
」)として実現される。そのため、ディスパッチャはそれらが属するリスナと同
じアドレス空間にロードされそこで実行される。ディスパッチャはコンパイル時
にリスナコードとリンクされてもよいし、実行時に動的にロードされてもよい。
れ、リスナ210、216および222に関連付けられる。ディスパッチャ21
4、220および226は、リスナ210、216および222が受取ったブラ
ウザリクエストをカートリッジへ選択的に経路制御する。
orm Resource Locator)の形態で運ばれるブラウザリクエストをインターネット
208から受取ると仮定する。このブラウザリクエストは、たとえばHTMLペ
ージまたは実行すべきオペレーションであるウェブオブジェクトに対する識別子
の役割を果たす。リスナ210はそのブラウザリクエストの解釈を全く試みるこ
となくディスパッチャ214に受渡す。ブラウザリクエストを受取ると、ディス
パッチャ214は、 (1) 仮想パスマネージャ250と通信してブラウザリクエストによって選
択されるカートリッジを識別し、かつそのカートリッジが認証を要するかどうか
を判定し、 (2) そのカートリッジが認証を必要とする場合、認証サーバ252と通信
してブラウザがその選択されたカートリッジにアクセスすることが許されるかど
うかを判定し、 (3) アクセスが許可された場合に、リソースマネージャと通信してブラウ
ザリクエストを送るべき選択されたカートリッジの特定のインスタンスを定め、 (4) カートリッジの特定されたインスタンスによる実行のため、変更され
たブラウザリクエストを作りかつディスパッチする。
パッケージする。変更されたブラウザリクエストはたとえば、カートリッジの正
しいオペレーションに必要なデータを含むコンテキストオブジェクトを含んでい
てもよい。カートリッジの正しいオペレーションに必要なデータには、たとえば
、そのブラウザリクエストが関連付けられるトランザクションを識別するトラン
ザクションIDが含まれる。
にその返答を送り、ディスパッチャはこの返答をリスナに渡してそのリクエスト
を開始したブラウザへ送信されるようにする。
用いるべきカートリッジはまずウェブアプリケーションサーバ280に登録され
る。登録プロセスの間、そのカートリッジに関する情報がコンフィギュレーショ
ンプロバイダ256に供給される。コンフィギュレーションプロバイダ256は
その情報をメタデータ258として蔵置してウェブアプリケーションサーバ28
0の構成要素が後からアクセスできるようにする。
を実行するためカートリッジ実行エンジンが用いるプログラムに依存した関数名
、 (6) カートリッジを実行するためのマシンのリスト、 (7) カートリッジのためのアイドルタイム(カートリッジのインスタンス
がシャットダウンされる前にアイドル状態でいることができる時間量)、 (8) オブジェクト識別子および (9) もしあれば、カートリッジとともに用いるべき、認証サービスのタイ
プを示すデータ を含んでいてもよい。
リクエストするためにブラウザリクエストが供給しなければならないデータを特
定する。オブジェクトタイプは特定のワードまたはURLであってもよく、また
は「/java」などの仮想パスを含んでいてもよい。
コンフィギュレーション情報をメタデータ258内に蔵置すると、そのカートリ
ッジはウェブアプリケーションサーバ280が起動される際に自動的に登録され
る。
スマネージャ254はカートリッジに対する最小インスタンスをイニシエートす
る。一度最小数のインスタンスがイニシエートされると、ウェブアプリケーショ
ンサーバ280はブラウザリクエストを処理する準備が整う。
々の変更されたブラウザリクエストをどこに経路選択するかを定める。特定的に
は、各ブラウザリクエストは典型的にURLを含む。ブラウザリクエストを受取
ると、ディスパッチャはそのリクエスト内のURLを仮想パスマネージャ250
に送る。仮想パスマネージャ250はこれに応答して、もしあれば、URLに関
連付けられるカートリッジを識別するデータをディスパッチャに送る。
0はURLをカートリッジにマッピングするメタデータ258を調べる。ブラウ
ザリクエストを受取ったことに応答して、仮想パスマネージャ250はマッピン
グデータを用いて、もしあれば、ブラウザリクエストに含まれるURLに対応す
るカートリッジを判定する。
ス「/java」を有するリクエストを取扱うよう構成されていることが示されるか もしれない。
連付けられたカートリッジが認証を必要とするかどうかを判定する。カートリッ
ジが認証を要する場合、仮想パスマネージャ250はディスパッチャに送る応答
において、認証が必要であることを示す。認証が必要でない場合、ディスパッチ
ャは認証サーバ252を呼出すことなく、カートリッジのインスタンスに対する
変更されたブラウザリクエストを作って送る。認証が必要である場合、変更され
たリクエストをカートリッジのインスタンスに送出してもよいことを認証サーバ
が示した後に初めてディスパッチャはそのカートリッジのインスタンスに変更さ
れたリクエストを送る。
リッジに対して予め定められた最小数のインスタンスをイニシエートし、各カー
トリッジのインスタンスの間で負荷の最適配分を行ない、所与のカートリッジの
予め定められた最大数のインスタンスまで必要に応じてカートリッジの新しいイ
ンスタンスをイニシエートすることによってカートリッジの各々の実行を管理す
る。
を含んでいると仮定する。
ースマネージャ254はC1の10のインスタンスをイニシエートさせる。リソ
ースマネージャ254はラベルM1、M3およびM8に関連付けられるマシン上
の10のインスタンスをイニシエートすることになる。
ネージャ254はC1のいずれかの既存のインスタンスが利用可能であるかどう
かを判定する。リクエストを受取った際にC1のどのインスタンスも利用可能で
ない場合、リソースマネージャ254はC1の最大数のインスタンスが既に実行
されているかどうかを判定する。C1の最大数のインスタンスが既に実行されて
いない場合、リソースマネージャ254は可能なホストマシンの1つの上でC1
の新しいインスタンスをイニシエートし、リクエストを発行したディスパッチャ
にこの新しいインスタンスを識別するメッセージを送信する。C1の最大数のイ
ンスタンスが既に実行されている場合、リソースマネージャ254はリクエスト
を発行したディスパッチャに対し、その時点でそのリクエストを取扱うことがで
きないことを示すメッセージを送る。
配分の規則を適用して、2つ以上の可能なホストマシンがある中、カートリッジ
のインスタンスをどこでイニシエートするかを定める。すなわち、上の例では、
M1、M2およびM3はすべてカートリッジC1のインスタンスを実行すること
が可能である。M1、M2およびM3が同じ処理能力を有する場合、インスタン
スを3つのマシンにわたって均等に分散するのが望ましいであろう。しかしなが
ら、M1がM2およびM3の10倍の処理力を有するなら、C1のインスタンス
のすべてをある時点まではM1でイニシエートし、それからさらなるインスタン
スをM1、M2およびM3の間で均等に分散させるのが望ましいであろう。
ネージャ254を助けるため、各カートリッジに対して蔵置されるメタデータは
さらなる詳細を含んでいてもよい。たとえば、メタデータは各マシンに対してイ
ンスタンスの別個の最小および最大数を特定してもよい。マシンごとの最小およ
び最大値を、すべてのマシンに適用される最小および最大値の代わりにまたはそ
れと併せて用いてもよい。その場合リソースマネージャ254は、そのマシンの
ための最大許容可能なインスタンスに対して現在実行されているインスタンスの
比が最も低いマシンはどれかに基づいて、マシン間で新しいインスタンスを分散
させることができる。
を特定してもよい。その順序においてN+1の位置にあるマシンは、その順序に
おいてN番目の位置にあるマシンが既にN番目のマシンで許容されるその最大数
のインスタンスを実行している場合にだけカートリッジのインスタンスを実行す
るのに用いられる。
それに加えて、リソースマネージャ254はまた、さまざまなシステムパラメー
タを考慮してどのマシンがカートリッジの新しいインスタンスをホストすべきで
あるかを定めてもよい。そのようなパラメータにはたとえば、マシン上の使用さ
れていないメモリの量、そのマシン上で現在実行されているプロセッサの総数、
マシンのタイプなどが含まれていてもよい。各々の可能なマシンに対し、リソー
スマネージャ254はこれらのパラメータの加重平均を定める。加重平均が最も
高いマシンが新しいカートリッジインスタンスをホストするよう選択される。
ッジインスタンスを管理するためステート情報を維持する。ステート情報には、
インスタンスを識別し、そのインスタンスを実行するマシンを識別し、そのイン
スタンスが割当てられたリスナを識別するデータが含まれる。
し得る表500が示される。表500には、インスタンス列502、カートリッ
ジ列504、リスナ列506およびマシン列508が含まれる。表500の各行
は別個のカートリッジインスタンスに対応する。所与のカートリッジインスタン
スに対する行内で、カートリッジ列504はカートリッジインスタンスに関連づ
けられるカートリッジを識別し、インスタンス列502はそのカートリッジイン
スタンスのインスタンス番号を示す。たとえば、行510はカートリッジC1の
インスタンスに対応する。このため、行510のカートリッジ列504はカート
リッジC1を示す。行510のインスタンス列502は行510に関連づけられ
るカートリッジインスタンスがカートリッジC1のインスタンス1であることを
示す。
てられたリスナを示す。マシン列508は、ある行に関連づけられるカートリッ
ジインスタンスが実行されているマシンを示す。たとえば、行510に関連づけ
られるカートリッジインスタンスはリスナ210に割当てられており、マシンM
1上で実行されている。
が設けられているリスナに割当てられたカートリッジインスタンスに対するステ
ート情報を維持する。このようなステート情報はたとえば、図4に示されるよう
な表400において維持されてもよい。表500と同様に、表400にはそれぞ
れインスタンス番号およびカートリッジ識別子を保持するインスタンス列402
およびカートリッジ列404が含まれる。しかしながら、表500ではリソース
マネージャ254によって割当てられるすべてのカートリッジインスタンスに対
して1つずつエントリが含まれるのに対し、表400では特定のリスナに割当て
られたカートリッジインスタンスに対するエントリしか含まれない。たとえば、
表400は、表500に列挙されたカートリッジインスタンスのうちリスナ20
0に割当てられたもののみに対するエントリを含む。
テータス列406が含まれる。各行に対し、ステータス列406はその行に関連
づけられるインスタンスのステータスを示す値を保持する。たとえば、行408
のステータス列406はカートリッジC1にインスタンス1が現在ビジーである
ことを示している。例示される実施例では、ステータス列406はカートリッジ
インスタンスがBUSYまたはFREEのいずれかであることを示すフラグを保
持する。カートリッジステータスの重要性について、リソースマネージャ254
とディスパッチャ214および220とのオペレーションに関連して以下に説明
する。
クエストを送る必要がある際にリソースマネージャ254と通信する。この発明
の一実施例によれば、ディスパッチャはまず、適当なカートリッジのインスタン
スが(1)これに既に割当てられているかどうか、また(2)新しい変更された
ブラウザリクエストを処理するのに利用可能であるかどうかを判定する。適当な
カートリッジインスタンスがディスパッチャに既に割当てられており新しい変更
されたブラウザリクエストを処理するのに現在利用可能である場合、ディスパッ
チャはリソースマネージャ254とさらに通信することなく、変更されたブラウ
ザリクエストをカートリッジインスタンスへ転送する。
ればならないブラウザリクエストをリスナ210が受取ったと仮定する。また、
表400がリスナ210に割当てられたカートリッジインスタンスの現在のリス
トおよびステータスを反映すると仮定する。リスナ210からブラウザリクエス
トを受取ると、ディスパッチャ214は表400を調べてカートリッジC1のF
REEインスタンスがあるか探す。例示される表400では、行410がカート
リッジC1のインスタンス3が現在FREEであることを示している。したがっ
て、ディスパッチャ214はさらにリソースマネージャ254と通信することな
く変更されたブラウザリクエストを直接カートリッジC1のインスタンス3に転
送する。変更されたブラウザリクエストを送ることに応答してディスパッチャ2
14は行410のステータス列406のステータス値をBUSYに変える。
れていない場合、カートリッジに関連づけられるディスパッチャはリソースマネ
ージャ254からのカートリッジインスタンスをリクエストする。必要とされる
カートリッジのインスタンスが利用可能でなく、かつ必要とされるカートリッジ
の既存のインスタンスの数が最大数より下であることをリソースマネージャ25
4が判定した場合、リソースマネージャ254は新しいカートリッジをイニシエ
ートする。新しいカートリッジをイニシエートする際に、リソースマネージャ2
54は表500に新しいカートリッジインスタンスのためのエントリを挿入する
。
リスナ210が受取ったと仮定する。また、カートリッジC3のインスタンス3
がまだイニシエートされていないものと仮定する。こうした条件の下では、ディ
スパッチャ214はリソースマネージャ254にカートリッジC3のインスタン
スに対するハンドルを求めるリクエストを送る。このリクエストに応答して、リ
ソースマネージャ254はマシンM3上でカートリッジC3のインスタンス3を
イニシエートする。さらに、リソースマネージャ254は行512に見られるエ
ントリを表500に挿入する。
、リソースマネージャ254はディスパッチャ214に新しく作られたインスタ
ンスに対するハンドルを送り返す。このハンドルを受取ったことに応答して、デ
ィスパッチャ214はそのステータス表400に新しいインスタンスのためのエ
ントリ(行412)を挿入する。ディスパッチャ214はそこで、変更されたブ
ラウザリクエストをカートリッジC3のインスタンス3に送信する。
ブラウザリクエストに応答し終わった際にカートリッジインスタンスの所有権を
自動的に解放することはない。たとえば、カートリッジC3のインスタンス3が
変更されたブラウザリクエストを受取り、その変更されたブラウザリクエストを
処理して、ディスパッチャ214に応答を送り返すと想定する。ディスパッチャ
214はその応答をリスナ210に渡し、これがブラウザリクエストを発行した
ブラウザに送り返されるようにする。
はや必要としない。しかしながら、カートリッジC3のインスタンス3の所有権
をリソースマネージャ254に戻す代わりに、ディスパッチャ214は単に行4
12のステータス列406をBUSYからFREEに変える。
リッジC3のインスタンス3がもはやリクエストを処理しておらず、よって後続
のリクエストを処理する準備ができていることが示される。しかしながら、カー
トリッジC3のインスタンス3が利用可能であることを示す表400はディスパ
ッチャ214によって局所的に維持されているため、カートリッジC3のインス
タンス3はリスナ210に到達する後続のブラウザリクエストに対してだけ利用
可能である。リソースマネージャ254が維持する表500の行512はカート
リッジC3のインスタンス3をリスナ210が所有していることを引続き示す。
解放するわけではないため、リソースマネージャ254とさまざまなディスパッ
チャとの間での通信に関連するオーバーヘッドは大幅に減少される。たとえば、
カートリッジC3に伝えなければならない10の連続したリクエストをリスナ2
10が受取るものと仮定する。10のリクエストの各々に対してリソースマネー
ジャ254と通信するのではなく、ディスパッチャ214は最初のリクエストに
応答してリソースマネージャ254と通信してもよい。ディスパッチャ214は
後続の9つのリクエストをリソースマネージャ254と通信することなく処理す
ることができるが、これはディスパッチャ214が最初のリクエストを処理する
C3の同じインスタンスを用いて9つの後続のリクエストを処理するためである
。
的に解放しないことでウェブアプリケーションサーバ280の効率が向上される
とはいえ、リスナは無期限にカートリッジインスタンスの所有権を維持すること
はできない。たとえば、長い期間にわたって用いられなかったインスタンスはリ
ソースマネージャ254に戻され、リソースを空けるためにその割当ての解除が
できるようにすべきである。さらに、他のリスナがそのカートリッジのインスタ
ンスを必要としているところに、1つのリスナが比較的長い時間使っていなかっ
たカートリッジのインスタンスの所有権を維持することは効率的ではない。
インスタンスのための最大アイドルタイムを各リスナに伝える。最大アイドルタ
イムとは、リスナがカートリッジインスタンスの所有権を解放しなければならな
くなる前にそのカートリッジインスタンスが使用されない状態でいられる最大の
時間を示すものである。たとえば、カートリッジC3のインスタンス3のための
最大量のアイドルタイムが10分であることをリソースマネージャ254がリス
ナ210に示すものと仮定する。この情報に基づいて、リスナ210は、カート
リッジC3のインスタンス3が10分より長い間アイドル状態またはFREEと
ならない限りにおいてカートリッジC3のインスタンス3を続けて用いてカート
リッジC3に対するブラウザリクエストを処理することができる。
合、ディスパッチャ214は表400から行412を取除き、リスナ210がカ
ートリッジC3のインスタンス3の所有権を解放することをリソースマネージャ
254にメッセージを送って知らせる。このメッセージに応答して、リソースマ
ネージャ254は行512を更新して、カートリッジC3のインスタンス3がい
ずれのリスナによっても所有されておらず、よって別のリスナに再割当てされる
か終了され得ることを示す。
した際にもディスパッチャはカートリッジインスタンスを自動的に解放しない。
代わりに、ディスパッチャはリソースマネージャ254にメッセージを送り、満
了となったインスタンスを解放することを申し出る。リソースマネージャ254
はこの申し出に応答して、リスナがカートリッジインスタンスを解放するようリ
クエストするか、またはリスナがその満了となったカートリッジインスタンスの
所有権を持ち続けることを許可してもよい。
とのできないリクエストのキューを維持する。キュー内のリクエストを処理する
ことが可能となると、そのリクエストはキューから取除かれ処理される。
リスナ222が受取り、そのリスナ222にカートリッジC1のいずれのインス
タンスも割当てられていなかったと仮定する。ディスパッチャ226はリソース
マネージャ254にC1のインスタンスに対するリクエストを送る。さらに、C
1の最大50のインスタンスが許容され、C1の50のインスタンスがリスナ2
10に割当てられたと仮定する。こうした条件の下では、リソースマネージャ2
54はリスナ222からのリクエストを処理することができない。このため、リ
ソースマネージャ254はそのリクエストをキューにおく。リスナ210がC1
のインスタンスを解放すると、リソースマネージャ254はリスナ222にC1
のインスタンスが利用可能であることを伝える。
リッジインスタンスを解放させることがある。たとえば、リソースマネージャ2
54はシステムオーバロード状況を検出し、これに応答して1組のカートリッジ
インスタンスを終了することがあり、これはそのカートリッジインスタンスが終
了されることになることをそのカートリッジインスタンスが現在割当てられてい
るリスナに知らせる前または知らせた後に行なわれる。
めに強制的にリスナにカートリッジインスタンスを解放させることがある。たと
えば、別のリスナが予め定められたしきい値より長い時間にわたってカートリッ
ジのインスタンスを待っている場合、リソースマネージャ254は所与のカート
リッジの最も多い数のインスタンスを保持するリスナにそのカートリッジのある
インスタンスを解放させてもよい。たとえば、リスナ210にカートリッジC1
の50のインスタンスが割当てられ、C1は最大で50のインスタンスを有する
場合、リソースマネージャ254は別のリスナからC1のインスタンスに対する
リクエストを受取ってから10秒後にリスナ210にC1のあるインスタンスを
解放させてもよい。
行エンジンおよびカートリッジから構成される。カートリッジ実行エンジンは、
ウェブアプリケーションサーバ280のさまざまな構成要素の間でメッセージを
通信するのに用いられるマシン間通信機構およびウェブアプリケーションサーバ
280の複雑さからカートリッジを隔離するコードモジュールである。
ることによってカートリッジ実行エンジンに利用可能となる。一実施例によれば
、すべてのカートリッジが、上述の例示のカートリッジインターフェイスにおい
て特定された関数を提供する。すべてのカートリッジが同じインターフェイスを
サポートするようにさせることにより、単一の標準カートリッジ実行エンジンを
すべてのカートリッジに対して用いることができる。
230、234および238の各々に対しカートリッジ実行エンジン228、2
32および236を含む。カートリッジ実行エンジンは標準のカートリッジイン
ターフェイスを介してカートリッジへの呼出を行なうことにより対応するカート
リッジの実行を制御する。カートリッジ実行エンジンとカートリッジとの間で基
本的なコールバック機能を確立することにより、そのカートリッジをコールバッ
ク機能に応答するよう構成し、次にそのカートリッジをコンフィギュレーション
プロバイダ256に登録することによってどんなカートリッジもウェブアプリケ
ーションサーバ280に統合することができる。
、カートリッジ実行エンジンは標準カートリッジインターフェイスを用いて共用
ライブラリ内のルーチンを呼出す実行可能なプログラムである。カートリッジ実
行エンジンはカートリッジとディスパッチャとの間でインターフェイスをもたら
し、カートリッジの制御のフローを指示し、カートリッジが用いるサービスを提
供する。
する場合、リソースマネージャ254はカートリッジ実行エンジンのインスタン
スを生成させる。これに対し、このようにして作られたカートリッジ実行エンジ
ンのインスタンスは適当なカートリッジのインスタンスを生成させる。リソース
マネージャ254はたとえば、カートリッジが実行されるマシン上にある「カー
トリッジ実行エンジンファクトリ」と呼出すことによってカートリッジ実行エン
ジンのインスタンスを生成させることができる。カートリッジ実行エンジンのイ
ンスタンスはたとえば、そのカートリッジを構成する共用ライブラリ内のルーチ
ンのうちの1つに呼出を行なうことによってカートリッジのインスタンスを生成
させることができる。
よびカートリッジ実行エンジンは単一のプロセスとして実行される。すなわち、
カートリッジはそのカートリッジへ呼出を行なうカートリッジ実行エンジンと同
じマシン上でかつ同じアドレス空間において実行される。このような実施例では
、カートリッジは実行の前にカートリッジ実行エンジンに静的にリンクされても
よく、または実行時にカートリッジ実行エンジンに動的にリンクされてもよい。
リッジとは別個のプロセスとして実行されてもよい。しかしながら、カートリッ
ジ開発者らのプログラミングの負担を軽減するために、カートリッジ実行エンジ
ンプロセスとその対応するカートリッジプロセスとは同じマシン上で実行される
。
て、カートリッジ開発者らはマシン間通信の複雑さに取組む必要がない。カート
リッジと、他のマシンにわたって分散されるウェブアプリケーションサーバの構
成要素との間でのすべての通信は、そのカートリッジと同じマシン上にあるカー
トリッジ実行エンジンを介して実行される。このように、カートリッジは複数の
マシンにわたって分散されるシステムにおいて用いられていることを意識しない
ということができる。
るのに適当なカートリッジであるとディスパッチャ214が判定すると、ディス
パッチャ214はそのPL/SQLランタイムカートリッジに関連づけられるカ
ートリッジ実行エンジンを含むカートリッジインスタンスにそのリクエストをデ
ィスパッチする。新しいインスタンスをイニシエートする必要がある場合、リソ
ースマネージャ254は別個のアドレス空間においてPL/SQLランタイムカ
ートリッジの新しいインスタンスを作り、その新しいインスタンスのカートリッ
ジ実行エンジン228へそのリクエストをディスパッチする。プログラムのイン
スタンスを実行するのに用いられるアドレス空間は、ウェブアプリケーションサ
ーバ280の構成要素の1つ以上が実行されているコンピュータシステムのメモ
リ内にあるか、または別のコンピュータシステム上にあってもよい。
ートリッジにリクエストハンドラコールバック機能を発行し、カートリッジにそ
のリクエストを処理させる。そのリクエストを処理するカートリッジはその結果
をカートリッジ実行エンジンに返し、カートリッジ実行エンジンはその結果をデ
ィスパッチャに転送する。ウェブアプリケーションサーバ280がオペレーショ
ンにおいて障害を検出した場合にはカートリッジ実行エンジンはカートリッジの
シャットダウン関数を発行する。
ーションを特定するウェブアプリケーションサーバ280へのアプリケーション
プログラミングインターフェイスを提供する。標準のカートリッジインターフェ
イスを使用することにより、カートリッジのプログラマが、カートリッジがとも
に用いられることになる特定のウェブリスナが用いるプロトコルとは無関係に、
各カートリッジをウェブアプリケーションサーバ280へ高レベルで統合化する
よう構成することができる。
ェイスおよびプロトコルを提供することによってそのようなプラグインの使用を
可能にする。残念なことに、リスナが提供するプログラミングインターフェイス
およびプロトコルはリスナごとに異なる。たとえば、ネットスケープ・サーバ・
アプリケーション・プログラミング・インターフェイス(NSAPI:Netscape
Server Application Programming Interface)、インターネット・サーバ・ア プリケーション・プログラミング・インターフェイス(ISAPI:Internet S
erver Application Programming Interface)およびアプリケーション開発イン ターフェイス(ADI:Application Development Interface)は現在リスナに よりもたらされる別個のプログラミングインターフェイスの3つの例である。
ーフェイスからディスパッチャを隔離する。特定的には、各トランスポートアダ
プタはさまざまなリスナのプロトコルを認識し、リスナから受取ったブラウザリ
クエストを変換してリスナのプロトコルとは無関係の標準ディスパッチャプロト
コルを有する変換されたブラウザリクエストを生じるよう構成される。同様に、
トランスポートアダプタはディスパッチャからの返答をリスナのトランスポート
プロトコルに変換する。
280を異なるベンダのリスナとともに用いることが可能となる。さらに、トラ
ンスポートアダプタは異なるサーバアーキテクチャおよびオペレーティングシス
テムに対応するよう構成されてもよい。
る方法を示すフロー図である。ステップ350においてリスナがブラウザリクエ
ストを受取る。説明のために、このブラウザリクエストはブラウザ202により
発行されリスナ210により受取られるものと仮定する。
ブアプリケーションサーバ280にそのリクエストを転送する。特定的には、リ
スナ210はリスナ210の私的プログラミングインターフェイスを用いてその
リクエストをトランスポートアダプタ212に渡す。トランスポートアダプタ2
12は、必要に応じてそのリクエストを標準ディスパッチャプログラミングイン
ターフェイスを用いて変換しそのリクエストをディスパッチャ214に渡す。
、ブラウザリクエストにより特定される仮想パスに基づいて、ステップ354に
おいてブラウザリクエストに対応するリクエストオブジェクトタイプを識別する
。ディスパッチャ214はステップ356において、そのリクエストオブジェク
トタイプが識別可能なカートリッジに対応するかどうかを判定する。そのリクエ
ストオブジェクトタイプが識別可能なカートリッジに対応していない場合、その
リクエストはステップ358においてリスナ210に戻される(図3Bを参照)
。ステップ358においてそのリクエストが静的HTMLページに対するリクエ
ストであることをリスナ210が認識すると、リスナはその静的HTMLページ
にアクセスし、そのHTMLページをステップ360においてブラウザ202に
送る。ブラウザリクエストがリスナ210によって認識されない場合、ステップ
360において返答がブラウザ202に送られそのリクエストが認識不可能であ
ったことを示す。
らないことと、(2)リスナ210にそのカートリッジの現在FREEであるイ
ンスタンスが1つも割当てられていないこととをディスパッチャ214が判定す
ると、ディスパッチャ214は、そのブラウザリクエストを送ることのできるカ
ートリッジ230のインスタンスが割当てられることになるリソースマネージャ
254と通信する。図3Bに示されるステップ362では、リソースマネージャ
254は、識別されたカートリッジのインスタンスが既存のインスタンスの数の
中で利用可能である(所有されていない)かどうかを判定する。説明のため、こ
のリクエストはカートリッジ230に関連づけられるものであり、カートリッジ
230はPL/SQLランタイムカートリッジであると仮定する。
えばPL/SQLランライム230のインスタンス260を識別すると、リソー
スマネージャ254はリクエストをインスタンス260に送るべきであることを
ディスパッチャ214に知らせる。ディスパッチャ214はそこで、変更された
ブラウザリクエストを作りステップ368においてインスタンス260のカート
リッジ実行エンジン228にその変更されたブラウザリクエストを送って、以下
に説明するように利用可能なインスタンス260にそのリクエストを処理させる
。
1つも利用可能でない場合、リソースマネージャ254はステップ364におい
て、既存のインスタンスの数が最大所定数を超えるかどうかを判定する。ステッ
プ364において既存のインスタンスの数が最大所定数を超える場合、リソース
マネージャ254はその時点ではそのリクエストを処理できないことをディスパ
ッチャ214に示す。これに応答して、ディスパッチャ214はステップ358
においてそのリクエストをリスナ210に返し、その後に、ウェブリスナ210
はステップ360においてネットワークを介してブラウザ202へ返答を送り、
そのリクエストが処理されなかったことを示す。
点で利用可能でない場合、リスナ210はそのカートリッジインスタンスに対す
る待ちリストにそのリクエストを入れてもよい。カートリッジインスタンスが利
用可能となると、変更されたブラウザリクエストが待ちリストから取除かれカー
トリッジインスタンスに転送される。変更されたブラウザリクエストが予め定め
られた時間より長い間待ちリストに残っている場合、リスナ210はそのリクエ
ストを待ちリストから取除いてブラウザ202にメッセージを送りそのリクエス
トが処理できなかったことを示すようにしてもよい。
、リソースマネージャ254は識別されたプログラムの新しいインスタンスをイ
ニシエートし、ブラウザリクエストに基づく変更されたブラウザリクエストを新
しいインスタンスに送るべきであることをディスパッチャ214に知らせる。そ
こでディスパッチャ214は変更されたブラウザリクエストをその新しいインス
タンスのカートリッジ実行エンジンへディスパッチする。
タンス260をイニシエートしたと仮定する。その初期化の間、PL/SQLラ
ンタイムのための蔵置された命令シーケンスにアクセスが行なわれ、ディスパッ
チャ214が実行しているアドレス空間とは別個のアドレス空間においてカート
リッジ230の新しいインスタンス260が作られる。一実施例によれば、初期
化はカートリッジ実行エンジン228をロードし、そのカートリッジ実行エンジ
ンにカートリッジ230内の初期化ルーチンを呼出させることによって行なわれ
る。
ップ368においてその新しいインスタンス260に関連づけられているカート
リッジ実行エンジン228にリクエストをディスパッチする。カートリッジ実行
エンジン228は新しいインスタンス260にコールバックメッセージを送りそ
のリクエストの実行を要求する。そのコールバックメッセージにおいて、カート
リッジ実行エンジン228はそのリクエストを処理する上でインスタンス260
が必要とする全てのパラメータを渡す。このようなパラメータにはたとえば、パ
スワード、データベース探索キー、またはインスタンス260が実行する動的オ
ペレーションのための他のどんな引き数を含んでいてもよい。
ンスタンスによるリクエストの実行の間、ディスパッチャ214はステップ37
0においてインスタンスを監視して障害が発生するかどうかを判定する。ステッ
プ370においてディスパッチャ214が障害を検出すると、ディスパッチャ2
14はステップ372において対応するカートリッジ実行エンジン228を呼出
し、その障害を有するインスタンス260を打ち切る。これに対し対応するカー
トリッジ実行エンジン228はAPIを通して障害のあるインスタンスに対して
シャットダウンコマンドを発行する。そのインスタンスはカートリッジ実行エン
ジン228によるシャットダウンコマンドに応答して、他のどんなアドレス空間
における他のどんなプロセスにも影響を与えることなくシャットダウンする。
テップ374において実行の完了の際にインスタンス260から返答を受取る。
ステップ376においてディスパッチャ214はその返答をリスナ210に転送
し、リスナ210は実行されたインスタンス260からの返答をもってブラウザ
に応答する。インスタンス260を実行した後、ステップ378においてディス
パッチャ214はステップ378に示されるようにメモリ内にインスタンスを維
持し、後続のリクエストの実行を可能にする。
要素は、それら構成要素が同じアドレス空間において実行される必要がなく同じ
マシン上で実行されることさえ必要としない通信機構を用いて互いに通信する。
例示される実施例では、ウェブアプリケーションサーバ280の構成要素はオブ
ジェクトリクエストブローカ(ORB:Object Request Broker)282を介し て通信するよう構成される。オブジェクトリクエストブローカは「共通オブジェ
クトリクエストブローカ:アーキテクチャおよび仕様(CORBA)」("Commo
n Object Request Broker: Architecture and Specification (CORBA)")に詳し
く記載されている。CORBAに関連するこのおよび他の文献はワールド・ワイ
ド・ウェブのhttp://www.omg.orgにおいて見つけることができる。
るが、他のクロスプラットフォーム通信機構を用いてもよい。たとえば、ウェブ
アプリケーションサーバ280の構成要素は代わりに、遠隔手続き呼出(RPC
:Remote Procedure Calls)、UNIXパイプ、Microsoft COMを用いて互いに 通信してもよい。
した通信機構を用いて互いに通信するため、構成要素が互いに対してどこに存在
するかということに関して固有の制約はない。たとえば、リスナ210、216
および222は同じマシン上で実行していてもよく、またはそれぞれがこのよう
なオペレーティングシステムを有する3つの完全に異なったマシン上で実行して
もよい。同様に、認証サーバ252、仮想パスマネージャ250、リソースマネ
ージャ254およびコンフィギュレーションプロバイダ256は同じマシン上で
実行していてもよく、または4つの異なるマシン上で実行していてもよい。さら
に、これらの4つの異なるマシンはリスナ210、216および222を実行す
る3つのマシンと少しも重複していなくてもよい。
エストブローカ282を介してウェブアプリケーションサーバ280の他の構成
要素と通信するのに必要な論理のすべてを組込んでいる。したがって、カートリ
ッジインスタンス自体の場所は通信機構によって本質的に制約されるものではな
い。すなわち、インスタンス260はこれがリクエストを受取るディスパッチャ
とは全く異なるマシンおよびオペレーティングシステムにおいて実行されてもよ
い。同様に、インスタンス260は、リソースマネージャ254、または同じウ
ェブアプリケーションサーバ280によって管理される他のカートリッジのイン
スタンスを含む、ウェブアプリケーションサーバ280の他の構成要素のいずれ
とも異なるマシンおよびオペレーティングシステム上にあってもよい。
が享受する場所の独立性は、カートリッジそのものにおける何らかのカスタムプ
ログラミングを介してではなくカートリッジ実行エンジンの通信論理を介して達
成される。したがって、分散アプリケーションサーバ環境における実行のために
特別にカートリッジを設計する必要がない。このように、カートリッジ設計者ら
は分散システムの複雑さから隔離され、カートリッジが作られる目的であるタス
クと関連する論理に労力を集中させることができる。
そのオブジェクトリクエストブローカを介して通信するすべてのモジュールはそ
れらのインターフェイスをインターフェイス定義言語(IDL:Interface Defi
nition Language)を用いて定義することを求められ、ある特定の基底クラスを 継承しその上に構築しなければならない。これらおよび他の込み入った事情のた
め、マシン間通信が可能であるモジュールを作ることは比較的複雑になっている
。カートリッジ実行エンジンがオブジェクトリクエストブローカからカートリッ
ジを隔離するため、カートリッジ開発者らはこれらの制約に従う必要がない。こ
のため、カートリッジ開発者らはカートリッジが実行することを求められる特定
のオペレーションを達成するためのコードを書くことに労力を集中させることが
できる。
なユーザリクエストを処理するウェブアプリケーションサーバ280が提供され
る。各カートリッジインスタンスはリスナとは別個のメモリ空間において実行さ
れ、このためサーバ側のプラグインに関連のある安全性の問題を回避できる。さ
らに、リスナが受取ったブラウザリクエストを処理するのに用いられるカートリ
ッジインスタンスはリスナとは全く異なるマシン上で実行されてもよい。このた
め、システムのスケーラビリティが向上すると同時に、いずれかの特定のマシン
の負担が軽減される。
各々に対するインスタンスの数を制御する。よって、サーバ側のリソースが制御
され、インスタンスが制御不可能なほど生成されることによって多数のリクエス
トがいずれかのマシンを圧倒することがないことが確実となる。
実行のスループットもまた向上する。単一の実行の後にインスタンスを終了して
、それから後続のリクエストの実行のためにインスタンスを再び作るためにメモ
リにカートリッジを再ロードするのではなく、さらにインスタンスをイニシエー
トしてメモリ内に維持して後続のリクエストを実行するようにしてもよい。
かしながら、この発明のより幅の広い精神および範囲から逸脱することなくさま
ざまな修正および変更を行なうことができることが明らかになるであろう。した
がって、明細書および図面は限定的な意味ではなく例示的な意味で考慮されるべ
きである。
ック図である。
ク図である。
のステップを示すフローチャートの一部の図である。
のステップを示すフローチャートの別の部分の図である。
表のブロック図である。
含む表のブロック図である。
プラグインオペレーションがリスナを実行しているマシンと同じマシン上で実行
されることである。プラグイン拡張によって実行されるタスクは他のマシンに負
荷を転嫁することができないため、プラグインによるアプローチのスケーラビリ
ティ(scalability)は大幅に制限される。 背景および、この発明の実施例により解決される課題についてのさらなる詳細
は、ナイジェル・エドワーズ(Nigel Edwards)およびオーエン・リーズ(Owen
Rees)による「安全性の高いウェブサーバおよびゲートウェイ」(“High secur
ity Web servers and gateways” COMPUTER NETWORKS AND ISDN SYSTEMS, 29, (
1997) 927-938.)と題された論文に記載されている。
ースマネージャ254はC1の10のインスタンスをイニシエートさせる。リソ
ースマネージャ254はラベルM1、M2およびM3に関連付けられるマシン上
の10のインスタンスをイニシエートすることになる。
かしながら、この発明のより幅の広い範囲から逸脱することなくさまざまな修正
および変更を行なうことができることが明らかになるであろう。したがって、明
細書および図面は限定的な意味ではなく例示的な意味で考慮されるべきである。
Claims (22)
- 【請求項1】 オペレーションを実行するための方法であって、第1のマシ
ン上でディスパッチャを実行するステップと、 第2のマシン上でカートリッジ実行エンジンを実行するステップとを含み、前
記第2のマシンは前記第1のマシンとは異なるものであり、前記方法はさらに 前記オペレーションの実行をリクエストする第1のメッセージをウェブリスナ
から前記ディスパッチャが受取るステップを含み、前記第1のメッセージは前記
ウェブリスナがブラウザからブラウザリクエストを受取ることに応答して前記デ
ィスパッチャに送られたものであり、前記方法はさらに 前記第1のメッセージに応答して、前記ディスパッチャが第2のメッセージを
カートリッジ実行エンジンに送るステップと、 前記第2のメッセージに応答して、前記カートリッジ実行エンジンが第3のメ
ッセージを、前記第2のマシン上で実行しているカートリッジに渡すステップと
、 前記第3のメッセージを受取ったことに応答して、前記カートリッジが前記オ
ペレーションを実行するステップとを含む、方法。 - 【請求項2】 前記オペレーションを実行した後に、前記カートリッジが第
4のメッセージを前記カートリッジ実行エンジンに渡すステップと、 前記第4のメッセージに応答して、前記カートリッジ実行エンジンが第5のメ
ッセージを前記ディスパッチャに送るステップと、 前記第5のメッセージに応答して、前記ディスパッチャが第6のメッセージを
前記ウェブリスナに送り、前記ウェブリスナがこれを前記ブラウザに転送するス
テップとをさらに含む、請求項1に記載の方法。 - 【請求項3】 前記ディスパッチャが第2のメッセージをカートリッジ実行
エンジンに送る前記ステップは、前記ディスパッチャが第2のメッセージをオブ
ジェクトリクエストブローカを介してカートリッジ実行エンジンに送ることによ
って実行される、請求項2に記載の方法。 - 【請求項4】 前記カートリッジ実行エンジンが第5のメッセージを前記デ
ィスパッチャに送る前記ステップは、前記カートリッジ実行エンジンが第5のメ
ッセージを前記オブジェクトリクエストブローカを介して前記ディスパッチャに
送ることによって実行される、請求項3に記載の方法。 - 【請求項5】 前記カートリッジは共用ライブラリであり、 前記カートリッジ実行エンジンが第3のメッセージを前記カートリッジに渡す
前記ステップは前記カートリッジが前記共用ライブラリ内のルーチンを呼出すス
テップを含む、請求項1に記載の方法。 - 【請求項6】 前記カートリッジ実行エンジンをコンパイル時において前記
カートリッジに静的にリンクするステップをさらに含む、請求項5に記載の方法
。 - 【請求項7】 前記カートリッジ実行エンジンを実行時において前記カート
リッジに動的にリンクするステップをさらに含む、請求項5に記載の方法。 - 【請求項8】 カートリッジ実行エンジンはある特定のアプリケーションプ
ログラミングインターフェイスを介して前記カートリッジと通信し、 前記カートリッジ実行エンジンが、前記カートリッジとは異なるオペレーショ
ンを行なう第2のカートリッジと前記ある特定のアプリケーションプログラミン
グインターフェイスを介して通信するステップをさらに含む、請求項1に記載の
方法。 - 【請求項9】 前記カートリッジ実行エンジンが第3のメッセージをカート
リッジに渡す前記ステップは前記カートリッジ実行エンジンが前記カートリッジ
内のルーチンを呼出すことによって行なわれ、 前記カートリッジが第4のメッセージを前記カートリッジ実行エンジンに渡す
前記ステップは、前記カートリッジ内で呼出された前記ルーチンから戻ることに
よって行なわれる、請求項2に記載の方法。 - 【請求項10】 オペレーションを実行するための1つ以上の命令シーケン
スを担持するコンピュータ可読媒体であって、1つ以上のプロセッサによる1つ
以上の命令シーケンスの実行により前記1つ以上のプロセッサは、 ディスパッチャを第1のマシン上で実行するステップと、 カートリッジ実行エンジンを第2のマシン上で実行するステップとを行ない、
前記第2のマシンは前記第1のマシンとは異なるものであり、さらに 前記ディスパッチャが前記オペレーションの実行をリクエストする第1のメッ
セージをウェブリスナから受取るステップとを行ない、前記第1のメッセージは
前記ウェブリスナがブラウザからブラウザリクエストを受取ったことに応答して
前記ディスパッチャに送られるものであり、さらに 前記第1のメッセージに応答して、前記ディスパッチャが第2のメッセージを
カートリッジ実行エンジンに送るステップと、 前記第2のメッセージに応答して、前記カートリッジ実行エンジンが第3のメ
ッセージを、前記第2のマシン上で実行されるカートリッジに渡すステップと、 前記第3のメッセージを受取ったことに応答して、前記カートリッジが前記オ
ペレーションを実行するステップとを行なう、コンピュータ可読媒体。 - 【請求項11】 前記オペレーションを実行した後に前記カートリッジが第
4のメッセージを前記カートリッジ実行エンジンに渡すステップと、 前記第4のメッセージに応答して、前記カートリッジ実行エンジンが第5のメ
ッセージを前記ディスパッチャに送るステップと、 前記第5のメッセージに応答して、前記ディスパッチャが第6のメッセージを
前記ウェブリスナに送り、前記ウェブリスナが前記ブラウザにこれを転送するス
テップとを実行するための命令をさらに含む、請求項10に記載のコンピュータ
可読媒体。 - 【請求項12】 前記ディスパッチャが第2のメッセージをカートリッジ実
行エンジンに送る前記ステップは、前記ディスパッチャが第2のメッセージをカ
ートリッジ実行エンジンにオブジェクトリクエストブローカを介して送ることに
よって行なわれる、請求項11に記載のコンピュータ可読媒体。 - 【請求項13】 前記カートリッジ実行エンジンが第5のメッセージを前記
ディスパッチャに送る前記ステップは、前記カートリッジ実行エンジンが第5の
メッセージを前記ディスパッチャに前記オブジェクトリクエストブローカを介し
て送ることによって行なわれる、請求項12に記載のコンピュータ可読媒体。 - 【請求項14】 前記カートリッジは共用ライブラリであり、 前記カートリッジ実行エンジンが第3のメッセージを前記カートリッジに渡す
前記ステップは前記カートリッジが前記共用ライブラリ内のルーチンを呼出すス
テップを含む、請求項10に記載のコンピュータ可読媒体。 - 【請求項15】 カートリッジ実行エンジンはある特定のアプリケーション
プログラミングインターフェイスを介して前記カートリッジと通信し、 前記カートリッジ実行エンジンが前記ある特定のアプリケーションプログラミ
ングインターフェイスを介して、前記カートリッジとは異なるオペレーションを
行なう第2のカートリッジと通信するステップをさらに含む、請求項10に記載
のコンピュータ可読媒体。 - 【請求項16】 前記カートリッジ実行エンジンが第3のメッセージをカー
トリッジに渡す前記ステップは前記カートリッジ実行エンジンが前記カートリッ
ジ内のルーチンを呼出すことによって行なわれ、 前記カートリッジが第4のメッセージを前記カートリッジ実行エンジンに渡す
前記ステップは、前記カートリッジ内で呼出された前記ルーチンから戻ることに
よって行なわれる、請求項11に記載のコンピュータ可読媒体。 - 【請求項17】 ブラウザリクエストに関連するオペレーションを実行する
ためのシステムであって、 複数のウェブリスナに結合される複数のディスパッチャと、 マシン間通信機構と、 複数のカートリッジとを含み、前記カートリッジの各々は標準カートリッジイ
ンターフェイスを介して呼出されるルーチンを含み、前記標準カートリッジイン
ターフェイスを介して受取った呼出に応答して別々のカートリッジが別々のオペ
レーションを行ない、前記システムはさらに 前記マシン間通信機構を介して前記複数のディスパッチャと通信し、かつ前記
標準カートリッジインターフェイスを介して前記複数のカートリッジ内の前記ル
ーチンを呼出すことによって、前記複数のカートリッジと通信する複数のカート
リッジ実行エンジンを含み、 前記複数のディスパッチャの各ディスパッチャは、オペレーションを行なうの
にある特定のカートリッジを必要とするブラウザリクエストをウェブリスナが受
取ったことに応答して、前記複数のカートリッジ実行エンジンのある特定のカー
トリッジ実行エンジンへ第1のメッセージを前記マシン間通信機構を介して送る
よう構成されており、 前記ある特定のカートリッジ実行エンジンは、前記第1のメッセージに応答し
て、前記オペレーションを行なう前記ある特定のカートリッジ内のルーチンを前
記標準カートリッジインターフェイスを介して呼出すよう構成される、システム
。 - 【請求項18】 前記マシン間機構はある特定のカートリッジに対しトラン
スペアレントであり、 前記ある特定のカートリッジは、前記ルーチンから戻る際に第2のメッセージ
を前記ある特定のカートリッジ実行エンジンへ前記標準カートリッジインターフ
ェイスを介して送るよう構成されており、 前記ある特定のカートリッジ実行エンジンは、前記第2のメッセージに基づい
た第3のメッセージを前記ディスパッチャへ前記マシン間通信機構を介して送る
よう構成される、請求項17に記載のシステム。 - 【請求項19】 前記マシン間通信機構はオブジェクトリクエストブローカ
である、請求項17に記載のシステム。 - 【請求項20】 分散システムのモジュールに分散を意識させない態様でオ
ペレーションを行なわせるための方法であって、 前記モジュールをある特定のマシン上で実行するステップと、 前記モジュールに関連付けられるカートリッジ実行エンジンを介して前記モジ
ュールへ前記分散システムの他の構成要素からリクエストを渡すステップと、 前記モジュールと関連付けられる前記カートリッジ実行エンジンを介して前記
モジュールから前記分散システムの前記他の構成要素へ返答を渡すステップとを
含み、 前記カートリッジ実行エンジンおよび前記モジュールは第1のマシン上で実行
しており、 前記他の構成要素は前記第1のマシン上で実行していない、方法。 - 【請求項21】 前記モジュールに関連付けられるカートリッジ実行エンジ
ンを介して前記モジュールへ前記分散システムの他の構成要素からリクエストを
渡す前記ステップは、 前記リクエストをマシン間通信機構を介して前記カートリッジ実行エンジン
へ送るステップと、 前記カートリッジ実行エンジンに前記モジュール内のルーチンを呼出させる
ことによって前記カートリッジ実行エンジンから前記リクエストを前記モジュー
ルへ送るステップとを含む、請求項20に記載の方法。 - 【請求項22】 前記リクエストを前記カートリッジ実行エンジンへマシン
間通信機構を介して送る前記ステップは、前記リクエストを前記カートリッジ実
行エンジンへオブジェクトリクエストブローカを介して送ることによって行なわ
れる、請求項21に記載の方法。
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)
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)
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)
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 |
-
1997
- 1997-10-31 US US08/962,414 patent/US6026404A/en not_active Expired - Lifetime
-
1998
- 1998-10-28 CA CA002308772A patent/CA2308772C/en not_active Expired - Lifetime
- 1998-10-28 DE DE69814900T patent/DE69814900T2/de not_active Expired - Lifetime
- 1998-10-28 AU AU12032/99A patent/AU746391B2/en not_active Expired
- 1998-10-28 EP EP98955162A patent/EP1027794B1/en not_active Expired - Lifetime
- 1998-10-28 JP JP2000519524A patent/JP2001522114A/ja active Pending
- 1998-10-28 WO PCT/US1998/022820 patent/WO1999023785A2/en active IP Right Grant
-
2000
- 2000-12-14 HK HK00108035A patent/HK1028690A1/xx not_active IP Right Cessation
Patent Citations (1)
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)
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 |