JP4083233B2 - 多数のプロセスを制御するウェブ要求ブローカ - Google Patents
多数のプロセスを制御するウェブ要求ブローカ Download PDFInfo
- Publication number
- JP4083233B2 JP4083233B2 JP53303898A JP53303898A JP4083233B2 JP 4083233 B2 JP4083233 B2 JP 4083233B2 JP 53303898 A JP53303898 A JP 53303898A JP 53303898 A JP53303898 A JP 53303898A JP 4083233 B2 JP4083233 B2 JP 4083233B2
- Authority
- JP
- Japan
- Prior art keywords
- request
- program type
- instance
- program
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- 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
-
- 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/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
- 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
-
- 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]
-
- 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
Description
この発明は、ネットワークされたコンピュータシステムにおけるサーバアーキテクチャに関し、特に、ウェブユーザの動的動作をサポートするサーバアプリケーションを実行するウェブサーバに関する。
発明の背景
ワールドワイドウェブはインターネット上のサーバのネットワーク(「ウェブサーバ」)を含み、その各々は1または2以上のHTML(ハイパーテキストマークアップ言語)ページを有する。ウェブサーバ上のHTMLページはそのサーバおよび(通常は)他のウェブサーバ上の他の文書の情報とそこへのハイパーテキストリンクを提供する。ウェブサーバはハイパーテキスト転送プロトコル(HTTP)を用いてクライアントと通信する。
ワールドワイドウェブのユーザはブラウザと呼ばれるクライアントプログラムを使用して、選択されたウェブサーバからの情報を要求し、デコードし、表示する。ブラウザのユーザがリンクを選択すると、要求がインターネット上をそのリンクで特定された情報をストアしているウェブサーバへと送られる。この要求に応答して、ウェブサーバは特定された情報をその要求を発行したブラウザに送信する。ブラウザは情報を受信し、受信した情報をユーザに呈示し、次のユーザ要求を待つ。
伝統的には、ウェブサーバ上に記憶された情報は静的HTMLページの形である。静的HTMLページはウェブブラウザからの要求に先立ってウェブサーバで生成され記憶される。要求に応答して、静的HTMLページは単に記憶装置から読出され、要求したブラウザへと送信される。現在、動的動作を行なうことによってブラウザの要求に応答するウェブサーバアプリケーションを開発しようとする動きがある。たとえば、ウェブサーバは要求に応答してデータベースへの問合せを発行し、問合せの結果を含むウェブページを動的に構築し、この動的に構築されたHTMLページを要求を出したブラウザに送信してもよい。動的動作を行なうために、ウェブサーバの機能性を高めるかまたは増加させなければならない。動的動作をサポートするためにウェブサーバを拡張するためのさまざまな方策が開発されてきている。
ウェブブラウザからの要求に応答して動的動作を提供するための1つの方策では、共通ゲートウェイインターフェイス(CGI)を用いる。CGIはウェブサバとCGIプログラムとの間で情報を転送するための仕様である。CGIプログラムはCGI仕様に合致するデータを受けかつ返送するように設計された何らかのプログラムである。このプログラムはC、Perl、またはビジュアルベーシックを含むどのプログラム言語で書くこともできる。
CGIの方策は、特定された要求がサーバで受信されるたびに別個のプロセス(CGIプログラムの別個のインスタンス)がイニシエート(initiate)されるという欠点がある。このような要求が異なるユーザから何千と受信された場合、何千というプロセスがイニシエートされることとなり、サーバの利用可能な資源を使い果たしてしまう。
要求に対する動的応答を提供するための別の方策は、「プラグ−イン」拡張を用いることを含む。プラグ−イン拡張はさまざまな段階でサーバに送られるメモリセルを代行受信(intercept)して特定のユーザ要求に対する応用指向処理を実行する。ウェブサーバプラグ−インはウェブサーバおよびすべての他のウェブサーバプラグ−インと同じアドレス空間で実行する。したがって、プラグ−インを設計するアプリケーション開発者はウェブサーバの下層の動作詳細を熟知していなければならない。さらに、ウェブサーバと同じアドレス空間でプラグ−インを実行することはウェブサーバを安全上および安定性上危険にさらすこととなり、この場合欠陥のあるプラグ−インは他のプラグインまたはウェブサーバ自身をクラッシュさせたり、予測できない様態で動作させたりするおそれがある。
発明の概要
ウェブサーバが動的サーバ動作をサポートすることを可能として、多数の外部プロセスが制御可能、スケーラブルかつ効率的な様態でイニシエートされ、管理されかつ終了できる構成が必要とされる。
ある要求を処理するために構成されたプログラムの多数のインスタンスを実行中のウェブサーバに対し発行されたそのクライアント要求に応答するための構成であって、クライアントからの要求が利用可能なインスタンスに選択的にディスパッチされる構成もまた必要とされる。
さらに、クライアント要求に応答する構成であって、その要求を処理するよう構成されたプログラムのあるインスタンスが既存のインスタンスの利用可能性と予め定められたインスタンスの最大数とに基づいて選択的にイニシエートされる構成もまた必要とされる。
これらおよび他の必要性は、ウェブ要求ブローカが要求の処理を、その要求に対応するプログラムを特定し、そのプログラムのインスタンスを選択的にイニシエートさせ、要求をそのインスタンスにディスパッチしてその要求を処理させることによって要求の処理を制御する、この発明によって満たされる。
この発明の1つの局面によれば、ネットワークシステム上でクライアントからサーバに発行された要求は、ネットワーク上で要求を獲得し、その要求に対応するプログラムを特定することによって処理される。プログラムのあるインスタンスは、そのプログラムの所与のインスタンス数に基づいて選択的にイニシエートされる。要求はそのプログラムのイニシエートされたインスタンスへとディスパッチされ、そのインスタンスが対応のプログラムを実行して要求を処理する。その後インスタンスの実行に基づいて要求に対する応答がなされる。ここで、複数のプログラム、たとえばサーバ拡張が、制御可能な様態でサーバプロセスに付加されてもよい。さらに、特定されたプログラムのあるインスタンスを選択的にイニシエートすることで、サーバが多数のインスタンスの制御を維持することが確実になり、サーバ動作の安定性が保たれる。所定数のインスタンスはまたインスタンスの最小数と最大数とをともに特定してもよく、これによってメモリ内の少なくとも最小数のインスタンスを後続の要求のために維持することで処理の遅延を最小化することが可能になり、一方でインスタンスの最大数を制限することでサーバ資源の制御を維持する。
この発明の別の局面によれば、動作の実行の要求に応答するための、サーバによる実行の方法が構成される。この方法は、ネットワーク上で要求を獲得するステップと、要求をサーバによって実行されるディスパッチャプラグ−インに送るステップとを含む。要求は、ディスパッチャプラグ−インが、その要求を扱うように構成されたプログラムの利用可能なインスタンスがプログラムインスタンスの既存の数から利用可能であるか否かを判断させることで処理される。もしあるインスタンスが利用可能であれば、要求はその利用可能なインスタンスによる実行のためにディスパッチされる。もし利用可能なインスタンスがない場合には、既存のインスタンス数が所与の最大数を超えていなければ、新たなインスタンスがイニシエートされる。もし利用可能なインスタンスがなく、かつ既存のインスタンス数が所与の最大数を超えている場合には、要求が処理されなかったことを示す返答がネットワーク上に送られる。したがって、ディスパッチャプラグ−インは要求を処理するにあたって、その要求を実行のために選択的にディスパッチするか、またはインスタンスの所与の最大数に関連するインスタンスの利用可能性に基づいて要求を否認することで、サーバの資源を管理する。
したがって、この発明は制御可能な様態でサーバプロセスに複数の拡張プログラムを付加することを可能にする。ディスパッチャプラグ−インは別個の独立したインスタンスで実行される異なった拡張プログラムの実行を制御し、要求を利用可能なインスタンスに選択的に経路付けし、サーバプロセスとサーバ拡張プログラムとがオーバロードしないようにする。
この発明のさらなる目的、利点および新規な特徴は以下の説明で述べられ、当業者にはその一部が以下を検討することによって明らかとなり、またはこの発明を実施することによってこれを学ぶことができるであろう。発明の目的と利点は添付のクレームで特に指摘する手段および組合せによって実現され達成されるであろう。
【図面の簡単な説明】
この発明は添付の図面に、限定ではなく例示の目的で示され、図面を通して同じ参照番号が同様の要素を示す。
図1はこの発明の一実施例に従ったネットワークシステムにおいてクライアントから受信した要求に応答するウェブサーバのブロック図である。
図2はこの発明の第1の実施例に従ったウェブサーバのブロック図である。
図3Aおよび3Bはこの発明のある実施例に従った、クライアント要求に応答するための方法をまとめたフロー図である。
図4はこの発明のある実施例に従った、サーバプロセスをイニシエートする方法を例示するフロー図である。
図5はこの発明の第2の実施例に従ったウェブ要求ブローカを例示するブロック図である。
好ましい実施例の詳細な説明
ネットワークシステムでクライアントからサーバに発行された要求に応答するための方法と装置が説明される。以下の記載では、説明の目的で、この発明を完全に理解するために多くの具体的な詳細が述べられる。しかしながら、この発明はその具体的な詳細なしでも実施できることは当業者には明らかである。この発明を不要に曖昧にすることを避けるために、別の例では周知の構造と装置がブロック図の形で示されている。
ウェブサーバアーキテクチャの概観
図1はこの発明のある実施例に従った、ネットワークシステムでクライアントから受信した要求に応答するウェブサーバの図である。ウェブサーバ10はネットワークシステム14、たとえばワールドワイドウェブ上でクライアント12からの要求を送信制御プロトコル/インターネットプロトコル(TCP/IP)を用いて受信する。ウェブサーバ10はウェブリスナ16、ウェブ要求ブローカ18および複数のサーバ拡張プログラム20を含む。ネットワーク14のユーザはクライアントプログラム12を用いてウェブサーバ10からの情報を要求し、デコードし、表示する。クライアントプログラム12はネットワーク14を介してウェブリスナ16に要求を送るウェブブラウザ22を含む。クライアントプログラムはまたウェブブラウザ22に付加的な処理能力を与えるブラウザ拡張プログラム24(たとえば「プラグ−イン」拡張)を含む。ウェブブラウザ22とウェブリスナ16との通信は標準化されたプロトコル、たとえばハイパーテキスト転送プロトコル(HTTP)、バージョン1.0、を用いて実行される。HTTP1.0プロトコルは安全ソケット層(secure sockets、SSL)ベースのデータ暗号化とともに用いてウェブブラウザ22とウェブリスナ16との短期接続を確立してもよい。
以下で述べられるように、ウェブリスナ16はネットワーク14上でクライアント要求を受信し、その要求をウェブ要求ブローカ18に送る。ウェブ要求ブローカ18はその要求をサーバ拡張プログラム20のうち1つの実行可能インスタンスに選択的にディスパッチして処理させる。ウェブリスナ16はウェブ要求ブローカ18からの返答を受信すると、ネットワーク14を介してクライアント要求に対する返答を出力する。返答を受信すると、ウェブブラウザ22は受信された要求の型を判断し、その応答をどのように扱うべきかを決定する。たとえば、応答はウェブブラウザ22そのもので(natively)処理され得るかもしれず、またはウェブブラウザ22がブラウザ拡張プログラム24のうち1つを使用して更なる処理を行なうかもしれない。ブラウザ拡張プログラム24は典型的には返答の特定の処理を行なうクライアント側プラグ−インとして実現されるであろう。処理を完了すると、クライアント12は典型的にはその結果をウェブブラウザの主表示域に、ハイパーテキストマークアップ言語(HTML)ページとして表示する。
ウェブ要求ブローカ
この発明によれば、ウェブ要求ブローカ18は、別個のプロセスで実行されるサーバ拡張にクライアント要求を選択的に経路付けすることによって、クライアント要求の処理を管理するように構成される。
図2はこの発明の第1の実施例に従ったサーバ10のブロック図である。ウェブリスナ16はHTTPプロトコルに従ってネットワークトンラスポートをサポートするHTTPデイモン(daemon)16aを含む。ウェブリスナ16は典型的にはユニフォームリソースロケータ(URL)の形で送られるクライアント要求をネットワーク14から受信する。クライアント要求はたとえばHTMLページまたは実行されるべき動作等のウェブオブジェクトの識別子として働く。ウェブリスナ16はクライアント要求を通訳しようとする試みをすることなく、クライアント要求をウェブ要求ブローカ18に手渡す。
ウェブ要求ブローカ18はディスパッチャプラグ−イン30と複数の実行エンジン32とを含む。ウェブ要求ブローカ18はクライアント要求の処理を、そのクライアント要求を処理するように構成された拡張プログラム20を特定し、クライアント要求を実行のためにその拡張プログラムの利用可能なインスタンスにディスパッチすることによって制御する。ディスパッチャプラグ−イン30は以下で詳細に説明されるように、異なる要求を取扱うための利用可能なプログラムを特定する構成ライブラリ34を含む。ディスパッチャプラグ−イン30がその要求を処理するように構成されたプログラム拡張20を特定すると、ディスパッチャプラグ−イン30は、その要求を取扱うように構成されたプログラムの利用可能なインスタンスが利用できるか否かを判断し、以下で説明されるように、その利用可能なインスタンスによる実行のために、要求をディスパッチする。
ウェブサーバ10はまた複数のサーバ拡張プログラム20a、20bおよび20cを含む。各サーバ拡張プログラムはまたシステムカートリッジとも呼ばれ、それぞれ異なる動作のために構成されている。特に、サーバ拡張プログラムは能く定義された機能を実行するカートリッジとして、またはインタープリタとして作用するプログラム可能カートリッジとして、またはアプリケーションのためのルーチン環境として構成される。プログラム可能カートリッジの一例はPL/SQLエージェント20aであって、これは構造問合せ言語を用いたオラクルベースプログラミング言語(Oracle-based Programming Language Using Structured Query Language,PL/SQL)に従ったデータベース問合せを処理するよう構成されたものである。PL−SQLエージェント20aはデータベース問合せを有するクライアント要求を、個別のプロセス36(すなわちPL−SQLエージェント20aの別個のインスタンス)を実行することによって実行する。インスタンス30aを実行することで、このインスタンスが、たとえばデータリンク42を介してインスタンス36と通信するデータベースサーバ40にアクセスする等の、要求を処理することとなる。
プログラム可能なカートリッジ型サーバ拡張プログラムの別の例はJAVAインタープリタ20bであって、これはウェブアプリケーション開発者がサーバ側JAVAアプリケーションを書いてクライアント要求を処理することを可能にする。同様に、カスタマサーバ20cが拡張プログラムとして構成されて、たとえば第三者のサーバ46によって実行されるプロセスにアクセスする等の動的な動作を提供することもできる。
実行可能なコードとして記憶される拡張プログラム20a、20bおよび20cはまず対応の拡張プログラム20のインスタンス36をサーバメモリに対しイニシエートし、そのインスタンスを実行することで実行される。あるインスタンスとはUNIX環境におけるプロセスと均等である。ウェブ要求ブローカ18は拡張プログラム20a、20b、20cについてそれぞれインスタンス36a、36b、36cの予め定められた最小数をイニシエートすることによって、拡張プログラム20の各々の実行を管理する。もしウェブ要求ブローカ18がクライアント要求を受信し、適切な拡張プログラムのインスタンス36がどれも利用可能でないと判断した場合には、ウェブ要求ブローカ18は、もし既存のインスタンス数が所与の最大数を超えていない場合には、プログラムの新たなインスタンスをイニシエートして要求を実行させる。
たとえば、もしクライアント要求がデータベース40へのアクセス要求を特定するものであれば、ウェブ要求ブローカ18はPL/SQLエージェント20aを、その要求を取扱うために構成されたプログラムとして特定する。ウェブ要求ブローカ18はプログラム20aの既存のインスタンス36aがその要求を取扱うために利用可能であるか否かを判断する。もし利用可能なインスタンスがない場合、たとえば既存のインスタンス36a1−36anのすべてが他のクライアント要求を処理中であるような場合には、ウェブ要求ブローカ18は、もし既存のインスタンス36aの数が所与の最大数を超えていない場合には、新たなインスタンス36an+1をイニシエートする。
図2に示されるように、ウェブ要求ブローカ18は各拡張プログラム20のためのウェブ要求ブローカ実行エンジン(WRBX)32を含む。実行エンジン32は対応のプログラムのインスタンスによって実行されるべき予め定められた動作を特定する、アプリケーションプログラミングインターフェイス(WRB API)を提供することによって、対応するプログラムのインスタンスの実行を制御する。実行エンジン32と拡張プログラムとの間の基本的なコールバック機能を確立することによって、どのような拡張プログラムも、拡張プログラムがコールバック機能(たとえば初期化機能、要求ハンドラおよび遮断機能)に応答するように構成し、その後その拡張プログラムを以下で説明される構成ライブラリ34に登録することによって、サーバ10に統合することができる。
したがって、もしディスパッチャプラグ−イン30が、PL/SQLエージェント20aが要求を処理するための適切な拡張であると判断すれば、ディスパッチャプラグ−イン30はその要求を実行エンジン32aにディスパッチする。プログラム20の新たなインスタンスをイニシエートする必要がある場合には、ディスパッチャプラグ−イン30はそのプログラムの新たなインスタンスを別のアドレス空間に生成し、要求を新たなインスタンスの実行エンジン32aにディスパッチする。プログラムのインスタンスを実行するのに使用されるアドレス空間はウェブ要求ブローカが動作を行なっているコンピュータシステムのメモリ内にあってもよく、または別のコンピュータシステムにあってもよい。実行エンジン32aはその後要求ハンドラコールバック機能を特定されたインスタンス36aiに発行して、インスタンス36aiにその要求、たとえばデータベース40へのアクセス、を実行させる。要求を実行したインスタンス36aiは結果を実行エンジン32aに返送し、これはその結果をディスパッチャプラグ−イン30に送る。ウェブ要求ブローカ18が動作の失敗を検出すると、実行エンジン32aはシャットダウン機能を発行してメモリからインスタンスをアボート(abort)する。
こうして、実行エンジン32aは実行されるべき予め定められた動作を特定する、ウェブ要求ブローカ18へのアプリケーションプログラミングインターフェイス(WRB API)を提供する。WRB APIを使用することで、拡張プログラム20のプログラマーはその拡張プログラムを使用するであろう特定のウェブリスナによって使用されるプロトコルとは独立して、サーバ10への高次の統合のために各拡張プログラムを構成することができるようになる。
図3Aおよび3Bはこの発明の実施例に従ったクライアント要求に応答する方法を例示したフロー図をまとめたものである。クライアント要求はステップ50でウェブリスナ16によって受信される。クライアント要求を受信すると、ウェブリスナ16はその要求をステップ52でウェブ要求ブローカ18に送る。ディスパッチャプラグ−イン30はステップ54で、構成ライブラリ34にアクセスすることによってそのクライアント要求に対応するプログラムを特定する。構成ライブラリ34は各プログラムについて対応のプログラムによって処理される要求に対応するオブジェクトタイプを含む。たとえば、もしクライアント要求が「/java」という仮想経路で始まるURL要求である場合、構成ライブラリ34は対応のオブジェクトを、「/java」という仮想経路を有する要求を取扱うように構成されたのはJAVAインタープリタ36bであることを特定して、記憶する。構成ライブラリ34はまた、プログラム20のインスタンスをイニシエートするのに用いられる記憶されたプログラムのためのアドレス位置を特定する仮想経路をも含む。
ディスパッチャプラグ−イン30はステップ56で、要求のオブジェクトタイプ(たとえばクライアント要求で特定された仮想経路)が、要求オブジェクトタイプが構成ライブラリ34に記憶されたオブジェクトタイプに対応する、特定可能なプログラムに対応するか否かを判断する。要求オブジェクトタイプが特定可能なプログラムに対応していない場合、要求はステップ58でウェブリスナ16に返送される(図3Bを参照)。ステップ58で、HTTPデイモン16aが要求を静的HTMLページへの要求であると認識すると、HTTPデイモンはページメモリ16bから静的HTMLページにアクセスし、ステップ60で返答をクライアントに送る。クライアント要求がHTTPデイモンによって認識されない場合、ステップ60で、要求が認識不能であることを示す返答がクライアントに送られる。
ステップ56で、ディスパッチャプラグ−イン30は構成ライブラリ34から、その要求を取扱うように構成された拡張プログラムを特定し、ディスパッチャプラグ−イン30は図3Bに示されるステップ62で、特定されたプログラムの利用可能なインスタンスが既存の数のインスタンス36の中で利用可能であるか否かを判断する。ステップ62において、もしディスパッチャプラグ−イン30が利用可能なインスタンス、たとえばPL−SQLエージェント20aのインスタンス36a2を特定すると、、対応の実行エンジン32がステップ68で呼出されて、以下で説明するように、その利用可能なインスタンスを実行して要求を処理する。しかしながら、ステップ62で、もし特定されたプログラム20のどのインスタンスも利用可能でない場合には、ディスパッチャプラグ−イン30はステップ64において、既存のインスタンス数が構成ライブラリ34に記憶された所与の最大数を超えたか否かを判断する。ステップ64において、もし既存のインスタンス数が所与の最大数を超えている場合いは、ディスパッチャプラグ−イン30はステップ58で要求をウェブリスナ16に返送し、その後ステップ60で、ウェブリスナは要求が処理されなかったことを示す返答をクライアントにネットワークを介して送る。
もしステップ64において既存のインスタンス数が所与の最大数を超えていない場合には、ディスパッチャプラグ−イン30は特定されたプログラムの新たなインスタンスをイニシエートし、その要求を新たなインスタンスの実行エンジン32aにディスパッチする。たとえば、ディスパッチャプラグ−イン30はPL/SQLエージェント20aの新たなインスタンスをイニシエートする。このステップの間、PL/SQLエージェント20aのための記憶された一連の命令がアクセスされて、ディスパッチャプラグ−イン30が動作を実行しているアドレス空間とは別個のアドレス空間にプログラム20aの新たなインスタンス36aを生成する。
新しいインスタンス36aiが実行されると、ステップ68においてディスパッチャプラグ−イン30は新しいインスタンス36aiに関連する実行エンジン32aに要求をディスパッチする。実行エンジン32aは新しいインスタンス36aiにコールバックメッセージを送り、要求の実行を求める。実行エンジン20はインスタンス36aiが要求を処理するのに必要なパラメータ、たとえば、パスワード、データベース検索キー、またはインスタンス36aiによって実行される動的動作のための他の引数を、コールバックメッセージで渡す。次にインスタンス36aiは要求を実行する。ステップ68におけるインスタンスによる要求の実行の間、ディスパッチャプラグ−イン30はステップ70において不良が起こるかどうかを判断するためにインスタンスをモニタする。ディスパッチャプラグ−イン30がステップ70で不良を検出すると、ディスパッチャプラグ−イン30はステップ72において対応する実行エンジン32を呼出し、不良を有するインスタンス36をアボートさせる。対応する実行エンジン32は、不良インスタンスに対して遮断コマンドをAPIで発行する。インスタンスは実行エンジン32による遮断コマンドに応答して他のアドレス空間における他のプロセスに影響することなく遮断される。
ステップ70において不良が検出されなければ、ディスパッチャプラグ−イン30はステップ74の実行が完了するとインスタンス36からの返答を受取る。ステップ76においてディスパッチャプラグ−イン30はウェブリスナ16に返答を送り、クライアントに対して実行されたインスタンス36からの返答を返す。インスタンス実行後、ステップ78においてディスパッチャプラグ−イン30はステップ78に示されているように後続の要求を実行可能とするようインスタンスをメモリに維持する。
こうして、開示された構成は多様なユーザ要求を処理するための異なる拡張プログラムの複数のインスタンスを管理する。プログラム20の各インスタンス36は別のメモリ空間で実行され、プログラム20の不良インスタンス36がプログラムの他のインスタンスに影響することなくアボートされることを可能にする。ウェブ要求ブローカ18は各所与の拡張プログラム20に対するインスタンスの数をも制御する。こうして、サーバ資源は多数の要求が制御不能なインスタンスの発生によりサーバ10を圧倒しないように制御される。実行スループットは実行可能なインスタンスの数を最小限に保つことにより向上している。さらに、1回の実行の後にインスタンスを終了せて後続の要求を実行するためにインスタンスを再作成するために拡張プログラムをメモリに再ロードするのではなく、さらなるインスタンスをイニシエートしてメモリに維持して後続の要求を実行することができる。
図4は本発明の実施例に係るサーバ10の初期化を示す図である。サーバ10はステップ90のサーバプロセスを開始させることにより初期化され、ウェブリスナおよび支持プロセスはメモリ空間にロードされる。ステップ92においてサーバ10はディスパッチャプラグ−イン30を開始させ、それによりウェブ要求ブローカ18を実行するための命令のシーケンスがメモリにストアされる。拡張プログラム20はステップ94においてディスパッチャプラグ−イン30で登録される。すなわち、各拡張プログラム20に対して、(1)カートリッジ名;(2)要求されるインスタンス36の最小の数;(3)インスタンスの最大数;(4)拡張プログラムをアクセスするためのバーチャルパス、すなわちプログラムの新しいインスタンスをイニシエートするためにアクセスするべきアドレス空間;(5)コールバック機能を実行するために実行エンジンが用いるプログラム依存機能名(初期化、要求ハンドラ、遮断);および(6)対応する拡張プログラム20によって動作の実行を要求するために、クライアント要求によって与えられるたとえばオブジェクトタイプのようなオブジェクト識別子が構成ライブラリ34にストアされる。オブジェクトタイプは特定のワード、またはたとえば/javaのようなバーチャルパスを含み得る。ステップ94において拡張プログラム20はサーバマネージャ、すなわちリアルタイムのユーザ対話型環境において構成ライブラリへのアクセスを有するウェブマスタによって登録できる。サーバマネージャが一旦構成ライブラリを確立すると、たとえばディスクのような不揮発性メモリをアクセスすることにより、拡張プログラムはステップ94において自動的に登録できる。
拡張プログラムをディスパッチャプラグ−イン30で登録した後、ステップ96においてディスパッチャプラグ−イン30は別のアドレス空間における各プログラムに対する最小の数のインスタンスをイニシエートする。最小の数のインスタンスがイニシエートされると、サーバ10はクライアントの要求を処理する準備が整えられている。各実行エンジン32はメモリの場所および対応するプログラム20の各インスタンス36の状態を追跡する。
図5は本発明の第2の実施例に係るサーバ10のブロック図である。図2の第1の実施例は、ディスパッチャプラグ−イン30はウェブリスナ16およびHTTPデイモン16aの下位レベルのプロセスと互換性を有すると仮定している。図5の実施例は図2の第1の実施例の変形であり、サーバはトランスポートアダプタ17を含む。トランスポートアダプタ17はウェブ要求ブローカ18と異なるプロトコルに従って動作するHTTPデイモン16′からクライアント要求を受取る。
トランスポートアダプタ17は異なるHTTPデイモンのプロトコルを認識するよう構成されており、HTTPデイモン16′から受取ったクライアント要求を、HTTPデイモン16′のプロトコルと独立した第2のプロトコルを有し、かつウェブ要求ブローカ18のプロトコルと一致するクライアント要求に変換できる。こうして、トランスポートアダプタ17はウェブ要求ブローカ18が異なるベンダからのHTTPデイモンで使用できることを可能にする。さらに、トランスポートアダプタ17は異なるサーバアーキテクチャおよびOSに対応できるよう構成できる。したがって、トランスポートアダプタ17はHTTPデイモン16′からのクライアント要求を第1のプロトコルからウェブ要求ブローカ18と互換性を有する第2のプロトコルに変換する。同様に、ウェブ要求ブローカからの返答はHTTPデイモン16′のトランスポートプロトコルに変換され、HTTPデイモン16′が返答をネットワークを介してユーザに送ることを可能にする。
明細書において、本発明はその具体的実施例を参照して記載されている。しかし、本発明の精神および範囲から逸脱することなく種々の変形や変更が可能であることは明らかである。したがって、明細書および図面は限定するものではなく、例示的なものであると考えられるべきである。
Claims (33)
- ネットワークシステムを介してクライアントからサーバに発行された要求に応答するための方法であって、前記方法は
ネットワークを介して前記サーバが要求を獲得するステップと、
前記サーバが、前記サーバが利用可能な複数のプログラムタイプから、要求に対応するプログラムタイプを前記サーバが決定するステップとを含み、前記複数のプログラムタイプの各プログラムタイプは、前記複数のプログラムタイプの他のプログラムタイプとは異なる機能を実現し、
要求に対応するプログラムタイプの現在実行中のインスタンスが利用可能でない場合は、前記プログラムタイプのインスタンスが現在いくつ実行されているかと、前記プログラムタイプの所定の最小および最大の数のインスタンスとの比較に基づいてプログラムタイプのインスタンスをサーバが選択的にイニシエートするステップと、
要求を前記プログラムタイプの前記インスタンスに前記サーバがディスパッチするステップと、
前記プログラムタイプの前記インスタンスが前記要求を処理するよう前記プログラムタイプの前記インスタンスを実行するステップと、
前記プログラムタイプの前記インスタンスの実行に基づいて要求に応答するステップとを含み、
前記プログラムタイプの各インスタンスは前記プログラムタイプの他のインスタンスによって用いられるアドレス空間と別のアドレス空間内で実行される、方法。 - ネットワークを介して要求を獲得する前記ステップは、第1のアドレス空間で実行されるサーバプロセスによって行なわれ、
プログラムタイプのインスタンスを前記サーバが選択的にイニシエートする前記ステップは、第1のアドレス空間と別の第2のアドレス空間で前記プログラムタイプの前記インスタンスをイニシエートすることを含む、請求項1に記載の方法。 - 前記プログラムタイプの前記インスタンスの実行の後、後続の要求を実行するために前記プログラムタイプの前記インスタンスをメモリに維持するステップをさらに含む、請求項1に記載の方法。
- 実行の際に前記プログラムタイプのインスタンスにおける不良を検出するステップと、
前記不良検出に応答して前記プログラムタイプのインスタンスをアボートするステップとをさらに含む、請求項1に記載の方法。 - プログラムタイプのインスタンスを前記サーバが選択的にイニシエートする前記ステップは、ネットワークを介して要求を獲得する前に、前記プログラムタイプの指定された最小の数のインスタンスをイニシエートするステップを含み、さらに
前記方法は、ネットワークを介して要求を獲得した後で、前記プログラムタイプの最小の数のインスタンスのうちの1つが前記要求を処理するために利用可能であるかを決定するステップをさらに含む、請求項1に記載の方法。 - ネットワークを介して要求を獲得した後、前記プログラムタイプの最小の数のインスタンスのいずれもが前記要求を処理するのに利用可能でなく、かつ前記プログラムタイプのインスタンスの数が最大数のインスタンスより小さいのなら、プログラムタイプの新しいインスタンスをイニシエートするステップをさらに含む、請求項5に記載の方法。
- 前記プログラムタイプの前記インスタンスを実行する前記ステップは、前記プログラムタイプの前記最小数のインスタンスから前記プログラムタイプの利用可能なインスタンスを実行することを含む、請求項5に記載の方法。
- プログラムタイプのインスタンスを前記サーバが選択的にイニシエートする前記ステップは前記プログラムタイプのインスタンスの現在の数が前記プログラムタイプに関連付けられた最大値を超えた場合、前記要求を処理せずに要求をネットワークに返却するステップを含む、請求項1に記載の方法。
- 複数個のプログラムタイプをサーバで登録するステップをさらに含み、前記プログラムタイプの各々の登録は、各プログラムタイプの最大数のインスタンスおよび前記プログラムタイプのバーチャルパスを指定することを含む、請求項1に記載の方法。
- 要求はバーチャルパスを特定し、さらに
要求に対応するプログラムタイプを決定する前記ステップは、要求で特定されたバーチャルパスに基づいてプログラムタイプを決定するステップを含む、請求項9に記載の方法。 - ネットワークを介して前記サーバが要求を獲得する前記ステップは、第1のプロトコルに従って動作するトランスポートプロトコルプロセスから前記サーバが要求を受取ることを含み、さらに
前記方法は要求を第1のプロトコルと独立した第2のプロトコルに変換するステップをさらに含む、請求項1に記載の方法。 - サーバによって実行するための、動作を行なう要求に応答するための方法であって、前記方法は
ネットワークを介して前記サーバが要求を獲得するステップと、
サーバによって実行されるディスパッチャに前記サーバが要求を送るステップと、
A) 前記サーバが利用可能な複数のプログラムタイプから、要求を扱うよう構成されたプログラムタイプを決定するステップを、ディスパッチャに行なわせ、前記複数のプログラムタイプの各プログラムタイプは、前記複数のプログラムタイプの他のプログラムタイプとは異なる機能を実現し、
B) 要求を扱うよう構成された特定のプログラムタイプの利用可能なインスタンスが前記特定のプログラムタイプの既存の数のインスタンスのうちで利用可能であるかどうかを決定するステップ、
C) 前記特定のプログラムタイプの利用可能なインスタンスがあるのなら、実行のための要求を利用可能なインスタンスによってディスパッチするステップ、
D) 前記特定のプログラムタイプの利用可能なインスタンスがないなら、既存の数のインスタンスが前記特定のプログラムタイプに対する最大の所定数を超えなければ要求の実行のために前記特定のプログラムの新しいインスタンスをイニシエートするステップ、さらに
E) 前記特定のプログラムタイプの利用可能なインスタンスがなくかつ前記特定のプログラムタイプの既存の数のインスタンスが前記特定のプログラムタイプに対する最大の所定数を超えるのなら、要求が処理されなかったことを示して前記返答をネットワークを介して送るステップを、ディスパッチャに行なわせることにより要求を処理するステップとを含み、
前記特定のプログラムタイプの各インスタンスは前記特定のプログラムタイプの他のインスタンスによって使用されるアドレス空間と別のアドレス空間内で実行される、方法。 - ディスパッチャによって、前記特定のプログラムタイプの要求を実行するインスタンスから返答を受取るステップと、
返答に含まれる情報をディスパッチャからネットワークを介して要求を発行したクライアントに送るステップとをさらに含む、請求項12に記載の方法。 - 前記特定のプログラムタイプの要求を実行しているインスタンスの不良をディスパッチャによって検出するステップと、
前記特定のプログラムタイプの検出された不良に応答して要求を実行しているインスタンスをディスパッチャによって終了させるステップをさらに含む、請求項12に記載の方法。 - 要求が処理されていないことを示す返答をネットワークを介して送るステップをさらに含む、請求項14に記載の方法。
- それぞれの種類の要求を扱うよう構成された前記複数個のプログラムタイプをディスパッチャで登録するステップをさらに含み、前記複数個のプログラムタイプをディスパッチャで登録する前記ステップは、前記プログラムタイプの各々に対して、最大数のインスタンスおよび対応するプログラムタイプに関連するアドレス場所を指定するバーチャルパスをディスパッチャにストアするステップを含む、請求項12に記載の方法。
- 前記特定のプログラムタイプの新しいインスタンスをイニシエートする前記ステップは、前記特定のプログラムタイプの他のインスタンスによって使用されるアドレス空間と別のアドレス空間内で前記特定のプログラムタイプの新しいインスタンスをイニシエートするステップを含む、請求項12に記載の方法。
- 後続の要求を処理するために、要求を処理した後前記新しいインスタンスの割当解除を少なくとも所定の期間遅らせるステップと、前記所定の期間の後に到着した連続する要求がない場合、自動的に、前記新しいインスタンスを割当解除するステップとをさらに含む、請求項17に記載の方法。
- ネットワークを介して要求を獲得する前記ステップは、第1のプロトコルに従って動作するトランスポートプロトコルプロセスから要求を受取ることを含み、前記第1のプロトコルは、複数のプロトコルのうちの一つであり、
前記方法は、複数の前記第1のプロトコルのうちのいずれかに従って受け取られた要求を第2のプロトコルに変換するように構成されたトランスポートアダプタにより、要求を第1のプロトコルと独立した第2のプロトコルに変換するステップをさらに含む、請求項12に記載の方法。 - 前記特定のプログラムタイプの前記インスタンスの既存数は少なくとも前記特定のプログラムタイプの前記インスタンスの所定の最小数である、請求項12に記載の方法。
- 要求に指定された動作に基づきプログラムタイプが要求を扱うよう構成されているかをディスパッチャに決定させるステップと、
要求を取扱うよう構成されているプログラムタイプがなければ、要求が処理されなかったことを示す返答をネットワークを介して送るステップをさらに含む、請求項12に記載の方法。 - ネットワークを介して要求を前記サーバが獲得する前記ステップは、サーバによってサーバプロセスを実行するステップを含み、さらに
ディスパッチャに前記ステップを行なわせることにより要求を処理する前記ステップは、サーバプロセスに追加されるプラグ−インルーチンをサーバによって実行させて、ディスパッチャに前記ステップを行なわせるステップを含む、請求項12に記載の方法。 - サーバによって受取られた動作を行なう要求に応答するために命令のシーケンスがストアされているコンピュータ読取可能媒体であって、命令のシーケンスは、
ネットワークを介して要求を獲得するステップ、
複数のプログラムタイプから、要求に対応するプログラムタイプを決定するステップを行なうための命令を含み、前記複数のプログラムタイプの各プログラムタイプは、前記複数のプログラムタイプの他のプログラムタイプとは異なる機能を実現し、
プログラムタイプの現在実行中のインスタンスがない場合は、前記プログラムタイプのインスタンスが現在いくつ実行されているかと、所定の最小および最大の数のインスタンスとの比較に基づいて、プログラムタイプのインスタンスを前記サーバが選択的にイニシエートするステップ、
要求を前記プログラムタイプの前記インスタンスにディスパッチするステップと、
前記プログラムタイプの前記インスタンスに前記要求を処理させるために前記プログラムタイプの前記インスタンスを実行するステップと、
前記プログラムタイプの前記インスタンスの実行に基づいて要求に応答するステップとを行なうための命令を含み、
前記プログラムタイプの各インスタンスは前記プログラムタイプの他のインスタンスによって使用されるアドレス空間と別のアドレス空間内で実行される、コンピュータ読取可能媒体。 - 実行の際に前記プログラムタイプのインスタンスの不良を検出するステップと、
前記不良検出に応答して前記プログラムタイプのインスタンスをアボートさせるステップとを行なうための命令シーケンスをさらに含む、請求項23に記載のコンピュータ読取可能媒体。 - 動作を行なう要求に応答するよう構成されているコンピュータサーバであって、
ネットワークを介して要求を受取りかつ要求の応答をネットワークを介して送るよう構成されたネットワークリスナを含み、要求は行なうべき動作を指定する所定のオブジェクトタイプを有し、
複数個のプログラムタイプを含み、各プログラムタイプはプログラムタイプによって行なわれる動作を指定する対応するオブジェクトタイプを有する要求の受取に応答して出力を生成する動作を行なうよう構成されており、各プログラムタイプはそれぞれの別のアドレス空間で実行される所定数のインスタンスを有し、さらに
所定のオブジェクトタイプに基づいて、要求に応答するために、プログラムタイプの1つを決定するよう構成されているディスパッチャプラグ−インを含み、ディスパッチャプラグ−インは対応する所定数のインスタンスに基づいて要求を特定された1つのプログラムタイプの利用可能なインスタンスに選択的にディスパッチし、ディスパッチャプラグ−インは利用可能なインスタンスによる要求の実行に基づいて前記応答をネットワークリスナへ送る、サーバ。 - ネットワークリスナはハイパーテキストトランスファープロトコル(HTTP)に基づいて要求および応答を受取りおよび送る、請求項25に記載のサーバ。
- ネットワークリスナは、静的ハイパーテキストマークアップ言語(HTML)ページの発送を指定する所定のオブジェクトタイプに応答して前記静的HTMLページを出力するよう構成されているHTTPデイモンを含む、請求項25に記載のサーバ。
- ネットワークリスナから受取られた要求を第1のプロトコルから第1のプロトコルと独立した第2のプロトコルに変換するよう構成されているトランスポートアダプタをさらに含む、請求項25に記載のサーバ。
- 複数個の実行エンジンをさらに含み、各実行エンジンは対応するプログラムタイプのインスタンスの実行を制御しかつ対応するプログラムタイプのインスタンスによって行なわれるべき所定の動作を指定するアプリケーションプログラミングインターフェイス(API)を与えるよう構成されており、実行エンジンはディスパッチャプラグ−インから要求を受取る特定された1つのプログラムに対応し、要求を処理する利用可能なインスタンスの実行を制御する、請求項25に記載のサーバ。
- APIによって指定された所定の動作は、対応するプログラムの少なくとも1つのインスタンスによる、初期化、要求の実行、および遮断の少なくとも1つを含む、請求項29に記載のサーバ。
- 各実行エンジンは、対応するプログラムタイプの所定の最小数の前記インスタンスをイニシエートする、請求項25に記載のサーバ。
- ディスパッチャプラグ−インは、各プログラムタイプに対して対応するオブジェクトタイプおよび所定の数のインスタンスを決定する構成ライブラリを含む、請求項25に記載のサーバ。
- 要求のオブジェクトタイプは特定された1つのプログラムタイプを指定するバーチャルパスを含む、請求項25に記載のサーバ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/794,269 | 1997-02-03 | ||
US08/794,269 US6845505B1 (en) | 1997-02-03 | 1997-02-03 | Web request broker controlling multiple processes |
PCT/US1998/001644 WO1998034386A1 (en) | 1997-02-03 | 1998-01-29 | Web request broker controlling multiple processes |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001511269A JP2001511269A (ja) | 2001-08-07 |
JP4083233B2 true JP4083233B2 (ja) | 2008-04-30 |
Family
ID=25162172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP53303898A Expired - Lifetime JP4083233B2 (ja) | 1997-02-03 | 1998-01-29 | 多数のプロセスを制御するウェブ要求ブローカ |
Country Status (8)
Country | Link |
---|---|
US (1) | US6845505B1 (ja) |
EP (1) | EP0956687B1 (ja) |
JP (1) | JP4083233B2 (ja) |
AT (1) | ATE236480T1 (ja) |
AU (1) | AU740827B2 (ja) |
CA (1) | CA2279382C (ja) |
DE (1) | DE69812899T2 (ja) |
WO (1) | WO1998034386A1 (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL123512A0 (en) * | 1998-03-02 | 1999-03-12 | Security 7 Software Ltd | Method and agent for the protection against hostile resource use access |
GB2335060B (en) * | 1998-12-09 | 2003-04-30 | Taxmate Ltd | An inter-computer communications apparatus |
DE60009291T2 (de) * | 1999-05-06 | 2004-08-05 | Sun Microsystems, Inc., Palo Alto | Dynamischer broker zur installierung und konfigurierung |
US6876991B1 (en) | 1999-11-08 | 2005-04-05 | Collaborative Decision Platforms, Llc. | System, method and computer program product for a collaborative decision platform |
US20040205473A1 (en) * | 2000-01-27 | 2004-10-14 | Gwyn Fisher | Method and system for implementing an enterprise information portal |
GB2362548B (en) | 2000-05-15 | 2004-03-24 | Vodafone Ltd | A method and apparatus for asynchronous information transactions |
TW480426B (en) * | 2000-08-07 | 2002-03-21 | D Link Corp | Method of performing management onto the network equipment by using web function |
US20020042839A1 (en) | 2000-10-10 | 2002-04-11 | Christopher Peiffer | HTTP multiplexor/demultiplexor |
US6609126B1 (en) | 2000-11-15 | 2003-08-19 | Appfluent Technology, Inc. | System and method for routing database requests to a database and a cache |
US7996507B2 (en) * | 2002-01-16 | 2011-08-09 | International Business Machines Corporation | Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client |
US7085831B2 (en) * | 2002-01-16 | 2006-08-01 | International Business Machines Corporation | Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client |
US20030208609A1 (en) * | 2002-05-01 | 2003-11-06 | Verizon Services, Corp. | Automatic configuration of advanced services over DSL |
US7366777B2 (en) * | 2003-05-15 | 2008-04-29 | Sap Aktiengesellschaft | Web application router |
US20060168268A1 (en) * | 2004-12-02 | 2006-07-27 | International Business Machines Corporation | Specific method of setting transport-specific properties from transport-agnostic clients |
US7711693B2 (en) * | 2004-12-03 | 2010-05-04 | Oracle International Corporation | Deployment of life-cycle model for LDAP applications |
US20070078927A1 (en) * | 2005-09-12 | 2007-04-05 | Microsoft Corporation | Server-side service framework |
US20070116234A1 (en) * | 2005-10-19 | 2007-05-24 | Marco Schneider | Methods and apparatus for preserving access information during call transfers |
US7643472B2 (en) * | 2005-10-19 | 2010-01-05 | At&T Intellectual Property I, Lp | Methods and apparatus for authorizing and allocating outdial communication services |
US20070086433A1 (en) * | 2005-10-19 | 2007-04-19 | Cunetto Philip C | Methods and apparatus for allocating shared communication resources to outdial communication services |
US8238327B2 (en) * | 2005-10-19 | 2012-08-07 | At&T Intellectual Property I, L.P. | Apparatus and methods for subscriber and enterprise assignments and resource sharing |
US7924987B2 (en) * | 2005-10-19 | 2011-04-12 | At&T Intellectual Property I., L.P. | Methods, apparatus and data structures for managing distributed communication systems |
US20070086432A1 (en) * | 2005-10-19 | 2007-04-19 | Marco Schneider | Methods and apparatus for automated provisioning of voice over internet protocol gateways |
US7839988B2 (en) | 2005-10-19 | 2010-11-23 | At&T Intellectual Property I, L.P. | Methods and apparatus for data structure driven authorization and/or routing of outdial communication services |
US8020149B2 (en) * | 2006-08-04 | 2011-09-13 | Apple Inc. | System and method for mitigating repeated crashes of an application resulting from supplemental code |
US20080091806A1 (en) * | 2006-10-11 | 2008-04-17 | Jinmei Shen | Dynamic On-Demand Clustering |
US8352634B2 (en) * | 2007-04-06 | 2013-01-08 | International Business Machines Corporation | On-demand propagation of routing information in distributed computing system |
US8589912B2 (en) * | 2007-06-29 | 2013-11-19 | International Business Machines Corporation | Loosely coupled product install and configuration |
KR20100071483A (ko) * | 2008-12-19 | 2010-06-29 | 한국전자통신연구원 | 묶음 소프트웨어의 배포 방법 및 시스템 |
CN101510167B (zh) * | 2009-03-31 | 2016-04-20 | 阿里巴巴集团控股有限公司 | 一种插件运行的方法、装置及系统 |
CN102033803B (zh) * | 2009-09-29 | 2014-07-09 | 国际商业机器公司 | 跨浏览器测试web应用的方法和装置 |
US20110179173A1 (en) * | 2010-01-15 | 2011-07-21 | Carol Colrain | Conditional dependency in a computing cluster |
US8219684B1 (en) * | 2011-11-02 | 2012-07-10 | Google Inc. | Redundant data requests with cancellation |
US20170272547A1 (en) * | 2016-03-18 | 2017-09-21 | Interactive Intelligence Group, Inc. | System and method for configuration and interchanging of business functionality implementations |
US10481963B1 (en) * | 2016-06-29 | 2019-11-19 | Amazon Technologies, Inc. | Load-balancing for achieving transaction fault tolerance |
CA3086546A1 (en) * | 2018-01-18 | 2019-07-25 | Bevara Technologies, Llc | Browser navigation for facilitating data access |
US10467069B2 (en) | 2018-04-04 | 2019-11-05 | Microsoft Technology Licensing, Llc | Selective application instance activation |
US10908933B1 (en) * | 2019-12-05 | 2021-02-02 | Microsoft Technology Licensing, Llc | Brokerage tool for accessing cloud-based services |
CN112612611A (zh) * | 2020-12-24 | 2021-04-06 | 青岛海尔科技有限公司 | 一种信息处理的方法、装置及系统 |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918595A (en) * | 1987-07-31 | 1990-04-17 | International Business Machines Corp. | Subsystem input service for dynamically scheduling work for a computer system |
US5210824A (en) * | 1989-03-03 | 1993-05-11 | Xerox Corporation | Encoding-format-desensitized methods and means for interchanging electronic document as appearances |
US5557798A (en) * | 1989-07-27 | 1996-09-17 | Tibco, Inc. | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
AU639802B2 (en) * | 1990-08-14 | 1993-08-05 | Oracle International Corporation | Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment |
US5249290A (en) * | 1991-02-22 | 1993-09-28 | At&T Bell Laboratories | Method of and apparatus for operating a client/server computer network |
US5212793A (en) * | 1991-09-04 | 1993-05-18 | International Business Machines Corp. | Generic initiators |
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 |
GB2263797B (en) * | 1992-01-31 | 1996-04-03 | Plessey Telecomm | Object orientated system |
WO1994001820A1 (en) | 1992-07-01 | 1994-01-20 | Telefonaktiebolaget Lm Ericsson | 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 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクトの実行方法および装置 |
JP3541039B2 (ja) | 1993-08-03 | 2004-07-07 | サン・マイクロシステムズ,インコーポレイテッド | コンピュータアプリケーションのためのフレキシブル多重プラットフォームパーティショニング |
WO1995016971A1 (en) | 1993-12-16 | 1995-06-22 | Open Market, Inc. | Digital active advertising |
US5504897A (en) | 1994-02-22 | 1996-04-02 | Oracle Corporation | Method and apparatus for processing electronic mail in parallel |
US5592654A (en) * | 1994-06-03 | 1997-01-07 | Integrated Device Technology, Inc. | Apparatus and method for converting a job conforming to a first protocol into a job conforming to a second protocol |
US5715314A (en) | 1994-10-24 | 1998-02-03 | Open Market, Inc. | Network sales system |
WO1996017306A2 (en) * | 1994-11-21 | 1996-06-06 | Oracle Corporation | Media server |
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 |
US5857102A (en) * | 1995-03-14 | 1999-01-05 | Sun Microsystems, Inc. | System and method for determining and manipulating configuration information of servers in a distributed object environment |
US5907675A (en) | 1995-03-22 | 1999-05-25 | Sun Microsystems, Inc. | Methods and apparatus for managing deactivation and shutdown of a server |
US5802291A (en) * | 1995-03-30 | 1998-09-01 | Sun Microsystems, Inc. | System and method to control and administer distributed object servers using first class distributed objects |
US5761684A (en) | 1995-05-30 | 1998-06-02 | International Business Machines Corporation | Method and reusable object for scheduling script execution in a compound document |
US5708780A (en) | 1995-06-07 | 1998-01-13 | Open Market, Inc. | Internet server access control and monitoring systems |
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 |
US5872969A (en) | 1995-06-23 | 1999-02-16 | International Business Machines Corporation | System and method for efficiently synchronizing cache and persistent data in an object oriented transaction processing system |
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 |
US5862318A (en) | 1995-10-26 | 1999-01-19 | Microsoft Corporation | System for generating a gapless series of identity values |
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 |
WO1997040457A2 (en) | 1996-04-19 | 1997-10-30 | Intergraph Corporation | System and method for data access |
US5894554A (en) * | 1996-04-23 | 1999-04-13 | Infospinner, Inc. | System for managing dynamic web page generation requests by intercepting request at web server and routing to page server thereby releasing web server to process other requests |
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 |
US5961601A (en) | 1996-06-07 | 1999-10-05 | International Business Machines Corporation | Preserving state information in a continuing conversation between a client and server networked via a stateless protocol |
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 |
US6073241A (en) | 1996-08-29 | 2000-06-06 | C/Net, Inc. | Apparatus and method for tracking world wide web browser requests across distinct domains using persistent client-side state |
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 |
US5991802A (en) | 1996-11-27 | 1999-11-23 | Microsoft Corporation | Method and system for invoking methods of objects over the internet |
US5826239A (en) | 1996-12-17 | 1998-10-20 | Hewlett-Packard Company | Distributed workflow resource management system and method |
US6185625B1 (en) | 1996-12-20 | 2001-02-06 | Intel Corporation | Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object |
US5875296A (en) | 1997-01-28 | 1999-02-23 | International Business Machines Corporation | Distributed file system web server user authentication with cookies |
US5864866A (en) | 1997-03-26 | 1999-01-26 | International Business Machines Corporation | Apparatus and method for providing externalization in an object-oriented environment |
US6067545A (en) | 1997-08-01 | 2000-05-23 | Hewlett-Packard Company | Resource rebalancing in networked computer systems |
US6070191A (en) * | 1997-10-17 | 2000-05-30 | Lucent Technologies Inc. | Data distribution techniques for load-balanced fault-tolerant web access |
US5890161A (en) | 1997-10-28 | 1999-03-30 | Microsoft Corporation | Automatic transaction processing of component-based server applications |
US6098093A (en) * | 1998-03-19 | 2000-08-01 | International Business Machines Corp. | Maintaining sessions in a clustered server environment |
-
1997
- 1997-02-03 US US08/794,269 patent/US6845505B1/en not_active Expired - Lifetime
-
1998
- 1998-01-29 CA CA2279382A patent/CA2279382C/en not_active Expired - Lifetime
- 1998-01-29 EP EP98903802A patent/EP0956687B1/en not_active Expired - Lifetime
- 1998-01-29 DE DE69812899T patent/DE69812899T2/de not_active Expired - Lifetime
- 1998-01-29 JP JP53303898A patent/JP4083233B2/ja not_active Expired - Lifetime
- 1998-01-29 AT AT98903802T patent/ATE236480T1/de not_active IP Right Cessation
- 1998-01-29 AU AU60478/98A patent/AU740827B2/en not_active Expired
- 1998-01-29 WO PCT/US1998/001644 patent/WO1998034386A1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
AU740827B2 (en) | 2001-11-15 |
US6845505B1 (en) | 2005-01-18 |
ATE236480T1 (de) | 2003-04-15 |
JP2001511269A (ja) | 2001-08-07 |
DE69812899D1 (de) | 2003-05-08 |
EP0956687B1 (en) | 2003-04-02 |
AU6047898A (en) | 1998-08-25 |
EP0956687A1 (en) | 1999-11-17 |
CA2279382A1 (en) | 1998-08-06 |
CA2279382C (en) | 2010-06-29 |
DE69812899T2 (de) | 2004-03-04 |
WO1998034386A1 (en) | 1998-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4083233B2 (ja) | 多数のプロセスを制御するウェブ要求ブローカ | |
US6405367B1 (en) | Apparatus and method for increasing the performance of Java programs running on a server | |
US6247056B1 (en) | Method and apparatus for handling client request with a distributed web application server | |
US7117504B2 (en) | Application program interface that enables communication for a network software platform | |
US7162723B2 (en) | ASP.NET HTTP runtime | |
US6026404A (en) | Method and system for executing and operation in a distributed environment | |
EP1027795B1 (en) | Method and apparatus for implementing an extensible authentication mechanism in a web application server | |
US5987517A (en) | System having a library of protocol independent reentrant network interface functions for providing common calling interface for communication and application protocols | |
US7188155B2 (en) | Apparatus and method for selecting a web service in response to a request from a client device | |
US9195520B2 (en) | Event driven sendfile | |
US7051342B2 (en) | Method and system for remote automation of object oriented applications | |
US6636900B2 (en) | Method and apparatus for executing distributed objects over a network | |
EP1174793A2 (en) | System and method providing multi-tier applications architecture | |
KR19980079252A (ko) | 서브릿을 처리하기 위한 장치 및 방법 | |
JPH1083308A (ja) | スタブ検索及びローディング・サブシステム、スタブ検索及びローディング方法並びにスタブ検索及びローディング用記録媒体 | |
US6631424B1 (en) | Distributing information using a computer | |
US20060106864A1 (en) | System, computer program product and method of narrowing an enterprise Java bean (EJB) object reference to a home implementation class name | |
JP4950389B2 (ja) | ネットワークベースのアプリケーション、それを処理するためのアーキテクチャ及びシステム、ならびにそれを実行するための方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041217 |
|
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: 20060411 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060707 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060728 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060821 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060912 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20061211 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070305 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070710 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071031 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20071115 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080213 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110222 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120222 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120222 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130222 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130222 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140222 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |