"要求をディスパッチするための方法であって、実行時間中に第1の実行可能コード内で実行すべき要求ディスパッチを識別することであって、前記要求ディスパッチが識別値に関連付けられ、前記要求ディスパッチの前記識別値が実行すべき第2の実行可能コードを識別することと、前記第2の実行可能コードの実行の前に、前記第2の実行可能コードを実行するための実行モードを決定することであって、前記決定アクションがパフォーマンスメトリックおよびしきい値のうちの少なくとも1つを評価することを含み、前記しきい値がユーザ確立値およびプログラム確立値のうちの少なくとも1つであり、前記実行モードが非同期実行モードまたは同期実行モードであることと、前記実行モードの前記決定に応答して、前記実行モードに基づいて前記要求ディスパッチを実行することであって、前記同期実行モードの結果、前記第1の実行可能コードが停止し、前記第2の実行可能コードが開始して完了し、その後、前記停止した第1の実行可能コードが実行を再開し、前記非同期実行モードの結果、前記第1および第2の実行可能コードが同時に実行されることを含む、方法。前記第1および第2の実行可能コードがWebコンテナのコンポーネント内に常駐し、前記Webコンテナがランタイム環境に関連付けられる、請求項1記載の方法。前記要求ディスパッチに関連する前記固有識別値が、自動生成固有識別値、ユニフォームリソースIDURI、固有パス値、および固有照会ストリングのうちの少なくとも1つである、請求項1記載の方法。前記第1および第2の実行可能コードの前記実行モードがその後の実行中に動的に調整することができ、前記第1および第2の実行可能コードが、JAVAサーブレット、JAVASERVERPAGEJSP、JAVABEAN、およびJAVA対応ポートレットのうちの少なくとも1つである、請求項1記載の方法。前記実行モードを決定することが、要求ディスパッチおよびその実行時間の履歴データを使用して前記パフォーマンスメトリックを構築することをさらに含む、請求項1記載の方法。前記実行モードを決定することが、前記パフォーマンスメトリックが前記しきい値を超え損なったときに、前記要求ディスパッチを同期的に実行することと、前記パフォーマンスメトリックが前記しきい値を超えたときに、前記要求ディスパッチを非同期的に実行することをさらに含む、請求項1記載の方法。前記要求ディスパッチを実行することが、前記要求ディスパッチの前記実行パフォーマンスに応答して、前記要求ディスパッチに関連するモード設定を第1の実行モードから第2の実行モードにトグル切り替えすることであって、前記モード設定が前記要求ディスパッチを実行すべき前記モードを示し、前記モードが非同期実行モードおよび同期実行モードのうちの少なくとも1つであり、前記トグル切り替えアクションの結果、前記要求ディスパッチの前記その後の実行が前記第2の実行モードで実行されることをさらに含む、請求項1記載の方法。前記パフォーマンスメトリックが、前記要求ディスパッチの前記履歴実行に関連するタイミング情報のうちの少なくとも1つである、請求項1記載の方法。前記要求ディスパッチの前記実行中に要求ディスパッチャに関連する少なくとも1つのパフォーマンスメトリックをプログラムによって収集することであって、前記パフォーマンスメトリックがリソース割り振り値であることをさらに含む、請求項1記載の方法。既存のディスパッチAPIの機能を透過的にカプセル化することであって、前記既存のディスパッチAPIが要求ディスパッチを同期実行モードで実行し、前記カプセル化により前記要求ディスパッチを非同期的または同期的に実行できることをさらに含む、請求項1記載の方法。要求をディスパッチするためのシステムであって、第1の実行可能コードに関連する要求ディスパッチを識別し実行することができるディスパッチエンジンであって、前記ディスパッチエンジンがランタイム環境内のトランスポートチャネルチェーンのコンポーネントであり、前記トランスポートチャネルチェーンがオープンシステム間相互接続OSI層モデルのトランスポート層に関連付けられる、ディスパッチエンジンと、前記第1の実行可能コードに関連する要求ディスパッチであって、前記要求ディスパッチが固有識別値に関連付けられ、前記固有識別値が実行すべき固有リソースを識別し、前記要求ディスパッチが前記固有リソースの前記実行をトリガし、前記固有リソースが第2の実行可能コードである、要求ディスパッチと、前記要求ディスパッチに関連するパフォーマンスメトリックであって、前記パフォーマンスメトリックが前記要求ディスパッチ実行中に自動的に収集され、前記パフォーマンスメトリックが前記要求ディスパッチの実行挙動を変更するために使用される、パフォーマンスメトリックと、前記要求ディスパッチに関連するしきい値、実行モード、およびイベントハンドラのうちの少なくとも1つを確立するように構成されたルールセットであって、前記しきい値がユーザ確立設定および自動決定値のうちの少なくとも1つであり、前記実行モードが同期実行モードおよび非同期実行モードのうちの少なくとも1つであり、前記同期実行モードの結果、前記第1の実行可能コードが停止し、前記第2の実行可能コードが開始して完了し、その後、前記停止した第1の実行可能コードが実行を再開し、前記非同期実行モードの結果、前記第1および第2の実行可能コードが同時に実行される、ルールセットとを含む、システム。前記要求ディスパッチに関連する前記固有識別値が、自動生成固有識別値、ユニフォームリソースIDURI、固有パス値、および固有照会ストリングのうちの少なくとも1つである、請求項11記載のシステム。固有要求ディスパッチを識別し、前記識別済み要求ディスパッチパフォーマンスをモニターするように構成されたパフォーマンスモニターであって、前記識別およびモニターがリアルタイムで実行される、パフォーマンスモニターをさらに含む、請求項11記載のシステム。前記システムのユーザカスタマイズを可能にするユーザインターフェースであって、カスタマイズがユーザ確立しきい値、ユーザ確立パフォーマンスメトリック、およびユーザ確立実行モードのうちの少なくとも1つである、ユーザインターフェースをさらに含む、請求項11記載のシステム。前記ディスパッチエンジンが、少なくとも1つのパフォーマンスメトリックに応答して、前記しきい値を変更することができる、請求項11記載のシステム。コンピュータ使用可能プログラムコードがそれにより実施されたコンピュータ可読記憶媒体を含むコンピュータプログラムであって、前記コンピュータ使用可能プログラムコードが、実行時間中に第1の実行可能コード内で実行すべき要求ディスパッチを識別するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラムコードであって、前記要求ディスパッチが固有識別値に関連付けられ、前記要求ディスパッチの前記固有識別値が実行すべき第2の実行可能コードを識別する、コンピュータ使用可能プログラムコードと、前記第2の実行可能コードの実行の前に、前記第2の実行可能コードを実行するための実行モードを決定するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラムコードであって、前記決定アクションがパフォーマンスメトリックおよびしきい値のうちの少なくとも1つを評価することを含み、前記しきい値がユーザ確立値およびプログラム確立値のうちの少なくとも1つであり、前記実行モードが非同期実行モードまたは同期実行モードである、コンピュータ使用可能プログラムコードと、前記決定アクションに応答して、前記実行モードに基づいて前記要求ディスパッチを実行するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラムコードであって、前記同期実行モードの結果、前記第1の実行可能コードが停止し、前記第2の実行可能コードが開始して完了し、その後、前記停止した第1の実行可能コードが実行を再開し、前記非同期実行モードの結果、前記第1および第2の実行可能コードが同時に実行される、コンピュータ使用可能プログラムコードとを含む、コンピュータプログラム。前記第1および第2の実行可能コードがWebコンテナのコンポーネント内に常駐し、前記Webコンテナがランタイム環境に関連付けられる、請求項16記載のコンピュータプログラム。前記要求ディスパッチに関連する少なくとも1つのパフォーマンスメトリックを識別するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラムコードであって、前記パフォーマンスメトリックが履歴メトリックであり、前記履歴メトリックが前記要求ディスパッチの履歴実行の少なくとも1つのプロパティを示す統計値である、コンピュータ使用可能プログラムコードをさらに含む、請求項16記載のコンピュータプログラム。前記要求ディスパッチの前記実行パフォーマンスに応答して、前記要求ディスパッチに関連するモード設定を第1の実行モードから第2の実行モードにトグル切り替えするように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラムコードであって、前記モード設定が前記要求ディスパッチを実行すべき前記モードを示し、前記モードが非同期実行モードおよび同期実行モードのうちの少なくとも1つであり、前記トグル切り替えアクションの結果、前記要求ディスパッチの前記その後の実行が前記第2の実行モードで実行される、コンピュータ使用可能プログラムコードをさらに含む、請求項16記載のコンピュータプログラム。前記要求ディスパッチの前記実行中に要求ディスパッチャに関連する少なくとも1つのパフォーマンスメトリックを収集するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラムコードであって、前記パフォーマンスメトリックがリソース割り振り値である、コンピュータ使用可能プログラムコードをさらに含む、請求項16記載のコンピュータプログラム。さらに、動的サーバ環境では、同期および非同期リソース実行は、リソース可用性の変化により、様々な結果をもたらす可能性がある。Webアプリケーションは一般にこのような環境に配備されるので、Webアプリケーションはパフォーマンスの変動の影響を受ける。このような問題に対処するために、Web開発者は、しばしば、どの実行モードが最良のパフォーマンス結果をもたらすことができるかについて経験や知識に基づく推測を行う。往々にして、このような推測の結果、最も最適なアプリケーションパフォーマンスが得られるわけではない。このため、Webアプリケーションを実行する多くのサーバ環境では、リソースの使用状況が非効率的になり、サーバの能力が低減され、それにより、情報技術ITインフラストラクチャに不当に負担をかける可能性がある。本発明の一実施形態は、要求をディスパッチするための方法を含む。この方法では、実行時間中に第1の実行可能コード内で実行すべき要求ディスパッチを識別することができる。要求ディスパッチは固有識別値に関連付けることができる。要求ディスパッチの固有識別値は、実行すべき第2の実行可能コードを識別することができる。第1および第2の実行可能コードは、Webコンテナのコンポーネント内に常駐することができる。Webコンテナは、リソースの包含を可能にする様々な技術のいずれかを使用することができる。たとえば、Webコンテナは、J2EEランタイム環境などのランタイム環境に関連付けることができる。第2の実行可能コードの実行の前に、第2の実行可能コードに関する実行モードを決定することができる。この決定は、パフォーマンスメトリックおよびしきい値のうちの少なくとも1つを評価することを伴うことができる。しきい値は、ユーザ確立値およびプログラム確立値のうちの少なくとも1つにすることができる。実行モードは、非同期実行モードまたは同期実行モードにすることができる。実行モードの決定に応答して、決定した実行モードの使用に基づいて要求ディスパッチを実行することができる。同期実行モードの結果、第2の実行可能コードの実行が始まる前に、第1の実行可能コードが実行され、実行を完了することができる。非同期実行モードの結果、第1および第2の実行可能コードを同時に実行することができる。本発明の他の実施形態は、要求をディスパッチするためのシステムを含むことができる。このシステムは、第1の実行可能コードに関連する要求ディスパッチを識別し実行することができるディスパッチエンジンを含むことができる。ディスパッチエンジンは、ランタイム環境内のトランスポートチャネルチェーンのコンポーネントにすることができる。トランスポートチャネルチェーンは、オープンシステム間相互接続OSI層モデルのトランスポート層に関連付けることができる。ランタイム環境は、リソースの包含をサポートする任意の環境にすることができる。たとえば、一実施形態では、ランタイム環境はJAVA2ENTERPRISEEDITIONJ2EEランタイム環境にすることができる。また、このシステムは、第1の実行可能コードに関連する要求ディスパッチも含むことができる。要求ディスパッチは固有識別値に関連付けることができる。固有識別値は実行すべき固有リソースを識別することができる。要求ディスパッチは、固有リソースの実行をトリガすることができる。固有リソースは第2の実行可能コードを含むことができる。また、このシステムは、要求ディスパッチに関連する少なくとも1つのパフォーマンスメトリックを含むこともできる。パフォーマンスメトリックは、要求ディスパッチ実行中に自動的に収集することができる。パフォーマンスメトリックは、要求ディスパッチの実行挙動を変更するために使用することができる。要求ディスパッチに関連するしきい値、実行モード、およびイベントハンドラのうちの少なくとも1つを確立するように構成されたルールセットrulesetが存在する可能性がある。しきい値はユーザ確立設定または自動決定値にすることができる。実行モードは同期実行モードまたは非同期実行モードにすることができる。同期実行モードの結果、第1の実行可能コードが第2の実行可能コードとともに順次実行することができ、第1の実行可能コードがその実行を完了するまで第2の実行可能コードは実行することができない。非同期実行モードの結果、第1および第2の実行可能コードが同時に実行することができる。次に、以下の図面に関連して、一例としてのみ、本発明の好ましい諸実施形態について説明する。本発明は、履歴メトリックを使用してランタイム中に要求ディスパッチ実行モードをプログラムによって決定するための解決策を提供する。すなわち、要求ディスパッチャは、同期モードおよび非同期モードで要求ディスパッチたとえば、includeの処理を自動的かつ知的に切り替えることができる。各要求ディスパッチは、プロセスIDまたはユニフォームリソースIDURIなどの固有識別値、履歴メトリック、およびルールセットに関連付けることができる。要求ディスパッチを実行するたびに、履歴メトリックを収集することができる。メトリックとしては、実行持続期間あるいは実行頻度またはその両方、プロセッサ負荷、メモリ使用率、ネットワーク入出力、従属要求ディスパッチの数などを含むことができるが、これらに限定されない。履歴メトリックを使用すると、要求ディスパッチのその後の実行をどちらのモードで実行すべきかを判断するためのルールを構築することができる。たとえば、要求ディスパッチの同期実行持続期間たとえば、100msがユーザ指定持続期間たとえば、50msを超える場合、要求ディスパッチのその後の実行は非同期モードで実行することができる。要求ディスパッチに関連するルールは、適切な実行モードを決定するための1つまたは複数の任意の複雑なルールにすることができる。このため、Webアプリケーションのランタイム最適化をさらに改善することができる。当業者であれば分かるように、本発明は、システム、方法、またはコンピュータプログラムcomputerprogramproductとして実施することができる。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、またはソフトウェアとハードウェアの態様を組み合わせた実施形態の形を取ることができ、いずれも一般に本明細書では回路、モジュール、またはシステムと呼ぶことができる。さらに、本発明は、その媒体に実施されたコンピュータ使用可能プログラムコードを有する1つまたは複数の任意の有形表現媒体に実施されたコンピュータプログラムの形を取ることができる。1つまたは複数のコンピュータ使用可能またはコンピュータ可読媒体複数も可の任意の組み合わせを使用することができる。コンピュータ使用可能またはコンピュータ可読媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイスにすることができるが、これらに限定されない。コンピュータ可読媒体のより具体的な例非網羅的リストは、1つまたは複数のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、読み取り専用メモリROM、消去可能プログラム可能読み取り専用メモリEPROMまたはフラッシュメモリ、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリCDROM、光学記憶装置、または磁気記憶装置を含むことになるであろう。コンピュータ可読媒体は、データがデジタルでコード化された形で保持される非一時的記憶媒体にすることができる。コンピュータ可読媒体は、記憶媒体に保管されたデータ内容を入手するためにコンピューティング機器によって抽出可能な情報を保持することができる物理的な有形記憶媒体にすることができる。本発明の動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、Cなどのオブジェクト指向プログラミング言語あるいはCプログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。このプログラムコードは、完全にユーザのコンピュータ上で、一部分はユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、一部分はユーザのコンピュータ上でしかも一部分はリモートコンピュータ上で、あるいは完全にリモートコンピュータまたはサーバ上で実行することができる。後者のシナリオでは、ローカルエリアネットワークLANまたは広域ネットワークWANを含む任意のタイプのネットワークを介してリモートコンピュータがユーザのコンピュータに接続される場合もあれば、たとえば、インターネットサービスプロバイダを使用してインターネットを介して外部コンピュータに接続が行われる場合もある。本発明は、本発明の諸実施形態による方法、装置システム、およびコンピュータプログラムの流れ図あるいはブロック図またはその両方に関連して以下に記載されている。流れ図あるいはブロック図またはその両方の各ブロックおよび流れ図あるいはブロック図またはその両方内の複数ブロックの組み合わせは、コンピュータプログラム命令によって実現可能であることが理解されるであろう。これらのコンピュータプログラム命令は、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブルデータ処理装置のプロセッサに提供し、コンピュータまたはその他のプログラマブルデータ処理装置のプロセッサにより実行された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現するための手段を作成するようなマシンを生産することができる。また、これらのコンピュータプログラム命令は、コンピュータ可読記憶媒体に保管された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現する命令を含む装置articleofmanufactureを生産するような特定の方法で機能するよう、コンピュータまたはその他のプログラマブルデータ処理装置に指示することができるコンピュータ可読記憶媒体に保管することもできる。また、コンピュータプログラム命令は、コンピュータまたはその他のプログラマブルデータ処理装置上にロードし、コンピュータまたはその他のプログラマブル装置上で実行された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現するためのプロセスを提供するようなコンピュータで実行されるプロセスを生産するように、コンピュータまたはその他のプログラマブル装置上で一連の動作ステップを実行させることもできる。図1は、本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定する方法100を示す流れ図である。方法100では、アプリケーションサーバたとえば、JAVA2ENTERPRISEEDITIONアプリケーションサーバ内で実行される識別済み実行可能コードたとえば、JAVAサーブレットに関連する要求ディスパッチは、マシンが決定した方法で自動的に実行することができる。履歴メトリックを使用して、ランタイム中に要求ディスパッチ決定を実行し、非同期または同期の実行モードを識別することができる。実行可能コードは、サーブレット、JAVAserverpages、JAVAbeans、JAVAクラス、ポートレットなどを含むがこれらに限定されないWebアプリケーションの1つまたは複数のコンポーネントにすることができる。たとえば、実行可能コードは、動的Webコンテンツを提供するJavaWebアプリケーションにすることができる。方法100は、システム300などの任意の数の適切なシステムのコンテキスト内で実行することができる。本発明全体を通して、説明の明瞭性および利便性のために、JAVAベースの実現例が提供されている。本発明の範囲はこの点については限定されず、実現技術がリソースの包含をサポートする限り、本明細書に詳述されている発明的配置は様々な技術非JAVA技術を含むのいずれかを使用して実現することができる。たとえば、一実施形態では、本明細書に詳述されているように、履歴メトリックを使用して要求ディスパッチに関する実行モードを決定するときに、NET技術を使用することができる。本明細書で使用する要求ディスパッチは、開発者が指定したリソースの実行を可能にするプログラムのコマンドを含むことができる。一実施形態たとえば、JAVAベースのものでは、要求ディスパッチは、includeおよびforwardなど、JAVAアプリケーションプログラミングインターフェースAPIのメソッドにすることができる。要求ディスパッチは、プロセスID、自動/手動コード注釈、タグ付け、ユニフォームリソースロケータURL識別、固有パス識別、固有照会ストリングなどを含むがこれらに限定されない1つまたは複数の識別メカニズムを使用して明確に識別することができる。各要求ディスパッチは、アプリケーションサーバパフォーマンスに基づいて最適化要求ディスパッチを可能にする1つまたは複数の履歴メトリックおよび実行モード設定に関連付けることができる。ステップ105では、Webコンテナ内の実行可能コードを初期設定する。実行可能コードは、Webコンテナ内で実行されるWebアプリケーションにすることができる。Webコンテナは、JAVA仮想マシンJVMなどのJAVA2ENTERPRISEEDITIONJ2EEアプリケーションサーバ内で実行される1つまたは複数の構成体にすることができる。方法100が実行されるターゲット実現環境および実現選択肢次第で、J2EEアプリケーションサーバの代わりにNETサーバなどのその他のサーバを使用することができる。ステップ110では、初期設定された実行可能コードに関連する要求ディスパッチを識別する。識別済みディスパッチは、実行すべき1つまたは複数のリソースに関連付けることができる。このリソースは、サーブレット、1つまたは複数のJAVASERVERPAGEJSPWebページなどの1つまたは複数の実行可能コードオブジェクトにすることができる。ステップ115では、識別済みディスパッチについてメトリックが存在する場合、この方法はステップ120に進むことができ、さもなければステップ155に移行することができる。識別済みディスパッチに関連するメトリックは1つまたは複数の履歴メトリックにすることができる。メトリックとしては、実行持続期間あるいは実行頻度またはその両方、複雑さ、プロセッサ負荷、メモリ使用率、ネットワーク入出力、従属識別済みディスパッチの数などを含むことができるが、これらに限定されない。たとえば、メトリックは、決定された期間における識別済みディスパッチの平均実行持続期間を含むことができる。さらに、識別済みディスパッチの各実行モードに関するメトリックを追跡し、最適意思決定機能を可能にすることができる。すなわち、Webアプリケーションに関するデフォルト設定を確立するために、非同期実行モードおよび同期実行モードに関するメトリックの評価を実行することができる。ステップ120では、識別済みディスパッチに関する履歴メトリックが前に確立したしきい値を超える場合、この方法はステップ125に進むことができ、さもなければステップ140に移行することができる。たとえば、しきい値は実行持続期間などのタイミング値にすることができる。一実施形態では、どちらのモードで識別済みディスパッチを実行すべきかを判断するために、履歴実行時間およびしきい値を数値的に比較することができる。しきい値が存在しない事例では、最良推測手法を使用して識別済みディスパッチを実行することができる。たとえば、同様のディスパッチを分析することにより、しきい値をプログラムによって導出し、識別済みディスパッチの知的実行を可能にすることができる。ステップ125では、ディスパッチイベントをイベントハンドラに登録する。ステップ130では、非ブロッキングコード実行を含むことができる非同期モードで識別済みディスパッチを実行する。すなわち、Webアプリケーションは、識別済みディスパッチと同時に実行し続けることができる。ステップ135では、識別済みディスパッチに関するメトリックを収集することができる。パフォーマンスモニターエージェントなどの1つまたは複数のメトリック収集コンポーネントを使用して、メトリックを収集することができる。パフォーマンスモニターエージェントとしては、負荷モニター、実行可能コード最適化ツールなどを含むことができるが、これらに限定されない。ステップ140では、識別済みディスパッチを同期モードで実行することができる。ステップ147では、識別済みディスパッチについてメトリックを収集することができる。ステップ147では、識別済みディスパッチについてメトリックデータを収集することができる。一実施形態では、メトリックデータは、識別済みディスパッチのブロッキング持続期間を含むことができる。ステップ150では、識別済みディスパッチ実行が完了した場合、この方法はステップ157に進むことができ、さもなければこの方法はステップ140に戻ることができる。ステップ155では、デフォルト設定を使用して識別済みディスパッチを実行し、このディスパッチに関連するメトリックを収集することができる。ステップ157では、履歴メトリックに基づいて、任意選択でしきい値を変更することができる。たとえば、変更としては、時間の経過につれてしきい値を増加/減少することを含むことができる。すなわち、履歴メトリックを収集するにつれて、ランタイムパフォーマンスは継続的に改善することができる。ステップ160では、実行可能コードに関連するより多くのディスパッチが処理に使用可能である場合、この方法はステップ110に戻ることができ、さもなければステップ165に進むことができる。ステップ165では、実行可能コードの実行を終了することができる。方法100の開示された諸ステップはいずれの点でも本発明を限定するものと解釈してはならないことを認識されたい。方法100は連続的にリアルタイムで実行することができ、アプリケーションサーバリソースの可用性が変動するにつれて各実行可能コードを動的に最適化することができる。しかし、パフォーマンスを低減する可能性のあるディスパッチの過剰最適化を回避するために、方法100によって各要求を任意選択で静的に決定することができる。一実施形態では、方法100は、コンピューティングリソースを最小限にすることができる間隔で実行することができる。図2は、本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定するための実行可能コードセグメント210および通信モデル230を示すブロック図である。ある事例では、実行可能コードセグメント210はJAVAソースコードファイルにすることができる。ここではその他の非JAVA技術に基づくその他のタイプのセグメント210を使用することができ、どの特定の実装言語とも無関係なものとして解釈すべき概念を表すために,本明細書ではJAVAベースの例が使用されている。実行可能コードセグメント210では、要求ディスパッチアプリケーションプログラミングインターフェースAPI212により、使用可能リソース、パフォーマンス履歴などを含むがこれらに限定されない1つまたは複数の条件に基づいて、最適化した方法で要求ディスパッチを自動的に実行することができる。一実施形態では、API212は、既存の要求ディスパッチャをカプセル化するラッパクラスにすることができる。他の実施形態では、API212は、伝統的な要求ディスパッチャへのドロップイン置換にすることができる。すなわち、既存の実行可能コードは、API212のパフォーマンス上の恩恵を獲得している間、未変更のままになる可能性がある。一実施形態では、要求ディスパッチャ244は、要求ディスパッチの透明な動的モード実行を可能にするトランスポートチャネルチェーン240のコンポーネントにすることができる。API212を使用すると、アプリケーション開発者は、使用可能コンピューティングリソースに基づいて要求ディスパッチ214をランタイムにおいて最適実行モードで処理することができる。一実施形態では、API212は、IBMWEBSPHEREというWebコンテナプラットフォームのコンポーネントにすることができる。たとえば、アプリケーション開発者は、1つまたは複数のインポートディレクティブたとえば、importcomibmWebsphereWebcontainerRequestDispatchを介して要求ディスパッチ機能にアクセスすることができる。要求ディスパッチ214は、実行のカスタマイズを可能にするために1つまたは複数のパラメータを含むことができる。一実施形態では、引数たとえば、auto、500msにより、アプリケーション開発者は要求ディスパッチ挙動の一部分を制御することができる。さらに、API212は、要求ディスパッチをネイティブに管理しモニターするための機能を可能にし、開発者が実行コードおよびランタイム環境の制御を維持できるようにすることができる。一実施形態では、要求ディスパッチャ244は、オープンシステム間相互接続モデル230のトランスポート層232内に常駐することができる。ディスパッチャ244は、適切なWebコンテナ242に対するHTTP246の要求を透過的に受信しディスパッチすることができる。このため、ディスパッチャ244は、配備されたアプリケーションおよびアプリケーション制限とは無関係に機能することができる。本明細書に提示されている図面は、例示のためのものであり、いずれの点でも本発明を限定するものと解釈してはならない。一実施形態では、要求ディスパッチ構文が伝統的な構文と同一になり得るように、API212はアプリケーション開発者にとって透過的なものにすることができる。さらに、API212は、Webアプリケーションに対して自動的に機能を提供する基本パッケージのコンポーネントにすることができる。すなわち、アプリケーション開発者は、API212の機能を手動でインポートする必要はない。図3は、本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチ実行モードをプログラムによって決定するためのシステム300を示すブロック図である。システム300では、要求ディスパッチャ340により、サーブレット324に関連するディスパッチ326を自動決定モードで実行することができる。このプログラム決定モードは、同期実行モードおよび非同期実行モードにすることができる。一実施形態では、自動決定実行モードは伝統的な方法で実行することができる。すなわち、ディスパッチャ340の機能を可能にするために、ディスパッチ挙動あるいはオーバヘッドまたはその両方の変更はまったく不要である。一実施形態では、エンジン342は、要求ディスパッチ326のその後の実行のための実行モードを自動的に決定することができる。このため、ディスパッチ326の各インスタンスは、サーバ320のリソース可用性に応答して、同期または非同期モードで実行することができる。本明細書で使用する各サーブレット324は、要求ディスパッチ326を介して1つまたは複数の実行可能リソースに関連付けることができる。サーブレット324は、JAVA2ENTERPRISEEDITIONJ2EEアプリケーションサーバ320または、企図された他の諸実施形態ではその他のタイプのサーバのWebコンテナ323内で実行することができる。Webコンテナ323は、JAVA仮想マシンランタイム環境などの動的ランタイム環境にすることができる。たとえば、サーブレット324は、ブラウザインターフェース312内で要求側クライアント310に対してWebベースのコンテンツたとえば、Webページを提示可能なWebアプリケーションにすることができる。各要求ディスパッチ326は、プロセスIDもしくは固有キーあるいはリソースIDたとえば、ユニフォームリソースロケータまたはその両方などの固有識別値に関連付けることができる。一実施形態では、固有キーは自動生成値たとえば、ディスパッチエンジン342によるまたは手動決定値にすることができる。ある事例では、固有識別値は注釈またはソースコードコメントとして保管することができ、これはコンパイル時に抽出することができる。サーブレット324は、要求ディスパッチ326の実行をトリガすることができる要求380を受信することができる。要求ディスパッチ326がランタイム環境323によって検出されると、ディスパッチ326を分析して、ユーザ指定のリソースIDに基づいてどのリソースを実行すべきかを判断することができる。一実施形態では、ディスパッチャ340は、指定のリソースの実行について、異なるWebコンテナ内で実行されるサーブレットなどの他のランタイム環境と交渉することができる。要求ディスパッチャ340は、1つまたは複数のルール346あるいは設定またはその両方に基づいて、ディスパッチ326を明確に識別し実行することができる。すなわち、ディスパッチャ340は、サーバ320のリソース可用性たとえば、サーバ負荷に適合するように構成することができる。要求ディスパッチャ340は、ディスパッチエンジン342と、メトリックエンジン343と、パフォーマンスモニター344と、ルール346と、インターフェース352とを含むことができる。一実施形態では、ディスパッチャ340は、Webコンテナ323に対するプラグ可能拡張部分にすることができる。設定348は、ユーザ確立設定または自動決定設定にすることができる。たとえば、ディスパッチに関するデフォルトタイムアウト値は、サーブレット324のパフォーマンスに基づいて動的に決定することができる。ディスパッチエンジン342は、ディスパッチ326を処理し、履歴メトリック350を使用して適切な実行モードをプログラムによって決定することができる。エンジン342は、ディスパッチ326に関連するローカルおよびリモートリソースの識別あるいは実行またはその両方を担当することができる。リソース処理がリモートで実行される事例では、エンジン342は、その処理を実行できるリモートプロセッサに要求を転送することができる。リソース処理がローカルで実行される事例では、エンジン342は要求ディスパッチ326を管理することができる。メトリックエンジン343は、サーブレット324あるいはディスパッチ326またはその両方に関連する履歴メトリックを収集することができる。たとえば、高レベルメトリックを入手することができるサーブレット324レベルでメトリックを収集することができる。ある事例では、メトリックエンジン343は、リアルタイムでまたはほぼリアルタイムでメトリックを収集することができる。たとえば、エンジン343は、最後のY秒にわたり最後のX個のディスパッチ326を追跡するように構成することができ、XおよびYはユーザが構成可能である。さらに、メトリックエンジン343は、インターフェース352を介して提示可能なWebコンテナ323のリアルタイムパフォーマンスをモニターするために使用することができる。履歴メトリック350は、待ち時間、実行モード、およびメモリ使用率などのリソース情報を含むことができる。履歴メトリック350は、各ディスパッチ326の実行に関連付けることができる。一実施形態では、各モードたとえば、非同期および同期に関するメトリックを計算して、各モードに関する集約メトリックの評価を可能にすることができる。このように、エンジン343は、実行の前にディスパッチ326に関する適切な実行モードを計算することができる。他の実施形態では、ディスパッチ326に関連するメトリック350は、まとめて集約し、ルールセット360内のしきい値たとえば、ルール360に対して評価することができる。たとえば、非同期実行に関連するメモリコストをメモリ割り当て値たとえば、しきい値と比較して、非同期実行のオーバヘッドが最適選択肢であるかどうかを判断することができる。他の事例では、非同期コンテキストをセットアップ/破壊するための時間のオーバヘッドを前に確立したしきい値と比較して、どちらのモード非同期または同期を使用すべきかを判断することができる。ルールセット346は、ディスパッチ326の実行モードを決定するための1つまたは複数の任意に複雑なルールで構成することができる。ルールセット346は、ユーザが確立することができるか、あるいはヒューリスティックに決定することができるか、またはその両方を行うことができる。一実施形態では、複数のメトリックをまとめて評価して、実行モードを決定することができる。ルールセット346は、しきい値、実行モード、要求ディスパッチに関連するイベントハンドラなどを含むことができるが、これらに限定されない。たとえば、しきい値はユーザ確立設定または自動決定値にすることができる。ルールセット346は、応答382を準備するために使用することができる、使用すべき集約のタイプたとえば、サーバ側対クライアント側をさらに指定することができる。ディスパッチ326の実行が完了すると、応答382を生成し、ネットワーク370を介してクライアント310に伝達することができる。本明細書に提示されている図面は、例示のためのものであり、いずれの点でも本発明を限定するものと解釈してはならない。システム300は、分散コンピューティング環境、ネットワークコンピューティング環境、サービス指向アーキテクチャSOAなどの1つまたは複数のコンポーネントにすることができる。一実施形態では、システム300は、IBMWEBSPHEREアプリケーションサーバの1つまたは複数のコンポーネントにすることができる。他の実施形態では、システム300は、NETフレームワークまたは本明細書に記載されている目的のためにリソースを含むことができる任意の他のフレームワークの1つまたは複数のコンポーネントを含むことができる。図4は、本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定するための1組のインターフェース410、440を示すブロック図である。インターフェース410、440は、システム300のコンテキストで提示することができる。インターフェース410では、Webコンテナ内で実行される1つまたは複数のWebアプリケーションに関連する要求ディスパッチはセクション412に提示することができる。Webアプリケーションは、JAVAサーブレット、JAVASERVERPAGESJSPなどの1つまたは複数の実行可能コードエンティティにすることができる。インターフェース440では、要求ディスパッチ414に関連するメトリックを提示することができる。一実施形態では、要求ディスパッチおよびメトリック442の提示はリアルタイムで行うことができ、実行スナップショットを容易に入手できるようになる。インターフェース410は、1つまたは複数の実行中の要求ディスパッチおよび従属要求ディスパッチの管理を可能にすることができる。インターフェース410は、セクション412、420と、対話式インターフェースエレメント422、430、432とを含むことができる。インターフェース410では、要求ディスパッチ414に関連する情報をセクション412内に提示することができる。要求ディスパッチ情報は、プロセスID、実行持続期間、実行モードなどを含むことができるが、これらに限定されない。たとえば、セクション412は、サーブレットAに関連する各要求ディスパッチと従属ディスパッチを提示することができる。一実施形態では、管理者は要求ディスパッチのグループを選択的に管理することができる。インターフェース410は、アクティブルール、パフォーマンスメトリックなどの追加情報を提示することができる。選択された要求ディスパッチ414に関連する情報はセクション420に提示することができる。たとえば、インターフェースエレメント430と対話することにより、ディスパッチ要求に関連する情報を提示することができる。ある事例では、セクション420は、タイムアウト値、実行モードなどの要求ディスパッチ値の変更を可能にすることができる。すなわち、自動最適化が不成功であると判明したときに、要求ディスパッチのリアルタイム手動最適化を達成することができる。一実施形態では、インターフェース410はスレッド管理機能を可能にすることができる。たとえば、インターフェースエレメント432により、選択された要求ディスパッチを終了することができる。インターフェースエレメント422との対話により、検査インターフェース440を提示することができる。インターフェース440は、選択された要求ディスパッチ414に関連するメトリックを提示することができるセクション442を含むことができる。セクション442は、プロセッサ使用率、実行持続期間、およびメモリ使用率などの履歴メトリックを含むことができる。たとえば、セクション442は、収集した履歴メトリックを使用して、要求ディスパッチの平均リソース負荷を提示することができる。一実施形態では、履歴メトリックは複数レベルの細分性で提示することができる。たとえば、履歴メトリックは、日、週、月などの単位で提示することができる。本明細書に提示されている図面は、例示のためのものであり、いずれの点でも本発明を限定するものと解釈してはならない。一実施形態では、インターフェース410、440は、JAVA2ENTERPRISEEDITION最適化ツールの1つまたは複数の画面にすることができる。他の実施形態では、インターフェース410、440は統合開発環境IDEのコンポーネントにすることができる。インターフェース410、440は、グラフィカルユーザインターフェースGUI、音声ユーザインターフェースVUI、マルチモードインターフェイスなどにすることができる。インターフェース410、440に関連するインターフェースエレメントは、対話式ボタン、ドロップダウンメニュー、無線選択エレメントなどを含むことができるが、これらに限定されない。本明細書で使用する用語は、特定の諸実施形態を記述するためのものであり、本発明を限定するためのものではない。本明細書で使用する単数形a、an、およびtheは、文脈が明確に他の指示を示さない限り、複数形も含むものである。comprisesあるいはcomprisingという用語またはその両方は、本明細書で使用する場合、明記された特徴、整数、ステップ、操作、要素、あるいはコンポーネント、またはこれらの組み合わせの存在を指定するものであるが、1つまたは複数のその他の特徴、整数、ステップ、操作、要素、コンポーネント、あるいはそのグループ、またはこれらの組み合わせの存在または追加を排除するものではないことがさらに理解されるであろう。以下の特許請求の範囲に記載されたすべての手段またはステップならびに機能要素に対応する構造体、材料、行為、および同等のものは、具体的に請求されたその他の請求要素と組み合わせてその機能を実行するための任意の構造体、材料、または行為を含むためのものである。本発明の説明は、例示および解説のために提示されたものであり、網羅するためまたは開示された形式に本発明を限定するためのものではない。多くの変更および変形は、本発明の範囲を逸脱せずに当業者にとって明白になるであろう。この実施形態は、本発明の原理および実用的な適用例を最も良く説明するため、ならびにその他の当業者が企図された特定の用途に適した様々な変更を含む様々な実施形態について本発明を理解できるようにするために、選択され記載されたものである。図1~図4内の流れ図およびブロック図は、本発明の様々な諸実施形態によるシステム、方法、およびコンピュータプログラムについて可能な実現例のアーキテクチャ、機能、および動作を例示している。この点に関しては、流れ図またはブロック図内の各ブロックは、指定の論理機能複数も可を実現するための1つまたは複数の実行可能命令を含む、コードのモジュール、セグメント、または一部分を表すことができる。また、いくつかの代替実現例では、ブロック内に示された機能は図面内に示された順序から外れて行われる可能性があることにも留意されたい。たとえば、連続して示されている2つのブロックは、関係する機能に応じて、実際にはほぼ同時に実行される場合もあれば、ときには逆の順序で実行される場合もある。また、ブロック図あるいは流れ図またはその両方の各ブロックおよびブロック図あるいは流れ図またはその両方内の複数ブロックの組み合わせは、指定の機能または行為を実行する特殊目的ハードウェアベースのシステムあるいは特殊目的ハードウェアとコンピュータ命令との組み合わせによって実現可能であることも留意されるであろう。"