(57)【特許請求の範囲】
【請求項１】
プログラムの制御下でローカル・サーバ・コンピュータによって実行され、該ローカル・サーバ・コンピュータが該プログラムを記憶するためのメモリを含み、該ローカル・サーバ・コンピュータが該クライアント−サーバ・ネットワークの一部を形成する、方法であって、
前記クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取り；
前記要求が前記クライアント−サーバ・ネットワークのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断し；
前記要求に対応している特定のサーブレット・オブジェクトを前記クライアント−サーバ・ネットワークの遠隔サーバ・コンピュータからアップロードし；かつ
前記要求に対応している動的に生成された情報を取得すべく前記特定のサーブレット・オブジェクトを実行する
段階を具備することを特徴とする方法。
【請求項２】
前記特定のサーブレット・オブジェクトから前記ローカル・サーバ・コンピュータで動作しているウェブ・サーバへ動的に生成された情報を渡す段階を更に具備し、前記渡す段階は、アプリケーション・プログラム・インターフェイスで実行されることを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーション・プログラミング・インターフェイスは、次のオペレーション：サーブレット・オブジェクトを初期化すること、サーブレット・オブジェクトを実行すること、及びサーブレット・オブジェクトを破壊すること、の少なくとも一つを実行することを特徴とする請求項２に記載の方法。
【請求項４】
前記特定のサーブレット・オブジェクト及び前記アプリケーション・プログラム・インターフェイスは、ＪＡＶＡプログラミング言語のオブジェクト・バイトコードとして特定されることを特徴とする請求項２に記載の方法。
【請求項５】
前記ウェブ・サーバから前記クライアント・コンピュータへ前記動的に生成された情報を送る段階を更に具備することを特徴とする請求項２に記載の方法。
【請求項６】
前記実行する段階は、
前記ローカル・サーバ・コンピュータのセキュリティ・エリアの前記特定のサーブレットを実行し；かつ
前記セキュリティ・エリアから前記ローカル・サーバ・コンピュータのノン−セキュリティ・エリアへ前記動的に生成された情報を渡す段階を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ローカル・サーバ・コンピュータは、それぞれがクライアント・コンピュータからの特定された要求に応じて呼び出されるまで連続的に動作する、複数のサーブレット・オブジェクトを記憶することを特徴とする請求項１に記載の方法。
【請求項８】
前記複数のサーブレット・オブジェクトは、互いにデータを渡すことを特徴とする請求項７に記載の方法。
【請求項９】
前記複数のサーブレット・オブジェクトの前記選択されたサーブレット・オブジェクトは、前記ローカル・サーバ・コンピュータの始動でインスタンス生成されることを特徴とする請求項７に記載の方法。
【請求項１０】
前記複数のサーブレット・オブジェクトの前記選択されたサーブレット・オブジェクトは、前記クライアント・コンピュータからのデマンドに応じてインスタンス生成されることを特徴とする請求項７に記載の方法。
【請求項１１】
前記複数のサーブレット・オブジェクトの前記選択されたサーブレット・オブジェクトは、アクティベートされたサーブレットＵＲＬに応じてインスタンス生成されることを特徴とする請求項７に記載の方法。
【請求項１２】
前記サーブレットＵＲＬは、アーギュメントを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記受け取る手段は、接続キューに前記要求を記憶する段階を含むことを特徴とする請求項１に記載の方法。
【請求項１４】
前記判断する手段は、前記判断する段階を実行すべくハンドラ・スレッドのプールからハンドラ・スレッドを選択する段階を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
新しいハンドラ・スレッドを選択的に生成しかつ古いハンドラ・スレッドを破壊することによってハンドラ・スレッドの前記プールを動作する段階を更に具備することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記動作する段階は、前記新しいハンドラ・スレッドに対して前記古いハンドラ・スレッドのバッファ・メモリ空間を再使用する段階を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
特定した方法で機能すべくクライアント−サーバ・ネットワークのサーバ・コンピュータを指向するために用いることができるコンピュータ読み取り可能メモリ装置であって、
前記クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取るための第１の命令のセット；
前記要求が前記クライアント−サーバ・ネットワークのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断するための第２の命令のセット；
前記要求に対応している特定のサーブレット・オブジェクトを前記クライアント−サーバ・ネットワークの遠隔サーバ・コンピュータからアップロードするための第３の命令のセット；及び
前記要求に対応している動的に生成された情報を取得するために前記特定のサーブレット・オブジェクトを実行するための第４の命令のセット
を記憶していることを特徴とするコンピュータ読み取り可能メモリ装置。
【請求項１８】
前記特定されたサーブレット・オブジェクトから前記ローカル・サーバ・コンピュータ上で動作しているウェブ・サーバへ動的に生成された情報を、アプリケーション・プログラム・インターフェイスを通して、渡すための第５の命令のセットを更に記憶していることを特徴とする請求項１７に記載の装置。
【請求項１９】
前記ウェブ・サーバから前記クライアント・コンピュータへ前記動的に生成された情報を渡すための第６の命令のセットを更に記憶していることを特徴とする請求項１８に記載の装置。
【請求項２０】
前記サーバ・コンピュータの複数のサーブレット・オブジェクトを記憶するための第７の命令のセットを更に記憶し、前記サーブレット・オブジェクトのそれぞれは、クライアント・コンピュータからの特定の要求に応じて呼び出されるまで連続的に動作することを特徴とする請求項１７に記載の装置。
【請求項２１】
前記第７の命令のセットは、前記複数のサーブレット・オブジェクト間でデータを渡すための命令を含むことを特徴とする請求項２０に記載の装置。
【発明の詳細な説明】
【０００１】
この出願は、1996年 5月30日に出願された“Method and System for Facilitating Servlets ”という発明の名称の米国特許出願第08/657,712号の継続出願である1996年11月25日に出願されたMethod and System for Facilitating Servlets ”という発明の名称の米国特許出願第08/756,325号の一部継続出願である。
この特許文書（明細書）の開示の一部は、著作権保護の対象になる材料を含む。著作権所有者は、特許及び商標局特許ファイルまたは記録に表されるような、特許開示のあらゆるものによるファクシミリ複製に異議はないが、それ以外に関しては、著作権の権利を保持する。
【０００２】
【産業上の利用分野】
この発明は、一般に、クライアント−サーバ・コンピュータ環境において情報を交換することに関する。より特定的には、この発明は、サーバ・コンピュータでの情報要求に応答する改良技術に関する。
【０００３】
【従来の技術】
クライアント−サーバ・コンピュータ・ネットワークは、よく知られている。クライアント−サーバ・コンピュータ・ネットワークの最も顕著な例は、コンピュータのワールド・ワイド・ウェブ(World Wide Web)である。クライアント−サーバ・コンピュータ・ネットワークでは、サーバ・コンピュータは、クライアント・コンピュータから情報に対する要求を受け取る。サーバ・コンピュータで動作しているウェブ・サーバ・ソフトウェアは、一般的に、永久記憶デバイスに記憶されたファイルから要求された情報を検索しかつ情報を要求したクライアント・コンピュータへネットワーク上でファイルを伝送する。ウェブ・サーバ・ソフトウェアは、一般的に、オブジェクト指向型プログラミング言語を用いて書かれない。それゆえに、それは、新しい機能を供給すべく容易に拡張されない。今日のソフトウェア市場の動的特質を考えると、製品の柔軟性及び拡張性の欠如は、製品の市場性を非常に妨げることが可能である。
【０００４】
【発明が解決しようとする課題】
現行ウェブ・サーバ・ソフトウェアは、クライアント・コンピュータからの要求に応じて動的にファイルを生成することができる。一般的に、ウェブ・サーバは、要求を受け取り次いでファイルを動的に生成するためにコモン・ゲートウェイ・インターフェイス(Common Gateway Interface(CGI)) 処理をフォークする（分岐する）。一度ファイルが生成されたならば、ウェブ・サーバ・ソフトウェアは、ファイルをクライアント・コンピュータへ戻すように伝送する。残念ながら、動的情報が生成されることが必要である毎に処理をフォークすることは、計算的に高価である。
上記の観点から、クライアント・コンピュータ要求に応じて情報を動的に生成するが、動的情報を生成すると同時に処理始動(process start-up)費用を招かない、ウェブ・サーバを供給することが非常に望ましい。更に、柔軟性及び拡張性であるオブジェクト指向型ウェブ・サーバ環境を供給することが非常に望ましい。
【０００５】
本発明の目的は、上記従来技術における問題点に鑑み、クライアント・コンピュータ要求に応じて情報を動的に生成し、かつ動的情報を生成すると同時に処理始動費用を低減できるウェブ・サーバ環境を提供することである。
【０００６】
【課題を解決するための手段】
本発明の上記目的は、プログラムの制御下でローカル・サーバ・コンピュータによって実行され、ローカル・サーバ・コンピュータがプログラムを記憶するためのメモリを含み、ローカル・サーバ・コンピュータがクライアント−サーバ・ネットワークの一部を形成する、方法であって、クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取り；要求がクライアント−サーバ・ネットワークのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断決定し；要求に対応している特定のサーブレット・オブジェクトをクライアント−サーバ・ネットワークの遠隔サーバ・コンピュータからアップロードし；かつ要求に対応している動的に生成された情報を取得すべく特定のサーブレット・オブジェクトを実行する段階を具備する方法によって達成される。
【０００７】
本発明の方法では、特定のサーブレット・オブジェクトからローカル・サーバ・コンピュータで動作しているウェブ・サーバへ動的に生成された情報を渡す段階を更に具備し、渡す段階は、アプリケーション・プログラム・インターフェイスで容易にされるようにして構成してもよい。
本発明の方法では、アプリケーション・プログラミング・インターフェイスは、次のオペレーション：サーブレット・オブジェクトを初期化すること、サーブレット・オブジェクトを実行すること、及びサーブレット・オブジェクトを破壊すること、の少なくとも一つを実行するための技術を特定するように構成してもよい。
本発明の方法では、特定のサーブレット・オブジェクト及びアプリケーション・プログラム・インターフェイスは、ＪＡＶＡプログラミング言語のオブジェクト・バイトコードとして特定されるように構成してもよい。
【０００８】
本発明の方法では、ウェブ・サーバからクライアント・コンピュータへ動的に生成された情報を送る段階を更に具備するように構成してもよい。
本発明の方法では、実行する段階は、ローカル・サーバ・コンピュータのセキュリティ・エリアの特定のサーブレットを実行し；かつセキュリティ・エリアからローカル・サーバ・コンピュータのノン−セキュリティ・エリアへ動的に生成された情報を渡す段階を含むように構成してもよい。
本発明の方法では、ローカル・サーバ・コンピュータは、それぞれがクライアント・コンピュータからの特定された要求に応じて呼び出されるまで連続的に動作する、複数のサーブレット・オブジェクトを記憶するように構成してもよい。本発明の方法では、複数のサーブレット・オブジェクトは、互いにデータを渡すように構成してもよい。
【０００９】
本発明の方法では、複数のサーブレット・オブジェクトの選択されたサーブレット・オブジェクトは、ローカル・サーバ・コンピュータの始動でインスタンス生成されるように構成してもよい。
本発明の方法では、複数のサーブレット・オブジェクトの選択されたサーブレット・オブジェクトは、クライアント・コンピュータからのデマンドに応じてインスタンス生成されるように構成してもよい。
本発明の方法では、複数のサーブレット・オブジェクトの選択されたサーブレット・オブジェクトは、アクティベートされたサーブレットＵＲＬに応じてインスタンス生成されるように構成してもよい。
本発明の方法では、サーブレットＵＲＬは、アーギュメントを含むように構成してもよい。
【００１０】
本発明の方法では、受け取る手段は、接続キューに要求を記憶する段階を含むように構成してもよい。
本発明の方法では、判断する手段は、判断する段階を実行すべくハンドラ・スレッドのプールからハンドラ・スレッドを選択する段階を含むように構成してもよい。
本発明の方法では、新しいハンドラ・スレッドを選択的に生成しかつ古いハンドラ・スレッドを破壊することによってハンドラ・スレッドのプールを動作する段階を更に具備するように構成してもよい。
本発明の方法では、動作する段階は、新しいハンドラ・スレッドに対して古いハンドラ・スレッドのバッファ・メモリ空間を再使用する段階を含むように構成してもよい。
【００１１】
また、本発明の上記目的は、特定した方法で機能すべくクライアント−サーバ・ネットワークのサーバ・コンピュータを指向するために用いることができるコンピュータ読み取り可能メモリ装置であって、クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取るための第１の命令のセット；要求がクライアント−サーバ・ネットワークのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断するための第２の命令のセット；要求に対応している特定のサーブレット・オブジェクトをクライアント−サーバ・ネットワークの遠隔サーバ・コンピュータからアップロードするための第３の命令のセット；及び要求に対応している動的に生成された情報を取得するために特定のサーブレット・オブジェクトを実行するための第４の命令のセットを備えているコンピュータ読み取り可能メモリ装置によって達成される。
【００１２】
本発明の装置では、特定されたサーブレット・オブジェクトからローカル・サーバ・コンピュータ上で動作しているウェブ・サーバへ動的に生成された情報を、アプリケーション・プログラム・インターフェイスを通して、渡すための第５の命令のセットを更に備えてもよい。
本発明の装置では、ウェブ・サーバからクライアント・コンピュータへ動的に生成された情報を渡すための第６の命令のセットを更に備えてもよい。
本発明の装置では、サーバ・コンピュータの複数のサーブレット・オブジェクトを記憶するための第７の命令のセットを更に備え、サーブレット・オブジェクトのそれぞれは、クライアント・コンピュータからの特定の要求に応じて呼び出されるまで連続的に動作するように構成してもよい。
【００１３】
本発明の装置では、第７の命令のセットは、複数のサーブレット・オブジェクト間でデータを渡すための命令を含むように構成してもよい。
更に、本発明の上記目的は、特定した方法で機能すべくクライアント−サーバ・ネットワークのサーバ・コンピュータを指向するために用いることができるコンピュータ読み取り可能メモリ装置であって、クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取るための第１の命令のセット；要求がサーバ・コンピュータののサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断するための第２の命令のセット；要求に対応している動的に生成された情報を取得するために特定のサーブレット・オブジェクトを実行するための第３の命令のセット；及びクライアント・コンピュータへ動的に生成された情報を渡すための第４の命令のセットを備えているコンピュータ読み取り可能メモリ装置によって達成される。
【００１４】
本発明の装置では、第２の命令のセットは、要求に対応しているサーブレットＵＲＬを解釈するための命令を含むように構成してもよい。
本発明の装置では、第２の命令のセットは、アーギュメントを有するサーブレットＵＲＬを解釈するための命令を含むように構成してもよい。
本発明の装置では、それぞれがクライアント・コンピュータからの特定の要求に応じて呼び出されるまで連続的の動作する、サーバ・コンピュータの複数のサーブレット・オブジェクトを記憶するための第５の命令のセットを更に備えてもよい。
【００１５】
本発明の装置では、第５の命令のセットは、複数のサーブレット・オブジェクト間でデータを渡すための命令を含むように構成してもよい。
また、本発明の上記目的は、要求を生成するためのクライアント・コンピュータ；及び要求がサーバ・コンピュータのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断し、要求に対応している動的に生成された情報を取得するために特定のサーブレット・オブジェクトを実行し、かつクライアント・コンピュータへ動的に生成された情報を渡すためのサーバ・コンピュータを備えているクライアント−サーバ・コンピュータ・ネットワークによって達成される。
【００１６】
本発明の装置では、サーバ・コンピュータへ渡すことができる一組のサーブレット・オブジェクトを記憶する遠隔サーバ・コンピュータを更に備えてもよい。本発明の装置では、サーバ・コンピュータは、複数のサーブレット・オブジェクトを記憶し、サーブレット・オブジェクトのそれぞれは、クライアント・コンピュータからの特定の要求に応じて呼び出されるまで連続的に動作するように構成してもよい。
本発明の装置では、複数のサーブレット・オブジェクトは、それら自体の間でデータを渡すように構成してもよい。
【００１７】
【作用】
本発明は、クライアント−サーバ・ネットワークのローカル・サーバ・コンピュータを動作する方法及び装置を含む。本発明は、クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取るための技術を含む。判断は、要求がクライアント−サーバ・ネットワークのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかについて行われる。そうであれば、要求に対応している特定されたサーブレット・オブジェクトは、クライアント−サーバ・ネットワークの遠隔サーバ・コンピュータからアップロードされうる。特定されたサーブレット・オブジェクトは、次いで、要求に対応している動的に生成された情報を得るために実行される。
【００１８】
本発明のサーブレット・オブジェクトは、柔軟性及び拡張性であるオブジェクト指向型ウェブ・サーバ環境を供給する。本発明のクライアント−サーバ・ネットワークは、サーブレット・オブジェクトでポピュレート(populate)される。サーブレット・オブジェクトは、呼出されるまで連続ループで動作する。それゆえに、サーブレット・オブジェクトの実行に関連付けられた始動オーバーヘッドが存在しない。共通アプリケーション・プログラム・インターフェイスを観測することによって、サーブレット・オブジェクトは、あらゆるサーバ環境で走ることができる。本発明の特徴は、トラストされていない(untrusted) サーブレット・オブジェクトをセキュア・エリア(secure area) で実行させて、動的に生成された情報がセキュア・エリアから残りのサーバ環境に渡される。
【００１９】
本発明の特質及び目的のより良い理解について、添付した図面と共に次の詳細の説明が参照されるべきである。
【００２０】
【実施例】
図１は、本発明により動作されうるクライアント−サーバ・コンピュータ・ネットワーク２０を示す。ネットワーク２０は、少なくとも一つのクライアント・コンピュータ２２及び少なくとも一つのサーバ・コンピュータ２４を含む。クライアント・コンピュータ２２及びサーバ・コンピュータ２４は、有線または無線伝送チャネルでありうる、伝送チャネル２６によって接続される。
クライアント・コンピュータ２２は、メモリ（一次及び／又は二次）３２に接続された中央処理装置（ＣＰＵ）３０を含む標準コンピュータである。メモリ３２は、“ブラウザ”３４を含む、多数のコンピュータ・プログラムを記憶する。この分野で知られるように、ブラウザは、遠隔サーバ・コンピュータ２４と通信しかつそのようなコンピュータから受け取った情報を可視的に表すために用いられる。クライアント・コンピュータ２２は、標準ネットワーク接続デバイス３６を通してネットワーク通信を確立する。
【００２１】
サーバ・コンピュータ２４は、ネットワーク接続デバイス４０、ＣＰＵ４２、及びメモリ（一次及び／又は二次）４４を含んでいる、標準サーバ・コンピュータ・コンポーネントを含む。メモリ４４は、本発明に関連付けられた処理を実現（実行）すべく一組のコンピュータ・プログラムを記憶する。メモリ４４は、ウェブ・サーバ４６を記憶する。ウェブ・サーバ４６は、図１に示した更なるプログラムを含むべく変更される、この分野で知られた型のものでありうる。即ち、本発明の実施例では、標準ウェブ・サーバ４６は、サーバ・アクセプタ・スレッド４８、接続キュー５０、プール・アドミニストレータ５２、スレッド・プール５４、サーブレット５６、サーブレット・マップ５８、セキュリティ・アドミニストレータ６０、及び境界サーブレット６２を含むべく変更される。
【００２２】
図２は、本発明の実施例に従って構築されたサーバ・コンピュータ２４Ａの略図である。図は、一組のサーブレット５６Ａ〜５６Ｎと対話しているウェブ・サーバ４６を示す。特に、ウェブ・サーバ４６は、アプリケーション・プログラム・インターフェイス（ＡＰＩ）を通してサーブレットと対話する。図１に示すように、ウェブ・サーバ４６及びサーブレット５７は、メモリ４４に記憶される。ウェブ・サーバ４６は、ここに説明した機能性を含むべく変更される標準ウェブ・サーバ・ソフトウェアでありうる。各サーブレット５６は、情報を動的に生成するために用いられる一片のソフトウェア・コードである。各サーブレット５６は、呼び出されるべく待機しているインスタンス生成されたソフトウェア・オブジェクトである。一度それが呼び出されると、それは、情報を動的に生成する。情報を動的に生成するこの技術は、永久記憶デバイスから静的情報をフェッチする一般処理とは異なるということに気付く。本発明の技術は、それが情報を動的に生成するという意味でＣＧＩスクリプトに類似する。しかしながら、ＣＧＩスクリプトとは異なり、本発明のサーブレット・オブジェクトは、サーバ始動でインスタンス生成される。それゆえに、サーブレットは、実行されるべく待っている連続ループで動作しているものと考えることができる。インスタンス生成後にサーブレットが呼び出されるときに計算開始費用がないということに気付く。
【００２３】
図３は、本発明の更なる特徴を示している一般的な図である。図３は、伝送チャネル２６にわたりクライアント・コンピュータ（図示省略）から要求を受け取るローカル・サーバ・コンピュータ２４Ａを示す。ウェブ・サーバ４６は、サーブレット・オブジェクトからの動的に生成された情報が必要かどうかを判断する。この場合には、サーブレット・オブジェクトは、初めはローカル・サーバ・コンピュータ２４Ａにはなく、それゆえに、それは、通信リンク２６を用いて遠隔サーバ・コンピュータ２４Ｂからローカル・サーバ・コンピュータ２４Ａによってアップロードされる。図３の例では、サーブレット５６Ｐは、遠隔サーバ・コンピュータ２４Ｂからローカル・サーバ・コンピュータ２４Ａへ渡される。
【００２４】
図３は、本発明の別の特徴を示す。特に、それは、アプロードされたサーブレット５６Ｐは、ローカル・サーバ・コンピュータ２４Ａのセキュリティ・エリア５７で実行されるということを示す。実行後、結果は、ローカル・サーバ・コンピュータ２４Ａの残りの部分の境界サーブレット６０に渡される。このセキュリティ特徴は、トラストされていないサーブレットを安全に実行させる。
上記説明は、本発明の特徴及び利益の一般的な記述を供給する。注目は、ここでこれらの特徴及び利益のより詳細な説明に向けられる。図４の左側は、本発明の実施例に関連付けられた処理段階を示す。図４の右側は、これらのオペレーションを実行するために用いられうるプログラム・コンポーネントを示す。
図４に示す第１の処理段階は、新しい要求が受け取られたかどうかを判断することである（ステップ７０）。上記したように、要求は、クライアント・コンピュータ２２からサーバ・コンピュータ２４への情報に対する要求である。サーバ・コンピュータ２４からの情報を要求しているクライアント・コンピュータ２２のオペレーションは、よく知られている。それは、ユニフォーム・リソース・ロケータ(Uniform Resource Locator)またはＵＲＬを用いて一般的に実行される。ＵＲＬは、コンピュータ及びファイルを特定する。一般的なＵＲＬは、http://SU/123 である。このＵＲＬは、ハイパーテキスト・トランスファ・プロトコル(Hypertext Transfer Protocol) “ＨＴＴＰ”を用いて州立大学のコンピュータ“ＳＵ”からファイル“１２３”を検索するための命令である。
【００２５】
図４に示すように、サーバ・アクセプタ・スレッド４８は、各新しい要求を処理すべく用いられる。本発明は、要求を受け容れると同時に連続的にループするサーバ・アクセプタ・スレッドを有する接続指向型ウェブ・サーバとして実現されるのが好ましい。一度要求が受け取られると、それは、接続キューに要求をディスパッチする（ステップ７２）。図１に示すように、接続キュー５０は、ローカル・サーバ・コンピュータ２４のメモリに形成される。
新しい要求が受け取られないならば、キューが空であるかどうかを判断すべく検査が行われる（ステップ７１）。キューが空でないかまたは新しい要求が受け取られたならば、処理は、ステップ７４へ進行する。ステップ７４は、プール・アドミニストレータ５２によって実行される、スレッド・プール・アドミニストレーション・オペレーションを必然的に伴う。図１は、スレッド・プール５４を示す。スレッド・プール５４は、要求処理に対して用いられるスレッドのプールである。個々のスレッドは、接続キュー５０からの要求をフェッチしかつ処理する。プール・アドミニストレータ５２は、接続キュー５０の各要求に対してスレッドが存在するということを確実にすべく動作する。プール・アドミニストレータ５２は、接続キュー５０における新しい要求を処理すべくさらなるスレッドを生成またはフォークする。最大数のスレッドが到達されたならば、プール・アドミニストレータ５２は、接続キュー５０を入力することから新しい要求をブロックする。そのような場合には、サーバ・コンピュータは、新しい要求を受け取らない。他方、スレッドが接続キュー５０からの要求に対して所定の期間以上待っているならば、プール・アドミニストレータ６０は、それを破壊する。新しいハンドラ・スレッドが破壊されたハンドラ・スレッドのバッファ空間を用いて生成されるのが好ましい。換言すると、本発明は、スレッドに対する特定バッファ・メモリ空間を用いてインプリメントされるのが好ましい。スレッドが破壊されるとき、バッファ・メモリ空間は、クリアされるが、それは、新しいスレッドに割り当てられる。この方法で割り当てられたメモリを再使用することにより、本発明のこの実施例は、特に要求毎に基づきメモリを割当てかつ割当て解除するシステムと比較したとき、システムによって用いられるメモリの量を最小化する。
【００２６】
スレッド・プール・アドミニストレーション・オペレーションが実行された後（ステップ７４）スレッドは、接続キューからの要求を検索する（ステップ７６）。次いでスレッドは、サーブレット名に要求をマップする（スクリーン７８）。サーブレットは、ＵＲＬによって特定されうるし、その場合にはマッピング処理は、直接である。他方、ある変換（翻訳）処理は、どのサーブレットが要求をサービスできるかを識別するために要求されうる。マッピング・オペレーションは、次の方法の一つで実行されうる。サーバ・アドミニストレータは、ある種類のクライアント要求が特定のサーブレットへ常にマップするということを特定しうる。例えば、あるものは、特定のデータベースにトーク(talk)する。サーバ・アドミニストレータは、アドミニスターされたサーブレット・ディレクトリに見出されるように、クライアント要求の一部がサーブレットの名前であるということを特定しうる。多くのサイトで、そのディレクトリは、サイトのクライアントに対する処理のロードを共有するサーバ間で共有される。あるサーバは、それらのアドミニストレーティブ構成に基づき、他のサーブレットの出力をフィルタすべくサーブレットを自動的に呼出すことが可能でありうる。例えば、特定の型のサーブレット出力は、たぶんフォーマット変換を実行するために、他のサーブレットにより後方−処理(post-processing) をトリガしうる。適切に許可されたクライアントは、アドミニストレーティブ介入なしで、呼び出されるべきサーブレットを特定しうる。
【００２７】
セキュリティ・オペレーションは、また、スレッドによって実行されうる（ステップ８０）。セキュリティ・アドミニストレータ６０は、サーブレットのトラストされた及びトラストされていないクラスを識別するために用いうる。サーブレットをトラストする判断は、セキュリティ・アドミニストレータ６０に関連付けられた一組の規則によって確立されうる。例えば、セキュリティ・アドミニストレータ６０は、全てのローカル・サーブレットをトラストしかつ全てのアップロードされたネットワーク・サーブレットをミストラストすべく判断しうる。トラストされていないサーブレットは、次いで、図３に示すように、セキュリティ・エリア５７で実行される。セキュリティ・アドミニストレータ６０は、また、サーブレットが所定のリスキー・オペレーションを実行すべく許可されるかどうかを判断するために用いられうる。この型のセキュリティ情報は、スレッドに記憶されうる。
【００２８】
本発明によるＪＡＶＡ（ジャワ）サーブレットは、強力なセキュリティ・ポリシー支持を供給する。これは、全てのＪＡＶＡ環境が、ネットワークまたはファイル・アクセスのようなアクションが許容されるべきかどうかを制御するために用いることができるセキュリティ・マネージャ(Security Manger) を供給するからである。デフォルトにより、全てのサーブレットは、トラストされず、かつネットワーク・サービスまたはローカル・ファイルをアクセスすることのようなオペレーションを実行することを許されない。しかしながら、サーバに“内蔵された(built into)”サーブレット、または、それらがＪＡＶＡ  Ａｒｃｈｉｖｅ（アーカイブ）ファイルに設置されたときにディジタル的に署名されたサーブレットは、セキュリティ・マネージャによってトラストされかつより多くの許可を与えられうる。実行可能コードのディジタル署名は、コードを署名した組織がある意味で“それを保証する(vouches for it)”ということを示す。そのような署名は、それら自体で責任能力を支持できないが、それらは、そのコードの使用に設けられうる確実性の程度を示す。例えば、ＭＩＳ組織からの特定の署名は、企業イントラネット内のネットワーク・サービスへの一般的なアクセスを与えられる全てのコードで要求されうる。その署名は、特定のセキュリティ・ポリシーに違反していないと強く信じられるコードでのみ用いられうる。Ｃまたはスクリプティング言語のような、他の言語での拡張ＡＰＩｓは、それらがそれらのコードに対してディジタル署名を許したとしてもそのようなファイン・グレイン(fine grained)アクセス制御を支持できない。
【００２９】
セキュリティ・オペレーションが実行された後（ステップ８０）、スレッドは、ディスパッチされる（図５のステップ８２）。ディスパッチ・オペレーションは、それが要求された動的情報を生成するようにサーブレットを呼出すことを必然的に伴う。ディスパッチ・オペレーションは、二つの型の一つである。判断は、サーブレットがローカルであるかどうかを判断すべく行われる（ステップ８４）。サーブレットがローカルであれば、ローカル・サーブレットが実行される（ステップ８６）。これは、標準的方法でウェブ・サーバ４６によって次いで処理される動的情報の生成を結果として生ずる。ウェブ・サーバ４６は、知られた技術を用いてクライアント・コンピュータへ情報を一般に戻して渡す。サーブレットとウェブ・サーバ４６の間の情報の交換は、以下に説明する、アプリケーション・プログラム・インターフェイスを通して達成される。
【００３０】
サーブレットがローカルでなければ、それは、遠隔サーバ２４Ｂからアップロードされる（ステップ８８）。判断は、次いで、アプロードされたサーブレットが安全であるかどうかに関して行われる（ステップ９０）。サーブレットに対するセキュリティ・パラメータに関する情報を要求するスレッドを結果として生じたセキュリティ・オペレーション段階を思い出す。アプロードされたサーブレットに関連付けられたセキュリティ問題が存在しないならば、それは、ローカル的に実行される（ステップ９２）。他方、セキュリティ問題が識別されたならば、サーブレットは、セキュリティ・エリアで実行される（ステップ９４）。その後、動的に生成された結果は、ノン・セキュリティ・エリアに渡される（ステップ９６）。境界サーブレットは、この目的に用いられうる。境界サーブレットは、スタブ(stubs) 及びサブコントラクト(subcontracts)の使用を通してまたはこの技術分野で知られた他の“ファイア・ウォール(fire wall) ”技術を通してインプリメントされうる。サーブレットが実行された後、処理は、図４のステップ７０に戻る。
【００３１】
本発明のオペレーションをここで完全に説明する。注意は、本発明に従って用いられるサーブレット・オブジェクトのより特定な説明及びサーブレット・オブジェクトに関連して用いられたアプリケーション・プログラム・インターフェイスの実施例にここで向けられる。上記したように、サーブレット・オブジェクトは、情報を動的に生成するために用いられるソフトウェア・オブジェクトである。それらは、呼び出されることを待っているループに置かれるインスタンス生成されたオブジェクトである。それらは、ＪＡＶＡTMプログラミング言語のオブジェクト・バイトコードとしてインプリメントされるのが好ましい。クライアント・コンピュータで“アプレット(applets) ”をインプリメントすべくＪＡＶＡTMプログラミング言語が用いられるということは、よく知られている。“アプレット”は、クライアント・コンピュータで図的ディスプレイを生成すべく用いられる実行可能なＪＡＶＡオブジェクト・バイトコードである。本発明のサーブレットは、サーバ側で実行されかつ図的コンテントを有さない。
【００３２】
サーブレットは、一般的にサーバ始動でインスタンス生成される。代替では、サーブレットは、所定の組の条件下でまたはクライアント呼出しによってインスタンス生成されうる。サーブレットは、そのＵＲＬ（例えば、http://host/<servlet URL> ）を用いてインスタンス生成されかつ実行されうる。httpプロトコルは、アーギュメントのパッシングを支持し、それゆえに、アーギュメントは、サーブレットに渡されうる（例えば、http://host/<servlet URL>?<arguments> ）。特性オブジェクトは、一組の“name:value”ペアを含むＪＡＶＡプログラミング言語特性クラスである。システム・アドミニストレータは、特性オブジェクトを通してインスタンス生成されたHttpServlet オブジェクトにアーギュメントを渡すことができる。この方法で、システム・アドミニストレータは、特定サイトの特定サーバに対してHttpServlet を“カスタマイズ(customize) ”することができる。例えば、システム・アドミニストレータは、ネットワークにわたるクライアント処理によって要求されるであろう文書を記憶するデータベースのネットワーク位置についてのHttpServlet オブジェクトサイト特定情報またはサーバ・アドミニストレータを処理するために用いられるシステム・バッファにおいて利用可能なメモリの量を渡すことができる。
【００３３】
一度インスタンス生成されたならば、サーブレットは、サーバが遮断されるかまたは破壊方法がサーバによってサーブレット上に呼び出されるまで、ループする。サーブレットは、それが、それにより作動すべき要求を待つときに連続ループで動作するので、サーバ・コンピュータは、サーブレットへの要求間でサーブレットを生成しかつ破壊することのオーバーヘッドを避ける。更に、要求間でサーブレットを生かし続けることは、サーブレットにデータを渡させかつそれら自身の間で通信させる。例えば、サーブレットは、ユーザによりセッション間のユーザについてデータを維持することができる。このデータは、ユーザが作動する作動環境をカスタマイズするために異なるサーブレット間で共有することができる。サーブレットが要求毎に基づき生成されかつ破壊されるならば、サーブレットが改良された処理能力(processing capabilities) を供給すべくそれがその中を走る環境を理解しかつこの知識を利用することは、実際に不可能でないまでも、非常に難しい。サーバ・コンピュータは、時間、メモリ、等による資源制限に到達したときにサーブレット上に破壊方法を呼び出すことができる。
【００３４】
アプレット・アプリケーション・プログラミング・インターフェイス（ＡＰＩ）は、ウェブ・サーバのような、情報サーバにサーブレットをインターフェイスするための標準を確立する。サーブレットＡＰＩは、サーブレットを初期化し、要求を処理し、サーブレット情報を取得し、かつサーブレットを破壊するメソッド（方法）を含む。サーブレットＡＰＩは、プラットフォーム独立サーブレットを許容する。サーブレット・インターフェイスの例は、次に示す：
【００３５】
【表１】
0004005667.tif 000002
サーバ・コンピュータは、“HttpRequest ”をインプリメントするオブジェクトを渡し、サーブレットは、“HttpRequest ”オブジェクトをリターンする。“ServletContext”インターフェイスは、サーバ環境と情報を交換するために用いられる。“ServletContext”オブジェクト上のメソッドのあるものは、“Getserver() ”及び“Getservlets() ”である。“Getserver() ”は、インスタンス生成されたHttpservlet がその中で走る親サーバへポインタをリターンする。このポインタを用いて、Httpservlet オブジェクトは、その親サーバについての情報を見出すことができる。“Getservlet”メソッドは、親サーバ上で走っているサーブレットへポインタをリターンする。“ServerProperties”インターフェイスは、サーバ・アドミニストレータによって確立された特定のサーバ特性に関する情報を交換するために用いられる。
【００３６】
サーブレットは、要求を受け容れかつ応答を生成する普通のプログラミング・モデルを支持する。次に示すのは、“service （サービス）”と呼ばれる単一メソッドを定義している簡単なサーブレットである：
【００３７】
【表２】
0004005667.tif 000003
サービス・メソッドは、リクエスト及びリスポンス(Request and Response)パラメータが設けられている。これらのパラメータは、クライアントによって送られたデータを封じ込め、それによりサーブレットに、エラー（誤り）のような、状態情報を報告させる。サーブレットは、入力ストリームを通してそれらのパラメータのほとんどを通常検索し、かつ出力ストリームを用いてそれらの応答を送る：
【００３８】
【表３】
0004005667.tif 000004
これらの入力及び出力ストリームは、適切なフォーマットのデータで用いられうる。例えば、アプレット及びサーブレットは、オブジェクト直列化、ＨＴＭＬ、またはあらゆる数のイメージ・フォーマットを用いてデータを交換しうる。
サーブレットは、ＪＡＶＡオブジェクトなので、それらは、インスタンス−特定データを有する。これは、結果としてサーブレットが、（ある代替サーバ拡張ＡＰＩｓによって要求される）更なるクラスの複雑性を必要としないで、サーバ内で走っている独立アプリケーションであるということを意味する。サーブレットは、初期化時にあるサーブレット−特定構成データへのアクセスを有する。これは、異なるデータで初期化され、かつ異なるように命名されたサーブレットとして管理されるべき同じサーブレット・クラスの異なるインスタンスを許容する。初期化時に供給されたデータは、各インスタンスがその持続性インスタンス−特定状態を保持するエリアを含む。
【００３９】
先の簡単なサーブレット例を増強して、次のプログラム・コードは、それが呼び出されたときにハイパーテキスト・マークアップ・ラングウェジ（(Hypertext Markup Language) （ＨＴＭＬ））テクストを送るために用いるサーブレットの例である：
【００４０】
【表４】
0004005667.tif 000005
次に示すプログラム・コードは、特定されたホスト・コンピュータのユーザについての情報を照会すべくフィンガ・プロトコルを用いるサーブレットの例である。照会ストリング・パラメータ<tt>user</tt> 、<tt>hosts</tt>、及び<tt>verbose</tt>は、照会すべくユーザ及びホストを特定するために用いることができる。パラメータ<tt>user</tt> は、ユーザ名であり、<tt>hosts</tt>は、照会すべきホスト名のコンマ−分離リストであり、かつ<tt>verbose</tt>は、特定されたならば、ヴァボーズ(verbose) 出力を生成させる。例えば、<pre>http:/goa/finger.html?user=dac&hosts=eno,doppio&verbose=yes</pre>は、両方のホスト“eno ”及び“doppio”上のユーザ“dac ”についての完全情報を要求する。
【００４１】
【表５】
0004005667.tif 000006
【００４２】
【表６】
0004005667.tif 000007
【００４３】
【表７】
0004005667.tif 000008
【００４４】
【表８】
0004005667.tif 000009
【００４５】
当業者は、ＨＴＴＰプロトコルで用いられているサーブレットが、ＧＥＴ、ＰＯＳＴ、ＨＥＡＤ、及びそれ以上を含んでいる、あらゆるＨＴＴＰメソッドを支持しうるということを理解するであろう。それらは、他の位置へ要求を再指向し、かつＨＴＴＰ−特定エラー・メッセージを送りうる。それらは、実行されるべきＨＴＴＰメソッド及び、要求の宛先を識別する、ＵＲＩを含んでいる、標準ＨＴＭＬフォームを通して渡されたパラメータへのアクセスを取得する。
上記したように、サーブレットの最も大きな性能特徴の一つは、それらが各要求に対する新しい処理の生成を必要としないことである。ほとんどの環境では、多くのサーブレットは、サーバとして同じ処理内で並列に走る。ＨＴＴＰを有するような環境で用いられたとき、サーブレットは、ＣＧＩアプローチ及び高速ＣＧＩ(Fast-CGI)アプローチの両方と比較してコンペリング(compelling)性能利点を供給する。これは、サーブレットがスレッド・コンテキスト切替え中に少ない計算費用を有するからである。ほとんどの環境でサーブレットは、それらが初期化される度毎に多くのクライアント要求を処理することができるので、初期化の費用は、多くのメソッドに分配される。そのサービスへの全てのクライアント要求は、データ及び通信資源を共有するための機会を有し、システム・キャッシュからより強力に利益を得る。
【００４６】
当業者は、本発明のサーブレットがＪａｖａ−イネーブル(enabled) ・サーバを動的に拡張するために用いることができるということを理解するであろう。サーブレットは、要求−応答例(request-response paradigm) を用いて構築されたサービスに対する一般的フレームワークを供給する。サーブレットは、ＨＴＭＬウェブ・ページを用いて与えられるデータへのセキュア・ウェブ−ベースド・アクセスを供給することができかつそれらは、動的ウェブ・ページ生成技術を用いてそのデータを変更するかまたは対話的にビューするために用いることができる。
本発明のサーブレットは、カスタマー・ベースに対するカスタマイズされたマルチ−ユーザ・サービスを供給するために用いることができる。サーブレットは、また、ＨＴＴＰ（またはＨＴＴＰＳ）プロトコルを通して静的ウェブ・ページをサーブ（提供）し、かつサービスをプロキシーする(proxying)ような、標準化されたサービスを支持するために十分に柔軟である。それらは、動的拡張性に対して用いられるので、それらは、プラグ−イン・スタイルで用いられ、サーチ・エンジンのようなファシリティ、及びウェブ−ベースド・オーダー・エントリまたはインべントリ・システムのような、セミ−カスタム・アプリケーションを支持しうる。
【００４７】
サーブレットは、ＪＡＶＡで書かれるのが好ましいけれども、サーブレット・クライアントは、あらゆる言語で書かれうる。サーブレットが分散型アプリケーション・システムの中段(middle tiers)で用いられるとき、それらは、あらゆる言語で書かれた、他のサービスへのクライアントでありうる。
当業者は、サーブレットが複数のモードで用いられうるということを理解するであろう。基本モードは、要求／応答(request/response)プロトコルのコア（核・中心）にある。更に、サーブレットは、ＨＴＴＰのようなプロトコルを支持すべく特殊化（専門化）されうる。ＨＴＴＰベースド・アプリケーションでは、サーブレットは、小型、完全であり、かつＣＧＩベースド拡張に対するより効率的な置換である。また、ＨＴＴＰアプリケーションでは、サーブレットは、ウェブ文書の一部を動的に生成することを含むＨＴＭＬサーバ側で用いられうる。
【００４８】
上記は、説明の目的で、本発明の完全な理解を供給すべく特定の名称集(nomenclature)を用いた。しかしながら、本発明を実施するために特定の詳細が必要ないということは、当業者に明らかであろう。他の場合には、よく知られた回路及び機器は、根底をなしている発明からの不要な脱線を避けるためにブロック図形で示される。それゆえに、本発明の特定の実施例の先の説明は、説明及び記述の目的で示される。それらは、網羅的であることまたは開示された正確なフォームに本発明を制限することを意図しておらず、明らかに多くの変更及び変形が上記教示の観点から可能である。実施例は、本発明の原理及びその実用的応用を最も良く説明し、それにより当業者が企図した特定の使用に適するように本発明及び種々の変更を有する種々の実施例を最も良く利用することができるために、選択されかつ記述される。本発明の範疇は、特許請求の範囲及びそれらの同等物によって定義されるということを意図する。
【００４９】
【発明の効果】
本発明の方法は、プログラムの制御下でローカル・サーバ・コンピュータによって実行され、ローカル・サーバ・コンピュータがプログラムを記憶するためのメモリを含み、ローカル・サーバ・コンピュータがクライアント−サーバ・ネットワークの一部を形成する、方法であって、クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取り；要求がクライアント−サーバ・ネットワークのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断し；要求に対応している特定のサーブレット・オブジェクトをクライアント−サーバ・ネットワークの遠隔サーバ・コンピュータからアップロードし；かつ要求に対応している動的に生成された情報を取得すべく特定のサーブレット・オブジェクトを実行する段階を具備するので、トラストされていないサーブレット・オブジェクトをセキュア・エリアで実行させて、動的に生成された情報がセキュア・エリアから残りのサーバ環境に渡されるので、クライアント・コンピュータ要求に応じて情報を動的に生成し、かつ動的情報を生成すると同時に処理始動費用を低減できる。
【００５０】
本発明のコンピュータ読み取り可能メモリ装置は、特定した方法で機能すべくクライアント−サーバ・ネットワークのサーバ・コンピュータを指向するために用いることができるコンピュータ読み取り可能メモリ装置であって、クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取るための第１の命令のセット；要求がクライアント−サーバ・ネットワークのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断するための第２の命令のセット；要求に対応している特定のサーブレット・オブジェクトをクライアント−サーバ・ネットワークの遠隔サーバ・コンピュータからアップロードするための第３の命令のセット；及び要求に対応している動的に生成された情報を取得するために特定のサーブレット・オブジェクトを実行するための第４の命令のセットを備えているので、クライアント・コンピュータ要求に応じて情報を動的に生成し、かつ動的情報を生成すると同時に処理始動費用を低減できる。
【００５１】
本発明のコンピュータ読み取り可能メモリ装置は、特定した方法で機能すべくクライアント−サーバ・ネットワークのサーバ・コンピュータを指向するために用いることができるコンピュータ読み取り可能メモリ装置であって、クライアント−サーバ・ネットワークのクライアント・コンピュータから要求を受け取るための第１の命令のセット；要求がサーバ・コンピュータののサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断するための第２の命令のセット；要求に対応している動的に生成された情報を取得するために特定のサーブレット・オブジェクトを実行するための第３の命令のセット；及びクライアント・コンピュータへ動的に生成された情報を渡すための第４の命令のセットを備えているので、クライアント・コンピュータ要求に応じて情報を動的に生成し、かつ動的情報を生成すると同時に処理始動費用を低減できる。
【００５２】
本発明のクライアント−サーバ・コンピュータ・ネットワークは、要求を生成するためのクライアント・コンピュータ；及び要求がサーバ・コンピュータのサーブレット・オブジェクトから動的に生成された情報を必要とするかどうかを判断し、要求に対応している動的に生成された情報を取得するために特定のサーブレット・オブジェクトを実行し、かつクライアント・コンピュータへ動的に生成された情報を渡すためのサーバ・コンピュータを備えているので、トラストされていないサーブレット・オブジェクトをセキュア・エリアで実行させて、動的に生成された情報がセキュア・エリアから残りのサーバ環境に渡されるので、クライアント・コンピュータ要求に応じて情報を動的に生成し、かつ動的情報を生成すると同時に処理始動費用を低減できる。
【図面の簡単な説明】
同じ参照番号は、複数の図面を通して対応する部分を参照する。
【図１】本発明の実施例によるクライアント−サーバ・コンピュータ・ネットワークを示す図である。
【図２】ウェブ・サーバと本発明のサーブレットの間の対話の略図である。
【図３】ウェブ・サーバと外部サーバからロードされたサーブレットの間の対話の略図である。
【図４】本発明の実施例によるサーブレット処理ルーチンに関連付けられた処理段階を示す図である。
【図５】本発明の実施例によるサーブレット処理ルーチンに関連付けられた処理段階を示す図である。
【符号の説明】
２０  クライアント−サーバ・コンピュータ・ネットワーク
２２Ａ  クライアント・コンピュータ
２４Ａ  サーバ・コンピュータ
２６  伝送チャネル
３０、４２  中央処理装置（ＣＰＵ）
３２、４４  メモリ（一次及び／又は二次）
３４  ブラウザ
３６、４０  標準ネットワーク接続デバイス
４６  ウェブ・サーバ
４８  サーバ・アクセプタ・スレッド
５０  接続キュー
５２  プール・アドミニストレータ
５４  スレッド・プール
５６  サーブレット
５８  サーブレット・マップ
６０  セキュリティ・アドミニストレータ
６２  境界サーブレット
【図１】
0004005667.tif 000010
【図２】
0004005667.tif 000011
【図３】
0004005667.tif 000012
【図４】
0004005667.tif 000013
【図５】
0004005667.tif 000014