"アプリケーションにフェイルセーフ機能を提供するための方法であってコンピュータに実装される方法であり、一時的な動的計測をアプリケーションに追加するためにアプリケーションサーバ120,122,124,126,140,142,144,146にてリクエストを受信すること;このリクエストは、コンピューティングデバイスとアプリケーションサーバとの間にあるそれぞれの接続720を介してコンピューティングデバイスマネージャ108,114から受信されるものである;リクエストに応答して、アプリケーションの実行中に一時的な動的計測をアプリケーションに付加するとともに、それぞれの接続が予定外に切断されるかどうかを判定するコールバック716を、それぞれの接続を介してコンピューティングデバイスに実装すること;それぞれの接続が予定外に切断されると判定したコールバックに応答して、一時的な動的計測を含まない状態にアプリケーションを復元すること;を有する方法。コンピュータに実装される請求項1の方法であり、リクエストは、一時的な動的計測をアプリケーションの少なくとも一つのクラスに付加する少なくとも一つの指令を含み、一時的な動的計測は、アプリケーションの少なくとも一つのクラスを再定義することによってアプリケーションに付加される。コンピュータに実装される請求項2の法であり、コールバックは、人の介入なく自動的にアプリケーションが一時的な動的計測を含まない状態に復元されるように、それぞれの接続が予定外に切断されることを自動的に判定する。コンピュータに実装される請求項3の方法であり、一時的な動的計測が付加される前に、関連する計測が付加されていたアプリケーションのクラスを特定する指令1205の記録を保持すること;前記復元することは、アプリケーションの未計測のバイトコードをロードすること、及び、未計測のバイトコード内の前記指令によって特定されたクラスに前記関連する計測を付加することを含む。コンピュータに実装される請求項4の方法であり、それぞれの接続は、アプリケーションサーバにおいてソケットを介して行われ;コールバックは、それぞれの接続が予定外に切断されることを示すイベントをソケットが生成することを判定することによってそれぞれの接続が予定外に切断されることを判定する。コンピュータに実装される請求項4または5の方法であり、アプリケーションの未計測のバイトコードは、JARファイルからアクセスされる。コンピュータに実装される請求項1から6のいずれか一項の方法であり、アプリケーションが復元される状態は、静的計測を含むが動的計測は含まない。コンピュータに実装される請求項1から7のいずれか一項の方法であり、一時的な動的計測がアプリケーションに追加された後、それによって、先に付加された一時的な動的計測になること、アプリケーションに追加の一時的な動的計測を付加するために追加リクエストを受信すること;この追加リクエストは、コンピューティングデバイスとアプリケーションサーバとの間の他の接続を介してコンピューティングデバイスからアプリケーションサーバで受信される;追加リクエストに応答して、アプリケーションの実行中にアプリケーションに追加の一時的な動的計測を付加すること、及び、他の接続が予定外に切断されるかどうかを判定する他のコールバックを、コンピューティングデバイスに対して実装すること;および他の接続が予定外に切断されたことおよびそれぞれの接続が予定外に切断されないことを判定することに応答して、追加の一時的な動的計測は含まないが先に付加された一時的な動的計測を含む状態にアプリケーションを復元すること、をさらに含む。コンピュータに実装される請求項1から8のいずれか一項の方法であり、コンピューティングデバイスにおいてタイマー710が満了する際に、一時的な動的計測が付加される前にあった状態にアプリケーションを復元するリクエストをコンピューティングデバイスから受信すること;およびアプリケーションを復元するリクエストに応答して、一時的な動的計測が付加される前にあった状態にアプリケーションを復元すること;一時的な動的計測が付加される前にあった状態は、一時的な動的計測以外の計測を含む;をさらに備える。コンピュータに実装される請求項1から9のいずれか一項の方法であり、コンピューティングデバイスにおいてタイマー710が満了すると、コンピューティングデバイスに対するコールバックを終了するリクエストをコンピューティングデバイスから受信すること;コンピューティングデバイスに対するコールバックを終了するリクエストに応答して、コンピューティングデバイスに対するコールバックを終了すること;一時的な動的計測が付加される前にあった状態にアプリケーションを復元すること;この一時的な動的計測が付加される前にあった状態は、一時的な動的計測以外の計測を含む;をさらに有する。アプリケーションにフェイルセーフ機能を提供するための方法を実行するように少なくとも一つのプロセッサをプログラムするためのコンピュータ読み取り可能ソフトウェアを有しているコンピュータで読み取り可能な有体の記憶装置であり、この方法は:第1のコンピューティングデバイスマネージャ108,114において、第2のコンピューティングデバイスMOM104からリクエストを受信すること;このリクエストは、アプリケーションサーバ120,122,124,126,140,142,144,146を特定するとともに、アプリケーションサーバにおいて関連する一時的な動的計測をアプリケーションに付加するための少なくとも一つの指令を含む;およびリクエストに応答して、タイマー710を実装するとともに、第1の接続720を介して第1のコンピューティングデバイスからアプリケーションサーバに、関連する一時的な動的計測をアプリケーションに付加するための少なくとも一つの指令と、第1の接続が予定外に切断されるかどうかを判定するコールバック716を第1コンピューティングデバイスに実装するリクエストを提供すること;タイマーの満了に際して、第1の接続が予定外に切断されない場合に、関連した一時的な動的計測が付加される前にあった状態にアプリケーションを復元するためのリクエストを第1の接続を介してアプリケーションサーバに提供すること、を備える。請求項11の記憶装置であってコンピュータで読み取り可能な有体の記憶装置はさらに、タイマーの満了に際して、第1の接続が予定外に切断されない場合、第1の接続を介しての第1のコンピューティングデバイスに対するコールバックを終了するリクエストを、第1の接続を介してアプリケーションサーバに提供すること、をさらに備える。請求項11または12の記憶装置であってコンピュータで読み取り可能な有体の記憶装置は、さらに:第2のコンピューティングデバイスからのリクエストに応答して、第1と第2のコンピューティングデバイスとの間にある第2の接続805を介して第2のコンピューティングデバイスにコールバック812,814を実装すること;およびタイマーの満了に際して、第2のコンピューティングに対するコールバックを終了すること、を備える。請求項11から13のいずれか一項の記憶装置であってコンピュータで読み取り可能な有体の記憶装置であり、第2のコンピューティングデバイスからのリクエストに応答して、第1と第2のコンピューティングデバイスとの間にある第2の接続805を介して第2のコンピューティングデバイスにコールバック812,814を実装すること;第1のコンピューティングデバイスにおいて、第1の接続が予定外に切断されたかどうかを判定するのに第1の接続を聞き、第1の接続が予定外に切断されるとの判定に対応して、第2のコンピューティングデバイスに対するコールバックを終了する。請求項11から14のいずれか一項の記憶装置であって、コンピュータで読み取り可能な有体の記憶装置であり、アプリケーションが復元される状態は、静的計測は含むが動的計測は含まない。第1のコンピューティングデバイスであり、ソフトウェアの命令を格納する記憶装置;ソフトウェアの命令が記憶装置からロードされる作業メモリ;ネットワークインタフェース;およびソフトウェアの命令を実行するためのプロセッサであり、このソフトウェアの命令は実行されると:第1のコンピューティングデバイスマネージャ108,114において、第2のコンピューティングデバイスMOM104からリクエストを受信すること;このリクエストは、アプリケーションサーバ120,122,124,126,140,142,144,146を特定し、アプリケーションサーバにおいて関連する一時的な動的計測をアプリケーションに付加するための少なくとも一つの指令を含む;およびリクエストに応答して、タイマー710を実装するとともに、第1の接続720を介して第1のコンピューティングデバイスからアプリケーションサーバに、関連する一時的な動的計測をアプリケーションに付加するための少なくとも一つの指令と、第1の接続が予定外に切断されるかどうかを判定するコールバック716を第1のコンピューティングデバイスに実装するためのリクエストと、を提供すること;およびタイマーの満了に際して、第1の接続が予定外に切断されない場合に、関連する一時的な動的計測が付加される前にあった状態にアプリケーションを復元するためのリクエストを第1の接続を介してアプリケーションサーバに提供すること;を備える。請求項16の第1のコンピューティングデバイスであり、前記ソフトウェアの命令が実行される場合:タイマーの満了に際して、第1の接続が予定外に切断されない場合、第1の接続を介して第1のコンピューティングデバイスに対するコールバックを終了するためのリクエストを第1の接続を介してアプリケーションサーバに提供する。請求項16または17の第1のコンピューティングデバイスであり、前記ソフトウェアの命令が実行される場合:第2のコンピューティングデバイスからのリクエストに応答して、第1と第2のコンピューティングデバイスとの間にある第2の接続805を介して第2のコンピューティングデバイスにコールバック812,814を実装し;タイマーの満了に際して、第2のコンピューティングに対するコールバックを終了する。請求項16から18のいずれか一項の第1のコンピューティングデバイスであり、このソフトウェアの命令が実行される場合:第2のコンピューティングデバイスからのリクエストに応答して、第1と第2のコンピューティングデバイスとの間にある第2の接続805を介して第2のコンピューティングデバイスにコールバック812,814を実装し;第1のコンピューティングデバイスにおいて、第1の接続が予定外に切断されるかどうかを判定するために第1の接続を聞き、第1の接続が予定外に切断されたとの判定に応答して、第2のコンピューティングデバイスに対するコールバックを終了する。請求項16から19のいずれか一項の第1のコンピューティングデバイスであり、アプリケーションが復元される状態は、静的計測を含むが動的計測は含まない。本発明は、アプリケーションの実行中に一時的な計測をインストールおよび削除するためのフェイルセーフメカニズムを提供する。一実施形態では、コンピュータに実装される方法であってアプリケーションにフェイルセーフ機能を提供する方法が提供される。この方法は、一時的な動的計測をアプリケーションに付加するリクエストをアプリケーションサーバで受信することを含む。そのリクエストは、コンピューティングデバイスとアプリケーションサーバとの間にあるそれぞれの接続を介してコンピューティングデバイスから受信される。この方法は、さらに、リクエストに応答して、アプリケーションの実行中に一時的な動的計測をアプリケーションに付加すること、および、それぞれの接続を介してコンピューティングデバイスに対してコールバックを実装することを含む。そのコールバックは、それぞれの接続が予定外に切断されたかどうかを判定する。この方法は、さらに、それぞれの接続が予定外に切断されたことを判定したコールバックに応答して、一時的な動的計測を含まない状態にアプリケーションを復元すること、をさらに含む。他の実施形態では、コンピュータに実装される方法であってアプリケーションにフェイルセーフ機能を提供する方法は、コレクタのような第1のコンピューティングデバイスにおいて、第2のコンピューティングデバイスからリクエストを受信することを含む。そのリクエストは、アプリケーションサーバを特定し、アプリケーションサーバにおいて関係する一時的な動的計測をアプリケーションに付加するための指令を含む。この方法は、さらに、リクエストに応答して、タイマーを実装すること、および、第1の接続を介して第1のコンピューティングデバイスからアプリケーションサーバに、関連付けられた一時的な動的計測をアプリケーションに付加する指令と、第1のコンピューティングデバイスに対してコールバックを実装するためのリクエストを提供することをさらに含む。そのコールバックは、第1の接続が予定外に切断されるかどうかを判定する。この方法は、さらに、タイマーの満了に際して、第1の接続が予定外に切断されない場合に、関連付けられた一時的な動的計測が付加される前にあった状態にアプリケーションを復元するリクエストを第1の接続を介してアプリケーションサーバに提供することを含む。別の実施形態では、アプリケーションサーバにおいて、アプリケーションにフェイルセーフ機能を提供するための方法を実行するために少なくとも一つのプロセッサでプログラムするために具現化されてコンピュータで読み取り可能なソフトウェアを有しているコンピュータで読み取り可能な有体の記憶装置が提供される。この方法は、コンピューティングデバイスとの接続を確立すること、及び、アプリケーションに一時的な動的計測を付加し、コールバックオブジェクトを呼び出すリクエストを、接続を介してコンピューティングデバイスから受信すること、を含む。この方法は、さらに、リクエストに応答して、アプリケーションの実行中にアプリケーションに一時的な動的計測を付加することおよびコールバックオブジェクトを呼び出すことを含む。そのコールバックオブジェクトは、接続を監視することによってコンピューティングデバイスにコールバックを実装する。この方法は、さらに、接続が終了したとコールバックオブジェクトが判定した場合、一時的な動的計測を含まないような状態にアプリケーションを復元することを含む。メソッドに対応して、実行する本明細書で提供される方法が実現される命令をエンコードした記憶媒体を含むシステムおよびコンピュータ若しくはプロセッサで読み取り可能な記憶装置が提供される。本発明は、アプリケーションの実行中に一時的な計測をインストールおよび削除するためのフェイルセーフメカニズムを提供する。最初に、アプリケーションのようなソフトウェアは、メソッドのような計測されたコンポーネントのベースラインの規定セットによって設定される。通常、オーバーヘッドコストを最小限に抑えるために選択的に慎重にアプリケーションに計測が適用される。開発者は、最適な計測パッケージを開発するのにこれまでの経験に依存する。時間とともに、経験が得られ、様々な問題またはアプリケーションの改善のための領域が特定され得る。例えば、パフォーマンス問題を診断するために、様々な状況で付加的な計測をアプリケーションに展開することが可能である。しかし、例えば、アプリケーションを実行するアプリケーションサーバのように、コンピューティングデバイスから離れている遠隔のユーザインタフェースから、手動で計測をロールバックすることを不可能にする、アプリケーションに対する通信リンクの中断、コンピューティングデバイスの故障、ソフトウェアの故障または他の種類の故障が存在する場合でさえも、一時的に適用されることが企図された付加的な計測が人の介入なしに自動的に削除されることを確実にするフェイルセーフメカニズムが必要となる。そのようなフェイルセーフメカニズムなしでは、一時的な計測は、アプリケーションのパフォーマンスを予定外にひどく損なう可能性がある。例えば、一時的な計測は、全てのクラスを計測するようなコマンドを意図せず含む可能性があり、そのようなコマンドは計算上の過剰な負担をもたらす。実施例では、フェイルセーフメカニズムは、コンピューティングデバイス上のアプリケーションのエージェント、一つまたはそれ以上のマネージャのコンピューティングデバイスおよび/またはユーザインタフェース/ワークステーションの間でコールバックを使用して提供される。コールバックは、コンピューティングデバイスの間に確立されている接続を監視する。例えば通信リンクの故障または他の問題により、接続が予定外に失われるのであれば、コールバックは終了される。同様に、接続の計画的な終了も、コールバックが終了されることに繋がる。また、一つのコールバックの終了は、一つまたはそれ以上の他のコールバックに繋がることがあり、最終的にエージェントに問題を通知されることになる。エージェントに対するコールバックが終了するとき、追加の計測が付加される前にあった状態にアプリケーションを戻すロールバックプロシージャが実装される。図1は、異なったコンピュータシステムがマネージャにデータを提供するネットワークを示す。似た番号の付いた要素が図の中で互いに対応している。コンピュータシステムは、何通りかにアレンジされ得る。あるアプローチでは、1セットのアプリケーションサーバが、アプリケーションと、共通のマネージャのコンピューティングデバイスに報告を返すエージェントソフトウェアとを実行する。別のアプローチでは、各々がそれぞれのマネージャのコンピューティングデバイスに報告を返し、このそれぞれのマネージャのコンピューティングデバイスがマネージャのマネージャMOMと呼ばれるより高いレベルのマネージャのコンピューティングデバイスに報告を返す複数セットのアプリケーションサーバがある。マネージャの階層における追加のレベルも同様に提供され得る。各マネージャまたはMOMコンピューティングデバイスは、例えば、情報を提供したり命令を受けたりするため、関連付けられたユーザインタフェース/ワークステーションと通信することができる。例示のシステム100は、アプリケーションサーバ122、124および126を含んでいるアプリケーションサーバのセット120およびそれぞれのエージェントを含む。アプリケーションサーバ122のエージェント123が示されている。各アプリケーションサーバは、一つまたはそれ以上のエージェントを持つことが可能である。一つのアプローチでは、別のエージェントがアプリケーションのインスタンスごとに提供される。アプリケーションサーバは、望ましい機能を実現するためのコードを実行するのに適したプロセッサを有するあるタイプのコンピュータシステムの例である。アプリケーションサーバは、異なったアプリケーションを実行でき、または同じアプリケーションの別々のインスタンスを実行することができる。アプリケーションサーバは、互いに離れて位置することができ、または同じ場所に位置することもできる。アプリケーションサーバのセット120は、この例では、ローカルのマネージャコンピュータ108と通信している。マネージャコンピュータ108は、代わりにアプリケーションサーバのセット120から離れることが可能で、そのような場合にはこれらの間の通信はネットワーククラウド130を介して行われ得る。実施例は、さらに、アプリケーションサーバ142、144および146を含んでいるアプリケーションサーバのセット140およびそれぞれのエージェントを含む。アプリケーションサーバ142のエージェント143が示される。アプリケーションサーバのセット140は、この例では、ローカルのマネージャコンピュータ114と通信している。例えば、Webベースの電子商取引アプリケーションなどの企業のアプリケーションを実行している会社は、負荷分散のために一つの場所で複数のアプリケーションサーバを使用するであろうが、その一方でフェイルセーフ対策として、いろいろな場所でアプリケーションサーバを用いている。ユーザ、例えば、個々のWebブラウザ152、154および156を含んでいるWebブラウザのセット150からのリクエストは、インターネットのようなネットワーククラウド130を介して受信され、セット120または140における任意のアプリケーションサーバに送られ得る。Webブラウザ150のセットは、通常、図示していないインターネットサービスプロバイダーを介してネットワーククラウド130にアクセスする。アプリケーションサーバ上で実行するエージェントソフトウェアは、ある可能なアプローチで、それぞれのアプリケーションサーバ上で実行中に、アプリケーション、ミドルウェアまたはその他のソフトウェアからの情報を集める。例えば、そのような情報は、計測を用いることによって得ることができ、その一例は、バイトコードの計測である。しかしながら、集められたデータは他の方法で得ることができる。エージェントは、監視するコンピュータシステムに元来存在してデータの取得ポイントを提供する。エージェントは、マネージャ108および114と通信してデータをまとめ最適化する。監視を実行するソフトウェアを計測するのに、様々なアプローチが知られている。例えば、最初に述べたように、トレーシングはソフトウェアの実行を追跡するために用いることができる。トレーシングの例が、TransactionTracerと題する米国特許出願公開番号2004/00786912004年4月22日公開に記載されている。その内容は参照により本明細書に組み込まれる。ここで述べられているアプローチにおいては、監視すべきアプリケーションのオブジェクトコードまたはバイトコードが計測され、例えばプローブにより変更される。アプリケーションのジョブまたは他のロジックを変更することなくアプリケーションについての特定の情報をプローブが測定する。一旦、プローブがアプリケーションのバイトコードにインストールされると、管理されたアプリケーションと呼ばれる。エージェントソフトウェアは、プローブからのパフォーマンスデータのような情報を受信し、その情報を、例えばマネージャ108または114において、別の処理で通信することがある。また、情報が異常状況を示すか否かを判定するなど、情報をローカルで処理する。例えば、プローブからの情報は、トランザクションまたは他の実行フローの開始や停止の回数、またはトランザクション/実行フロー内の個々のコンポーネントの開始や停止の回数などのパフォーマンスデータを示す場合がある。この情報は、それが範囲内にあるかどうかを判定するために予め決められた基準と比較される。もし情報が範囲内にない場合には、エージェントは適切なトラブルシューティングが実行できるようにこの事実をマネージャに報告することができる。エージェントは、それぞれが関連付けられているローカルアプリケーションサーバ上でソフトウェアが実行中であることを通常認識している。マネージャ108および114は、エージェントから受信したデータに基づいて情報を表示するため、それぞれ、ユーザインタフェース106または116と通信する分離したコンピューティングデバイス上に提供され得る。ユーザインタフェースは、別のコンピューティングデバイスを表す場合がある。図10および11のユーザインタフェース表示の例を参照されたい。マネージャ108および114は、またエージェントから受信したデータを格納するため、データベース110および112に、それぞれアクセスすることができる。提示された例では、アプリケーションサーバは、ネットワーククラウド130にアクセスすることなく、それぞれのマネージャと通信することができる。例えば、通信は、ローカルエリアネットワークを介して行われる。他の設計では、マネージャは、ネットワーククラウド130を介して複数のアプリケーションサーバのエージェントからデータを受信することができる。例えば、大きな組織は、セントラルネットワークオペレーションセンタを運用する。そこでは、一つまたはそれ以上のマネージャが、地理的に異なる場所に分散している複数のエージェントからデータを取得する。説明すると、Webベースの電子商取引企業では、顧客の注文を受ける地理的に異なる場所にあるサーバからエージェントのデータを取得することがある。支払いを処理するサーバ、倉庫で在庫を調べたり、受注を受けたりするサーバなどである。図9も参照されたい。マネージャおよびユーザインタフェースディスプレィは、企業の本社の場所で提供され得る。必ずしも、Webベースまたは小売、若しくはその他の販売に関する必要はなく、他のアプリケーションにおいて同様にシステムを管理するためにエージェントとマネージャを利用することができる。例えば、銀行では、小切手の処理やクレジットの口座用にアプリケーションを使用することがある。また、上述した複数コンピュータのシステムアレンジに加えて、一つまたはそれ以上のエージェントによって単一のコンピュータシステムが同様に監視されることがある。MOM104が、例えばコマンドを提供したりデータを受信したりするために、マネージャ108および114と通信する。MOM104は、また、データを提供したりユーザコマンドを受信したりするために、例えば、別のコンピューティングデバイス上のユーザインタフェース102と通信し得る。MOMは、下位レベルのマネージャのためにセントラルマネージャとして機能し、ユーザインタフェース102とマネージャとの間の通信を調整する。図2は、図1のネットワークのコンピュータシステムを示す。コンピュータシステム200は、図1に関連して説明したように、Webブラウザ、アプリケーションサーバ、マネージャ、MOMおよび/またはユーザインタフェースの一つとして使われ得るシステムを簡略化して表したものである。コンピュータシステム200は、ハードディスクまたはポータブルメディアのような記憶装置210、他のコンピュータシステムと通信するためのネットワークインタフェース220、ソフトウェアの命令を実行するためのプロセッサ230、例えば、記憶装置210からロードされた後にソフトウェアの命令を格納するためのRAMのような作業メモリ240およびユーザインタフェースディスプレィ250を含むものである。記憶装置210は、ここで説明した機能を提供するためのメソッドを実行するプロセッサ230をプログラムするために具体化されているプロセッサの読み取り可能なコードを有する、プロセッサにより読み取り可能な記憶装置と考えることができる。ユーザインタフェースディスプレィ250は、一つまたはそれ以上のエージェントから受信したデータに基づいて、人間のオペレータに情報を提供することが可能である。ユーザインタフェースディスプレィ250は、グラフィカルまたは表形式のような既知の任意の表示方式を使用することができる。画面上の表示に加え、プリンタからのハードコピーなどの出力も提供することができる。また、ここで説明した機能は、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアの両方の組み合わせを使用して実装されてもよい。ソフトウェアについては、一つまたはそれ以上のプロセッサをプログラムするために具体化されているプロセッサの読み取り可能なコードを有する、一つまたはそれ以上の有体のプロセッサにより読み取り可能な記憶装置を使用することができる。プロセッサにより読み取り可能な有体の記憶装置は、揮発性および非揮発性メディア、リムーバブルおよび非リムーバブルメディアなどのコンピュータ読み取り可能なメディアを含むことが可能である。例えば、コンピュータにより読み取り可能な有体の媒体には、コンピュータにより読み取り可能な命令、データ構造やプログラムモジュールまたは他のデータといった情報を記憶するために、任意の方法や技術でインプリメントされた揮発性、不揮発性、リムーバブル、非リムーバブルの媒体が含まれ得る。コンピュータにより読み取り可能な有体の媒体の例としては、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD-ROM、デジタルバーサタイルディスクDVD、または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、他の磁気記憶装置、または所望の情報を格納したり、コンピュータによってアクセスしたりすることに用いられる他の媒体などがある。他の実施形態においては、一部またはすべてのソフトウェアは、カスタムIC、ゲートアレイ、FPGA、PLDや特殊用途向けプロセッサなど、専用のハードウェアに置き換えることができる。一実施形態では、一つまたはそれ以上の実施形態を実装するソフトウェア記憶装置に格納されているは、一つまたはそれ以上のプロセッサをプログラムするために用いられる。一つまたはそれ以上のプロセッサは、一つまたはそれ以上の有体のコンピュータにより読み取り可能な媒体/記憶装置、周辺機器および/または通信インタフェースと通信することができる。図3は、アプリケーションに一時的な計測を適用するためのフェイルセーフの方法の例の概要を示す。ステップ300は、アプリケーションに静的計測を適用することを含む。詳細については、図12A、12Bおよび13を参照されたい。ステップ305は、静的計測からアプリケーションのパフォーマンスデータを取得することを含む。アプリケーションが実行されると、計測がそれぞれのマネージャに報告し、アプリケーションのパフォーマンスが監視される。詳細については、例えば図14の領域1406を参照されたい。ステップ310は、アプリケーションに、動的に一時的な計測を適用することを含む。上述したように、追加の計測は、例えばパフォーマンス問題を診断するためにアプリケーションに一時的に適用される。そのような計測は、例えばアプリケーションの実行中に、アプリケーションの休止時間ダウンタイムをなくすように、動的に適用される。詳細については、例えば図4Aおよび4Bを参照されたい。一時的な計測は、例えば、数分または数時間など、決められた期間に適用することができ、それはタイマー処理によって実施される。期間の終了は、もし一時的な計測が依然としてアプリケーション内に存在し手動で削除されていないのならば、一時的な計測が自動的に削除される満了時間であり、そうでなければ既に削除されている。これは、フェイルセーフメカニズムとして、一時的な計測が特定の時間/日よりも前には、延長しないことを保証する。さらに、場合によっては、一時的な計測の異なった項目またはユニットは、同時にまたは異なった時間に、アプリケーションに付加されることができ、別々の満了時間を持ち得ることに留意されたい。例えば、アプリケーションのクラスの一つのセットは、ある時点で付加された一時的な計測を持つことができ、1番目の満了時間を持つ一方で、アプリケーションのクラスの別のセットは、別の時点で付加された一時的な計測を持つことができ、異なった2番目の満了時間を持つ。ステップ315は、静的かつ一時的な計測からアプリケーションのパフォーマンスデータを取得することを含む。一旦、一時的な計測が適用されると、以前に使用可能な静的計測からのパフォーマンスデータに加えて、一時的な計測からのパフォーマンスデータが使用可能となる。この時点で、2つの流れのうちの1つが生じ得る。ステップ320では、期間中に故障は検出されない。これは、例えばアプリケーションとの通信リンクに、遠隔のユーザインタフェースからのアプリケーションの計測を手動でロールバックすることを不可能な状態にするような中断、コンピューティングデバイスの故障、ソフトウェアの故障または他の種類の故障がないことを示し得る。故障は、アプリケーションサーバ、マネージャのコンピュータ、MOMのコンピュータおよびユーザインタフェース/ワークステーションのコンピュータを含む一つまたはそれ以上のコンピューティングデバイスによって検出され得る。詳細については、例えば、図5Aおよび5Bを参照されたい。2つ目の流れでは、ステップ325で故障が検出される。詳細については、例えば、図5Cから5Gを参照されたい。どちらの場合でも、ステップ330は、一時的な計測が付加される前にあった状態にアプリケーションを戻すことを含む。このステップは、一時的な計測をロールバックすること、または削除することを含み得る。この状態は、計測がアプリケーションに適用される状態を表すが、アプリケーションによって維持される如何なる他の設定またはデータを必ずしも表すわけではない。これは、一時的な計測を含まない状態にすることができる。ステップ330は、故障が検出されないときよりも故障が検出されるときの方が早く実行される。一時的な計測の異なった項目が付加されるとき、故障は全ての項目よりも少ない項目に関係し得るし、その場合はロールバックもまた全ての項目よりも少ない項目に関与することに留意されたい。例えば、もし一時的な計測の項目AおよびB例えば、Aが一つまたはそれ以上のクラスの第1セットを表し、Bが一つまたはそれ以上の第2セットを表すが付加され、故障が項目Bのみに関係するのであれば、項目Aは依然としてアプリケーション内に含まれるが、項目Bは含まれないように計測がロールバックされ得る。また、一時的に計測を付加することに加えて、満了時間に関連付けられないように、動的かつ恒久的に計測を付加することも可能である。この場合、ロールバックは恒久的な計測を正しい位置に残すことができる。図4Aは、マネージャとエージェントに関与している図3のステップ310の実施例を示す。図7の流れの例も参照されたい。一時的な計測、即ち、限られた期間の間にのみアクティブにされるようになっている計測、を適用するために、ステップ400は、ユーザインタフェースに対してコールバックを設定するというリクエストとともに、一時的な計測のための一つまたはそれ以上の指令をユーザインタフェースからマネージャに提供すること含む。例えば、一つまたはそれ以上の指令は、ユーザインタフェース106からマネージャ108にアプリケーションサーバ120の一つまたはそれ以上のアプリケーションを計測するために提供されることが可能で、またはこの指令は、ユーザインタフェース116からマネージャ114にアプリケーションサーバ140の一つまたはそれ以上のアプリケーションを計測するために提供されることが可能である図1。指令は、例えば、ユーザインタフェースを介してユーザコマンドによって提供され得る。指令は、ルールであり、計測するアプリケーションのクラスを特定することができ、例えば、計測を実行するエージェントを特定することも可能である。指令は、エージェントの名前を特定するパラメータを含む計測を適用するリクエスト内に存在し得る。エージェントの名前は、エージェントのIPアドレスおよびエージェントが監視するアプリケーションサーバに、関連付けられているキャッシュされた情報のキーとなり得る。一般的に、2つのコンピューティングデバイスが通信するために、持続する接続がそれらの間に確立され得る。この接続は、TCPのようなコネクション指向のトランスミッションプロトコルを使用してもよい。特に、コンピューティングデバイス間の接続は、コンピューティングデバイスのソケットの間に提供され得る。ソケットは、コンピュータネットワークを横断する双方向のプロセス間通信のフローの終点となり得る。また、ソケットは、ローカルおよびリモートのIPアドレスとポート番号との組み合わせに基づいて、適切なアプリケーションのプロセスまたはスレッドに受信データのパケットを送ることができる。ソケットは、aコンピューティングデバイスを特定するIPアドレスおよびbアプリケーションプログラムのプロセスまたはスレッド例えばコールバックに対応づけられているポート、を含んでいるソケットアドレスを持つことができる。特に、ソケットは、a例えば、トランスポートプロトコル例えば、TCP、UCP、生のIPまたはその他のプロトコル、bローカルIPアドレスおよびポート番号を含むローカルソケットアドレス、およびcTCPサーバが同時に複数のクライアントに供するときに確立されたTCPソケットの場合のリモートソケットアドレス、の組み合わせによって特徴づけられる。コンピューティングデバイスが接続を介して通信する場合、この接続は、TCP/IP、HTTP、HTTPまたはTCPトンネリング、または他のアプローチを使用することができる。または、一時的な計測の異なった項目に対する指令が異なる時間もしくはそれ以外は異なるリクエストで提供される場合、別々の接続およびソケットが各項目に対するコンピューティングデバイスによって別々に提供され、監視され得る。ステップ400に応答して、ステップ405では、マネージャがユーザインタフェースに対してコールバックを設定する。コールバックは、マネージャのコンピューティングデバイスとユーザインタフェースのコンピューティングデバイスとの間の接続を監視するためにマネージャにおいて実行される実行可能なコードであってよい。例えば、コンピューティングデバイスにおけるコールバックのコードは、接続が、アクティブか、または既に終了されたかもしくは切断されたか否かを判定するため、別のコンピューティングデバイスとの接続を提供するために使用されるソケットを、継続的に監視し得る。コールバックは、接続の一端側にコールバックハンドラ、そして接続の他端側にコールバックリスナーといったコードを含むことができる。ステップ410では、マネージャは、マネージャに対してコールバックを設定するというリクエストに応じて一つまたはそれ以上の指令を特定されたエージェントおよびアプリケーションサーバに伝える。マネージャは、またユーザインタフェースからのリクエストにおいて特定された期間や満了日に基づいてタイマーを設定する。マネージャとエージェントとの間の通信は、前述したように、ソケットを介した接続を確立することに関与し得る。ステップ405でマネージャがユーザインタフェースに対してコールバックを設定するのと同様の方法で、ステップ415での応答において、エージェントはマネージャに対してコールバックを設定する。ステップ420において、一つまたはそれ以上の指令に基づいて、例えば図13に関連して詳細に述べたように、エージェントは、アプリケーションの実行中にアプリケーションへの一時的な計測を付加する。図4Bは、マネージャのマネージャMOM、マネージャおよびエージェントに関与している図3のステップ310の実施例を示す。図4Aの例は、3つのコンピューティングデバイス、即ちユーザインタフェース、マネージャおよびアプリケーションサーバを含む。図4Aと比較すると、この例は、ユーザインタフェースとマネージャとの間にMOMのコンピューティングデバイスを付加的に含む。図8A-Dの流れの例を参照されたい。ステップ430は、一時的な計測のための一つまたはそれ以上の指令例えば、計測するためのアプリケーションのクラスを特定することによって、およびエージェントを特定することによってを、ユーザインタフェースからMOMに、ユーザインタフェースに対してコールバックを設定するというリクエストに応じて提供する。ステップ435で、MOMは、ユーザインタフェースに対してコールバックを設定する。ステップ440では、MOMは、MOMに対してコールバックを設定するというリクエストに応じて一つまたはそれ以上の指令を特定されたエージェントのマネージャに伝える。ステップ445において、マネージャはMOMに対してコールバックを設定する。ステップ450で、マネージャは、マネージャに対してコールバックを設定するというリクエストに応じて一つまたはそれ以上の指令をエージェントに伝える。マネージャは、タイマーも設定する。ステップ455において、エージェントはマネージャに対してコールバックを設定する。ステップ460において、エージェントは、アプリケーションが実行中に、一つまたはそれ以上の指令に基づいてアプリケーションに一時的な計測を付加する。例えば、アプリケーションサーバ120の一つまたはそれ以上のアプリケーションを計測するため、ユーザインタフェース106からMOM104に、そしてMOM104からマネージャ108に、および/または、アプリケーションサーバ140の一つまたはそれ以上のアプリケーションを計測するためマネージャ114に、指令が提供され得る図1。図5Aは、故障が検出されない場合に、マネージャおよびアプリケーションサーバに関与している図3のステップ320の流れの例を示す。ステップ500では、マネージャにおいてタイマーが満了になる。この時点でマネージャは、接続の切断を検出していない。この時間は、一時的な計測をアクティブにすべき期間を定義していることを想起されたい。マネージャが第1の接続を介してユーザインタフェースに対してコールバックを持ち、アプリケーションサーバが第2の接続を介してマネージャに対してコールバックを持つ場合、両方の接続が、一時的な計測が意図的にアクティブにされるべき期間中ずっとアクティブであり続けるときに、この状態が発生する。また、マネージャまたはユーザインタフェースの障害のような他の障害は発生しない。ユーザインタフェースのコンピューティングデバイスの障害は、第1の接続を終了させる結果になるであろうし、マネージャは、それによって第1の接続が切断されていることを検出することに留意されたい。同様に、アプリケーションサーバの障害は、第2の接続を終了させる結果になるであろうし、マネージャは、それによって第2の接続の障害を検出する。期間の満了時には、マネージャは、ステップ502においてユーザインタフェースとの接続を、ステップ504においてアプリケーションサーバとの接続を終了する。接続は、異なった方法でマネージャによって終了されることがある。あるアプローチでは、ステップ502においてTCP接続が用いられる場合、マネージャにおける処理が、ユーザインタフェースとのセッションはもはや必要ではないことを示すシグナルをそのTCP層に送る。マネージャは、マネージャが接続の終了を望むことを示すメッセージをユーザインタフェースに送り、ユーザインタフェースがそのメッセージに対する肯定応答をする。メッセージに呼応して、ユーザインタフェースの準備ができている場合には、ユーザインタフェースにおける処理は、セッションがもはや必要はないことを示すシグナルをそのTCP層に送るとともに、対応するメッセージがマネージャに送られて、マネージャが肯定応答をする。ユーザインタフェースはこの肯定応答を受けて接続を終了し、マネージャは肯定応答を出した後、特定の時間に接続を終了する。この接続の終了は、ソケットを終了することを含み得る。同様に、ステップ504において、マネージャにおける処理が、アプリケーションサーバとのセッションはもはや必要ではないことを示すシグナルをそのTCP層に送ることができる。マネージャは、マネージャが接続の終了を望むということをアプリケーションサーバに伝えるためにメッセージを送り、アプリケーションサーバはそのメッセージに肯定応答をする。応答においては、アプリケーションサーバの準備ができている場合には、アプリケーションサーバにおける処理は、セッションがもはや必要はないことを示すシグナルをそのTCP層に送るとともに、対応するメッセージがマネージャに送られて、マネージャが肯定応答をする。アプリケーションサーバはこの肯定応答を受けて接続を終了し、マネージャは肯定応答を出した後、特定の時間に接続を終了する。ステップ506においては、エージェントは終了した接続を検出する。例えば、エージェントにおけるコールバックのコードは、アプリケーションサーバにおけるソケットが終了したときを検知することによって、いつ接続が終了したかを検出することができる。ステップ508においては、マネージャとの終了した接続を検出することに応答して、エージェントが、図3、6および13のステップ330に関連して説明したように、一時的な計測のロールバックを始める。接続の終了は、故障状態による接続の予定外の切断に反して、接続の正常な終了を表していることに留意されたい。図5Bは、故障が検出されない場合に、MOM、マネージャおよびアプリケーションサーバに関与している図3のステップ320の流れの例を示す。ステップ510で、マネージャによる接続の切断がないことまたは他の故障がないことが検出されたことを示し、マネージャおいてタイマーが満了になる。ステップ512で、マネージャがMOMとの接続を終了する。接続の終了は、例えば、前述したように進めることができる。応答では、ステップ514において、MOMはユーザインタフェースとの接続を終了する。図8A-8Dも参照されたい。同様に、ステップ516において、マネージャがアプリケーションサーバとの接続を終了する。ステップ518においては、エージェントは終了した接続を検出する。例えば、エージェントにおけるコールバックのコードは、アプリケーションサーバにおけるソケットが終了する時を検知することによって、接続がいつ終了されるのかを検出することができる。ステップ520においては、マネージャとの終了した接続を検出することに応答して、エージェントが、一時的な計測のロールバックを始める。図5Cは、ユーザインタフェース、マネージャおよびアプリケーションサーバを含む図3のステップ325の流れの例を示す。これは、マネージャとアプリケーションサーバとの間の接続において故障が検出される場合である。ステップ530では、マネージャとユーザインタフェースとの間の接続は切断されていない。しかし、ステップ532で、エージェントがマネージャとの接続の切断を検出する。このことは、マネージャにおけるタイマーの満了前に起きるのであり、それは、接続の切断が予定外のことであってある種の故障に起因するものである。例えば、エージェントにおけるコールバックのコードは、アプリケーションサーバにおけるソケットが終了する時を検知することによって、接続がいつ終了されるのかを検出する。接続が予定外に切断される場合には、例外イベントまたはその他のエラーは、接続に関与した一方または双方のコンピューティングデバイスによって検出され得る。例えば、エージェントは、それぞれの接続が切断されたことを示すイベントをソケットが生成することを判定することによって、それぞれの接続が切断されることを判定するのにコールバックを使用することが可能である。ステップ534において、マネージャとの接続の切断を検出することに応答して、エージェントは、図3のステップ330に関連して説明したように、一時的な計測のロールバックを始める。図5Dは、ユーザインタフェース、マネージャおよびアプリケーションサーバを含む図3のステップ325の流れの例を示す。これは、マネージャとユーザインタフェースとの間の接続で故障が検出される場合である。この流れでは、ステップ540において、マネージャとエージェントとの間の接続は切断されていない。しかし、ステップ542では、マネージャはユーザインタフェースとの接続の切断を検出することを含む。これは、一時的な計測のためのマネージャにおけるタイマーの満了前である。ステップ542に応答して、マネージャは、ステップ544でアプリケーションサーバとの接続を終了する。エージェントは、546において接続の終了を検出する。ステップ548において、マネージャとの接続の終了を検出することに応答して、エージェントは、図3のステップ330に関連して説明したように、一時的な計測のロールバックを始める。一つの可能な実装において、接続の終了または切断がエージェントによって検出されるか否かにかかわらず、ロールバックは本質的に同じである。図5Eは、MOM、ユーザインタフェース、マネージャおよびアプリケーションサーバを含む図3のステップ325の流れの例を示す。これは、マネージャとアプリケーションサーバとの間の接続で故障が検出される場合である。この流れでは、ステップ550において、MOMとユーザインタフェースとの間、およびMOMとマネージャとの間の接続は、切断されていない。しかし、ステップ552は、エージェントが、ユーザインタフェースとの接続の切断を検出することを含む。これは、一時的な計測のためのマネージャにおけるタイマーの満了前である。ステップ554において、マネージャとの接続の切断を検出することに応答して、エージェントは、図3のステップ330に関連して説明したように、一時的な計測のロールバックを始める。図5Fは、MOM、ユーザインタフェース、マネージャおよびアプリケーションサーバを含む図3のステップ325の流れの例を示す。これは、マネージャとMOMとの間の接続で故障が検出される場合である。この流れでは、ステップ560において、MOMとユーザインタフェースとの間、およびマネージャとアプリケーションサーバとの間の接続は、切断されていない。しかし、ステップ562は、マネージャが、MOMとの接続の切断を検出することを含む。これは、一時的な計測のためのマネージャにおけるタイマーの満了前である。ステップ564において、接続の切断を検出することに応答して、マネージャがアプリケーションサーバとの接続を終了する。応答では、ステップ566において、アプリケーションサーバにおけるエージェントは、マネージャとの接続の終了を検出する。ステップ568において、マネージャとの接続の終了を検出することに応答して、エージェントは、図3のステップ330に関連して説明したように、一時的な計測のロールバックを始める。図5Gは、MOM、ユーザインタフェース、マネージャおよびアプリケーションサーバを含む図3のステップ325の流れの例を示す。これは、ユーザインタフェースとMOMとの間の接続で故障が検出される場合である。この流れでは、ステップ570において、MOMとマネージャとの間、およびマネージャとアプリケーションサーバとの間の接続は、切断されていない。しかし、ステップ572は、MOMが、ユーザインタフェースとの接続の切断を検出することを含む。これは、一時的な計測のためのマネージャにおけるタイマーの満了前である。ステップ574において、接続の切断を検出することに応答して、MOMがマネージャとの接続を終了する。応答では、ステップ576において、マネージャはアプリケーションサーバとの接続を終了する。ステップ578において、エージェントは、マネージャとの接続の終了を検出する。ステップ580において、マネージャとの接続の終了を検出することに応答して、エージェントが、図3のステップ330に関連して説明したように、一時的な計測のロールバックを始める。図6は、図3のステップ330の実施例を示す。一時的な計測が付加される前にあった状態にアプリケーションを戻すための技術の例が提供される。この技術は、一時的な計測がどのようにロールバックされ得るか、例えば、アプリケーションから削除され得るかを示す。一時的な計測のロールバックは一時的な計測を適用する指令を削除することに関与し、一つまたはそれ以上の一時的に計測されたクラスのバイトコードをリロードすることによって、および、一時的な計測が付加される前にすでに適用された指令を再適用することによって、エージェントが計測の以前の状態を復元することができる。ロールバックは、図13に関連して説明したように、アプリケーションの一つまたはそれ以上のクラスを再定義することに関与し得る。アプリケーションに適用された計測の履歴または記録は、埋め込まれたデータベース内のエージェント側において、一連の指令として記憶しておくことが可能である。ステップ600では、エージェントは未計測のバイトコードにアクセスする。例えば、このことは、JARまたはJava登録商標Archiveファイルにアクセスすることを含み得る。これは、複数のJavaファイルを含むアーカイブである。これは、Javaクラスとメタデータを格納し、アプリケーションサーバなどのコンピューティングデバイスのJavaRuntimeEnvironmentJRE登録商標におけるプログラムとして実行され得る。これは、計測が付加される前は、元来、生のバイトコードである。ステップ605において、エージェントは、一時的な計測が付加される前に既に適用された計測指令の記録や履歴にアクセスする。ステップ610において、エージェントは、計測指令の記録に基づいて、未計測バイトコードを計測する。これらの計測指令は、一時的計測以外の計測によってアプリケーションを計測するためのルールを含むことができる。例えば、計測指令は、計測すべきアプリケーションのクラスを特定することができる。詳細は、図12A、12Bおよび13に関連して説明される。図7は、ユーザインタフェース、マネージャおよびエージェントを含む図3および4Aの処理の実施例を示す。図1の、ユーザインタフェースのコンピューティングデバイス106、マネージャのコンピューティングデバイス108およびアプリケーションサーバのセット120が示されている。また、アプリケーションサーバ122および124、ならびにそれぞれ関連付けられているエージェント123および125が示されている。マネージャ108は、ユーザインタフェース106とインタフェース接続するためのソフトウェア704を含む。ソフトウェア704は、任意のエージェント123、125、のためにエージェントの動的計測プロキシサービスを提供する。ソフトウェア706は、プロキシサービスのマネージャの実装を表現しており、リスナー708およびタイマー710を含む。ソフトウェア706は、ソフトウェア704とインタフェース接続する。一時的な計測の複数の項目がアクティブになっている場合、リスナーとタイマーとの対が項目ごとに提供され得る。エージェントの動的計測サービスという形態をしたソフトウェアが、エージェントごとに提供される。具体的には、ソフトウェア712は、エージェント123とインタフェース接続するために提供され、ソフトウェア714は、エージェント125とインタフェース接続するために提供される。ソフトウェア706もソフトウェア712および714とインタフェース接続する。この例では、双方向の実線718は、ユーザインタフェース106とマネージャ108との間に開かれている接続を表し、双方向の実線720は、アプリケーションサーバ122とマネージャ108との間に開かれている接続、例えばマネージャ108の処理712を表す。点線702は、ユーザインタフェース106とマネージャのリスナー708との間のコールバックを表す。丸で囲んである点線の端は、コールバックコードであるコールバックハンドラ処理を表し、一方、この線の矢印の先端は、これもコールバックコードであるリスナー処理を指す。このように、コールバック702のために、コールバックハンドラはユーザインタフェース106に存在する。同様に、点線716は、エージェント123とマネージャのリスナー708との間のコールバックを表す。ここでは、コールバックハンドラがエージェント123に存在する。一時的な計測がアプリケーションサーバ122内のアプリケーションに適用される場合、タイマー710は、一時的な計測がアクティブであり続ける期間を追跡する。さらに、コールバック716は接続720を監視し、コールバック702は接続718を監視する。本質的には、両端のコールバックが同じ接続を監視することができる。例えば、アプリケーションサーバ122またはマネージ108は、接続720が切断されるかどうかを判定するためにコールバック716を使用することができ、ユーザインタフェース106またはマネージャ108は、接続718が切断されるかどうかを判定するためにコールバック702を使用することができる。図8Aは、1つのエージェントに関与している一時的な計測の1項目に対する、MOM、マネージャおよびエージェントを含む図3の処理におけるコールバックの使用の実施例を示す。図1のユーザインタフェース102、MOM104およびマネージャ114が示されている。MOMは、ユーザインタフェース102とインタフェース接続しているエージェントの動的計測プロキシサービスのためのソフトウェア804、リスナー808を含むMOMのプロキシサービス806の実装、および、例えばマネージャ108および114のような一つまたはそれ以上のマネージャとインタフェース接続しているエージェントのマネージャの動的計測プロキシサービス810を含む。双方向の実線の矢印803は、MOM104とユーザインタフェース102との間の接続を示す。マネージャ114は、マネージャ108と類似しているコンポーネントを含んでおり、エージェントの動的計測プロキシサービスのためのソフトウェア824およびプロキシサービスのマネージャの実装のためのソフトウェア826を含んでいる。この例では、マネージャ114に関与しているコールバックが示されていないので、リスナーもタイマーも提供されない。図1の、エージェントの動的計測サービスのソフトウェア832および834は、アプリケーションサーバ142および144のエージェント143および145にそれぞれ提供される。点線802は、ユーザインタフェース102とMOM104のリスナー808との間のコールバックを表す。そこでは、コールバックハンドラはインタフェース102に存在する。同様に、点線812は、マネージャ108とMOMのリスナー808との間のコールバックを表す。そこでは、コールバックハンドラはリスナー808に存在する。点線814は、マネージャ108とMOMのリスナー808との間のコールバックを表す。そこでは、コールバックハンドラはリスナー708に存在する。双方向の実線の矢印805は、MOM104とマネージャ108との間の接続を示す。前述したように、点線716は、リスナー708とエージェント123との間のコールバックを表す。そこでは、コールバックハンドラはエージェント123に存在する。一般的に、すべてのコールバックは、双方向にすることができ、矢印がコールバックの設定方向を示す。即ち、コールバックを生成する主体であるコンピューティングデバイスまたはその他のエンティティ実体は、矢印の後ろにあり、コールバックを受信しそれを通して結果を返す通信をするためにそれを使用するエンティティ実体は矢印の先にある。コールバックの最初のシーケンスは:1ユーザインタフェース/ワークステーション102からMOM104コールバック802まで、および2MOM104からマネージャ108コールバック812まで、である。これら2つのコールバックは、結果およびフェイルセーフについてマネージャからワークステーションに至るまで通信するためにある。コールバックの2番目のシーケンスは:1エージェント123からマネージャ108までコールバック716および2マネージャ108からMOM104までコールバック814までである。これらは、マネージャ108とユーザインタフェース102への動的計測の結果をもたらすフェイルセーフおよび結果のコールバックである。リスナー708および808および後述する、図8Dでは828は、コールバックが同期できるようにグルーを提供する。コールバック802、および後述する図8Bのコールバック807は、パラレルコールバックで、計測の各項目の一つと考えられ得る。一時的な計測がアプリケーションサーバ122内のアプリケーションに適用される場合、タイマー710は、一時的な計測がアクティブであり続ける期間を追跡する。また、ユーザインタフェース102またはMOM104は、接続803が切断されるかどうかを判定するために、コールバック802を使用することができる。同様に、MOM104およびマネージャ108は、接続805が切断されるかどうかを判定するためにコールバック812および814を使用することができる。マネージャ108またはエージェント123は、接続720が切断されるかどうかを決定するためにコールバック716を使用することができる。一時的な計測と関係のないコンピューティングデバイス間では他の接続が確立し得ることに留意されたい。図8Bは、一時的な計測の2項目に対する、MOM、マネージャおよび1つのエージェントを含む図3の処理におけるコールバックの使用の実施例を示す。この実施例は、エージェント123によって使用される計測の付加的な項目のために付加的なコールバックおよび接続を提供することによって図8Aの実施例に追加する。特に、ユーザインタフェース102とMOM104との間に追加の接続811が提供され、MOM104とマネージャ108との間に追加の接続809が提供され、そしてマネージャ108とエージェント123との間に追加の接続823が提供される。さらに、ユーザインタフェース102およびMOM104は、追加のコールバック807を使用し、計測の追加の項目に関係して接続811を監視する。MOM104追加のリスナー処理842を介しておよびマネージャ108は、追加のコールバック844および846を使用し、計測の追加の項目に関係して接続809を監視する。マネージャ108およびエージェント123は、コールバック836を使用し、計測の追加の項目に関係して接続823を監視する。マネージャ108において、追加のリスナー処理825および関連付けられているタイマー処理827は、計測の追加の項目と関連付けられている。この例では、付加的な接続、リスナーおよびコールバックを使用して、計測のさらなる項目を拡張することができる。図8Cは、1つのエージェントに関与している一時的な計測の2項目に対する、MOM、マネージャおよび2つのエージェントを含む図3の処理におけるコールバックの使用の実施例を示す。この実施例は、別のエージェント、即ちエージェント125に付加的な計測の項目を提供することによって図8Bの実施例を変更する。この場合、エージェント処理125が実行されるアプリケーションサーバ124とマネージャ108との間に2番目の接続838が確立される。また、コールバック840は、接続838を監視するために、マネージャ108およびエージェント125によって使用される。図8Dは、2つのエージェントに関与している一時的な計測の2項目に対する、MOM、2つのマネージャおよび2つのエージェントを含む図3の処理におけるコールバックの使用の実施例を示す。この実施例は、別のマネージャ即ちマネージャ114に関連づけられている別のエージェント即ちエージェント143に付加的な計測の項目を提供することによって図8Aの実施例を変更する。この場合、MOM104とマネージャ114との間に接続894が確立され、エージェント143が実行されるアプリケーションサーバ142とマネージャ114の処理832との間に接続848が確立される。タイマー830は、リスナー828に関連付けられる。MOM104およびマネージャ114は、接続894を監視するためにコールバック896および898を使用し、マネージャ114およびエージェント143は、接続848を監視するためにコールバック852を使用する。図8A-8Dの実施例の組み合わせもまた使用され得る。この例は、追加の接続、リスナーおよびコールバックを使用して、計測のさらなる項目まで広げられ得る。図9は、実行パス内のコンポーネントの呼び出し関係を示す。図1で示されるようなアプリケーションサーバ上で実行され得るアプリケーション内のコンポーネントが示されている。ここで提供されるコンポーネントのシーケンスは、実行パスの一つの可能なタイプの例である。呼び出される各コンポーネントは、実行パスの一部と考えることができる。アプリケーションが計測されるときには、通常、このアプリケーションの開発者の理解や注目する対象となるであろうコンポーネントの選択に基づいて、唯一選択されたコンポーネントが計測されることに留意する。このように、少なくとも最初は、注目すべきものとされていないため、多くのコンポーネントはアプリケーション内で呼び出され得るが、計測されることはない。コンポーネント指向のプログラムモジュールは、コンポーネントに関係する構成要素からアプリケーションや他のプログラムをプログラマに組ませるのに役に立つ。各コンポーネントは、ソフトウェアの全体的機能に適合するよう特定の機能を実行することができる。さらに、コンポーネントは、他のコンポーネントを呼び出すことができる、再帰呼び出しによって自分自身を呼び出すこともできる。こうして、コンポーネントのシーケンスがプログラム内で呼び出される。コンポーネントは、コンピュータシステムのリソースが消費される例、またはプログラムの実行時に作業が行われる例である。コンポーネント指向のプログラミングモデルの一例は、J2EEであるが、JavaServerPage、EnterpriseJavaBean、サーブレットおよびJavaDatabaseConnectivityコンポーネントといったコンポーネントを用いることができる。しかしながら、その他のコンポーネント指向のプログラミングモデルもまた使用されており、例えば、マイクロソフト社のNETコンポーネントが使用される。さらに、プログラミングモデルはオブジェクト指向である必要はない。一つのアプローチでは、コンポーネントはメソッドであると考えられている。ここで示されている特定の例は、ユーザがアイテムを注文するWebベースの電子商取引のアプリケーションを示している。コンポーネントは、アプリケーション内のビジネスロジックまたは電子商取引の手順に対応する。特に、コンポーネントC1912では、ユーザがアイテムを選び、購入し、クレジットカードの種類やクレジットカード番号といった支払い方法の情報、アイテムを発送する住所といった発送情報、陸送または翌朝配達の航空発送といった発送方法の情報を入力する、ショッピングカートを提供している。C1912は、コンポーネントC1A914を呼び出し、選択されたアイテムがストックにあるかどうかを判定するために在庫を調べる。一旦、選択されたアイテムがストックにあると判定されると、C1912は、コンポーネントC2922を呼び出し、そこでトランザクションが保留にされている間、アイテムが他のユーザに販売されないように、アイテムを予約する。一旦終了すると、C2922がコンポーネントC3924を呼び出し、そこでユーザのクレジットカード情報を調べ、購入の承認と認証が行われる。これは、通常、クレジットカード情報センターにより管理されている外部サーバと通信することを伴う。例えば、C3924は、クレジットカードサービスにコンタクトするコンポーネントC3A926を呼び出し得る。一旦、C3924が正常に終了することで、購入を承認し、それが、コンポーネントC4930を呼び出し、購入されたアイテムの数量を減少させることによって在庫を調整する。C4930はコンポーネントC3942を呼び出し、これにより、出荷ラベルがプリントされたり、オペレータがアイテムを手作業で置いたり梱包したりすることが求められる場所である、例えば、倉庫にコンタクトし、出荷されるアイテムの手配が行われる。例えば、C5942は、コンポーネントC5A944を呼び出すことができ倉庫Aにコンタクトし、および/またはコンポーネントC5B946を呼び出して倉庫Bにコンタクトする。一旦、コンポーネントC2-C5が実行されると、実行パスはC1912に戻り、例えば、確認の電子メールまたはWebページで発注確認番号および追跡番号等を提供することによりユーザに購入を確認するために、発注完了コンポーネントC6916を呼び出す。もし、C1A914で倉庫が在庫切れであったり、C3924でクレジットカード払いが失敗したりした場合には、実行パスは同様にC1912に戻り得る。ある種の実装として、C1およびC6はJavaServerPagesであり、C2-C5はEnterpriseJavaBeansである。1番目のコンポーネントは、非同期モードでマルチスレッドまたはマルチプロセスモードの実行を開始する別のコンポーネントを呼び出した後、実行を継続することができ、またはこの呼び出されたコンポーネントが同期モードでシングルスレッドまたはシングルプロセスモードの実行を終了するまで、このコンポーネントを一時的に休止することができる、ことに留意されたい。例えば、C2-C5のコンポーネントが実行している間、C1912は休止する。さらに、任意のコンポーネントは、トランザクション内に1回以上呼び出すことが可能である。例えば、ユーザが異なる倉庫に保管されている複数のアイテムを購入すると仮定する。この場合、C5942は繰り返し実行することができ、異なる倉庫および/または各アイテム用の異なる倉庫部門にコンタクトする。図10は、図9の呼び出し関係に基づく呼び出しスタックの位置に対する時間のグラフを示す。時間の増分は、必ずしも等間隔ではない。この表現では、トランザクションのトレースは、一つまたはそれ以上のホストによって提供された実行パス情報の種類の一例である。これは、ユーザインタフェース上での報告として提供されるグラフィカル表示であり、例えばメソッドのようなコンポーネントの実行時間の形式でパフォーマンスデータを表現したものである。実行パス情報では、アプリケーションのどのメソッドが呼び出されるか、および、呼び出された時間についても特定することができる。水平方向は時間を表し、垂直方向は呼び出しスタックの深さや位置を表す。呼び出しスタックは、一つまたはそれ以上のプログラムまたはスレッドの実行中に、呼び出されるか又は起動されるメソッドを特定する。実行パスは、通常、1秒から数秒のわずかの間、続く。例えば、実行パスはシーケンス:C11012、C1A1014、C11012、C21022、C31024、C3A1026、C31024、C41030、C51042、C41030、C31024、C21022、C11012、C61016およびC11012を含む。ホストは、クライアントからのリクエストを受信して、C1がt1において実行を開始したことに気づく。このシーケンス内における各移行は、計測に基づいてエージェントによって気づかれる。C1がt2においてC1Aを呼び出す。C1Aがt4において実行を完了する。C1がt5においてC2を呼び出す。C2がt6においてC3を呼び出す。C3がt7においてC3Aを呼び出す。C3Aがt9において実行を完了する。C3がt10においてC4を呼び出す。C4がt11においてC5を呼び出す。C5がt16において実行を完了する。C4がt17において実行を完了する。t18において、C3が実行を完了する。C2がt19において実行を完了する。C1がt20においてC6を呼び出す。C6がt24において実行を完了する。t25において、C1が実行を完了するとき、ホストがクライアントにレスポンスを出す。ホストは、定期的にセントラルマネージャに時間とトランザクションデータを報告する。図11は、Java実行環境を示している。Java実行環境1100は、ハードウェア1130の上に構築されているオペレーティングシステム1120上に構築されている。Java実行環境は、JavaAPIクラス1102とJVM1104を含むいくつかの仮想部品を含む。JVMは、レジスタ1106、オペランドスタック1108、ヒープ1110およびメソッド領域1112を含む。JVMは、命令のシーケンスとして一連のバイトコードを処理する。JVMの命令は、操作される上で値が具体化するゼロまたはそれ以上のオペランドを伴う、実行すべき操作を特定するオペコードからなる。オペランドスタック1108、ヒープ1110およびメソッド領域1112は、指定可能なメモリ内にある。アドレスのサイズは32ビットで、各メモリロケーションは1バイトを含み、各レジスタが32ビットアドレスを格納する。メソッド領域は、バイトコードを含んでバイトバウンダリに配置され、オペランドスタックとヒープは、ワード32ビットバウンダリに配置される。レジスタは、メモリ内で実行すべき命令を追跡するプログラムカウンタPCを含む。プログラムカウンタは、実行すべき次のバイトコードを特定する。フレームレジスタは、オペランドスタック内のカレントメソッドの実行環境に対するポインタを含む。オペランドトップoptopレジスタは、オペランドスタックの先頭へのポインタを含み、算術式を評価するのに用いられる。変数varsレジスタは、局所変数へのポインタを含む。オペランドスタックは、メソッドと操作へパラメータを供給し、それらから結果を得る。すべてのバイトコード命令は、スタックからオペランドを取得してそれらの上で操作して、スタックに結果を戻す。オペランドスタックは、実行中のメソッドのスタックフレームを含む。スタックフレームは、例えば、局所変数、計算の中間結果など、メソッドの特定呼び出しのために、状態を保持する。具体的には、各JVMスレッドは、同時にスレッドとして生成された、専用のJVMスタックを持っている。JVMスタックは、フレームを格納し、局所変数と部分的な結果を保持し、メソッド呼び出しと戻り値の役割を果たす。このようにフレームは、動的リンクを実行するため、メソッドのための値を戻したり、例外処理をディスパッチするために使用されると同様に、データおよび部分的な結果を格納するため使用される。新しいフレームは、メソッドが呼び出されるたびに生成される。フレームは、メソッドの呼び出しが終了すると、その完了が正常か中途受け取れない例外処理をスローしたかにかかわらず、破棄される。フレームは、フレームを生成するスレッドのJVMスタックから割り当てられる。各フレームは、局所変数の独自の配列、独自のオペランドスタック、および、カレントメソッドのクラスの実行時定数プールへのリファレンスを持っている。ヒープまたはメモリ割り当てプールは、ガーベジコレクトされる。ヒープは、すべてのクラスのインスタンスに対するメモリと配列がそこから割り当てられる実行データ領域である。ヒープは、起動した仮想マシン上に生成され、オブジェクトのためのヒープ記憶域は、ガーベジコレクタとして知られている自動記憶装置管理システムにより再生される。具体的には、Java実行環境で実行中の各プログラムが、それに割り当てられたガーベジコレクトされたヒープを持っている。また、ヒープ内の各クラスには、それに関連付けられた定数プールがある。定数は、変更することはないから、通常、コンパイル時に生成される。定数プール内のアイテムは、特定のクラス内の任意のメソッドで使用されるすべての名前をエンコードする。クラスは、いくつの定数が存在するかのカウントを含み、クラスの記述内における定数の特定リストの始まりを特定するオフセットを含む。メソッド領域は、コンパイルされたコード内でメソッドと関連付けられたバイトコード命令、および、動的リンクのために実行環境が必要とするシンボルテーブルを格納する。メソッドと関連付けられる必要がある可能性があるデバッグや付加情報も、またこの領域内に格納される。プログラムカウンタは、常にメソッド領域の数バイトのアドレスを示し、例えば、メソッド領域の数バイトのアドレスが入る。プログラムカウンタは、スレッドの実行を追跡するために使用される。バイトコード命令が実行された後、プログラムカウンタは、次に実行する命令のアドレスを保持する。メソッド領域は、すべてのJVMスレッド間で共有され、例えば、実行時定数プール、フィールドおよびメソッドデータ、およびメソッドやコンストラクタのためのコードのようなクラスごとの構造などを格納しており、クラスおよびインスタンスの初期化やインタフェースタイプの初期化で使用される特別のメソッドを含んでいる。メソッド領域は、起動した仮想マシン上に生成される。実行時定数プールは、クラスファイル内の定数プールテーブルのクラス毎の、又はインターフェイス毎の実行時表現である。これには、コンパイル時に知られている数値リテラルから実行時に解決されるべきメソッドやフィールドリファレンスに至るまでの範囲で、定数のいくつかの種類が含まれる。各実行時定数プールは、JVMのメソッド領域から割り当てられる。クラスまたはインタフェースの実行時定数プールは、JVMによってクラスまたはインタフェースが生成されるときに構築される。図12Aは、静的計測のための処理フローの例としてJavaベースのものを示す。この処理は、例えば、図1に示されたようにエージェント1200よって、ある可能なアプローチにおいて実装される可能性がある。計測に対する一つのアプローチは、メソッドのような、どのコンポーネントが計測されるべきかを決める静的なルールを提供するものである。ルールは、コンポーネントがアプリケーションにロードされる時にアクセスされる。そのようなアプローチでは、クラスローダ1220は、トランスフォーマ1215にアプリケーションのバイトコードの生のデータバイトを提供するのに使用され、例えば、生のデータバイトをクラスに変換する。例えば、Javaでは、これは、クラスのロードに関与するClassLoaderオブジェクトのdefineClassメソッドを使用することを含み得る。ClassLoaderクラスは、抽象クラスである。クラスの名前を付与すると、クラスローダは、クラスの定義を構成するデータを検索したり生成したりしようとする。代表的な手順は、名前をファイル名に変換し、ファイルシステムからその名前のクラスファイルを読み込むことである。defineClassメソッドは、バイトの配列をClassクラスのインスタンスに変換する。Classクラスのインスタンスは、Javaアプリケーションを実行中にクラスおよびインタフェースを表す。トランスフォーマ1215は、したがって、このようにクラスを変換することによって、計測を付加するためにバイトコードを変換することができるソフトウェアである。一つのアプローチでは、トランスフォーマ1215の最小処理単位をクラスファイルおよびそのバイト配列とすることができる。判断ブロック1210において、アプリケーションのバイトコードがルール指令1205に一致する場合、トランスフォーマ1215はトレーサバイトコードの形式でプローブを付加する。判断ブロック1210においてアプリケーションのバイトコードがルール1205に一致しない場合、トランスフォーマ1215はバイトコードに計測を付加しない。トランスフォーマ1215と判断ブロック1210は、プローブビルダ1225の一部と考えることができる。この実装では、ルール1205は、計測すべき管理されたアプリケーションの一部を特定する代表的な静的ルールの規定である。ルールは、通常、最初に仮想マシン内でクラスが定義される場合に実装される。クラスは、たった一度定義すれば、複数回ロードすることができる。例えば、同じクラスをロードする複数のクラスローダが存在し得る。また、クラスなどのコンポーネントは、特定の方法で名前付けられるかどうか、特定のインタフェースを実装するかどうか、特定のサブクラスまたはスーパークラスを拡張するかどうか、等々に基づいて、計測され得る。そのようなコンポーネントは、有用なそうでなければ興味深いパフォーマンスデータを提供する可能性があると考えられるので、計測すべきものとして選択される。例えば、ルールは、少なくともいくつかのサーブレットは興味深いデータを提供し得ると考えられているので、すべてのサーブレットを計測すべきであることを示すことがある。この場合、ルール1205が、JavaクラスのHttpServletのサブクラスであるすべてのコンポーネントを計測すべきであることを示す場合がある。HttpServletは、すべてのサーブレットが依存する抽象クラスである。しかしながら、すべてのコンポーネントが計測されるわけではなく、包括的過ぎる計測は過度にオーバーヘッドコストがかかる結果となり、アプリケーションの操作性が損なわれる可能性があるという不安がある。その一方で、包括的でなさ過ぎる計測は、重要なパフォーマンスデータの欠落という結果に繋がるおそれがある。図12Bは、静的計測のための処理フローの例としてNETベースのものを示す。別の可能性のあるアプローチでは、管理されたアプリケーションのコンポーネントは、マイクロソフト社のNETフレームワークにより提供されている。Javaとは異なりNETフレームワークはクラスローダを使用しない。代わりに、NETは、フレームワーク用に特別に書かれたプログラムの実行を管理する仮想マシンを含む。NETフレームワークの実行環境は、共通言語ランタイムCLRとして知られている。CLRは、プログラムを実行する特定のCPUの能力をプログラマが考慮する必要がないように、アプリケーションの仮想マシンの外観を呈している。CLRは、セキュリティ、メモリ管理および例外処理などの他のサービスの提供もしている。予めコード化されたソリューションのクラスライブラリとCLRは、共にNETフレームワークを構成している。また、CLRは、アプリケーションの開発および実行のための言語に中立的なプラットフォームを提供する共通言語基盤CLIの実装であり、例外処理、ガーベッジコレクション、セキュリティおよび相互運用のための各機能を果たしている。CLIは、コアクラスライブラリィ、コモンタイプシステムおよび共通中間言語CILを含む。Javaバイトコードと同様に、CILは中間バイトコードの他の例である。JavaとNETは、実装の一例にすぎず、他の実装もまた可能である。ここでは、ある可能なアプローチとして、処理がエージェント1250によって実装されることがある。一つの可能性のある状況では、NETフレームワークは名前によってクラスを参照し、CLR1270がクラスを発見し、トランスフォーマ1265もしあればにそれを示し、その結果CILを使用するという処理が行われる。特に、判定ブロック1260でクラスがルール1255に一致する場合、計測が付加される。判断ブロック1260でクラスがルール1255に一致しない場合は、計測は付加されない。トランスフォーマ1265と判断ブロック1260は、プローブビルダ1275の一部であると考えることができる。図13は、ソフトウェアを計測するための処理フローの例を示す。図5Aに対応して、コンポーネントの静的リスト1310は、計測されたバイトコードを提供するためのトランスフォーマ/プローブビルダ1300の使用のためにバイトコードをロードするクラスローダ1302に提供することができる。例えば、defineClassメソッドがバイト配列をClassクラスのインスタンスに変換する。さらに、一時的に計測されるメソッドまたはクラスのようなコンポーネントの動的リスト1306は、計測され得る。一つのアプローチでは、図14に示されているように、ユーザインタフェース1308は、一時的に計測すべきコンポーネントをユーザが指定することを許容する。ユーザも静的リスト1310を変更することができる。ユーザインタフェースは、管理されたアプリケーション内に存在する既存の計測から流入するパフォーマンスデータを監視するパフォーマンスモニタ1312に応答することができ、例えば、あるコンポーネントがトランザクションにおいて実行に時間がかかるというような問題を起こしている事実を特定することができる。パフォーマンスデータは、範囲外にあるかどうかを判定するための下側および上側の閾値と比較されることが可能である。コンポーネントの動的リスト1306は、計測されるべきクラスの動的に更新可能なリストを含むことができる。このリストは、診断が行われる限られた期間内に特定のメソッドが計測されるように随時変更することができる。ユーザインタフェース1308は、時間の期間を指定することや、既定の時間期間を使用することができる。したがって、コンポーネントは、例えば、ある時点にて一時的な計測を有しない状態から、別の時点にて一時的な計測を有する状態へ移行するように、再定義することが可能である。一時的な計測の種類またはレベルが異なるものを提供することも可能である。コンポーネントを再定義することは、このように異なった種類の一時的な計測への移行を含むことがある。計測は、多くの種類のパフォーマンスメトリクス/データを生成することができ、それらには、コンポーネントの平均実行または応答時間、毎秒または間隔ごとの呼び出し率、呼び出し回数、開始したが終了していない間隔ごとの呼び出しの回数を示す同時実行のメトリック、呼び出しを開始した間隔ごとのメソッド呼び出しの回数が特定の閾値を超えた呼び出し回数を示すストール状態のメトリックが含まれる。また、データは、ガーベジコレクションのヒープサイズ、ファイルやソケットのアクティビティを示すバンド幅メトリック、スレッドの数、システムログ、例外処理、メモリリークおよびコンポーネントの相互作用を特定する。データは、どのコンポーネントが計測されたコンポーネントによって呼び出されたか、またはどれが計測されたコンポーネントを呼び出すか、を特定することもできる。例えば、コントローラのアーキテクチャにおいては、コンポーネントを管理するコントローラコンポーネント内の制御フローは、次に実行されて、どのくらいの頻度で実行され、どのように実行されるかを知っている。コントローラコンポーネントは、計測を介して、未計測のどのコンポーネントが頻繁に呼び出されその結果重要であると推測でき、計測を付加するために再定義すべきであることを報告することができる。コンポーネントの動的リスト1306、ユーザインタフェース1308、コンポーネントの静的リスト1310およびパフォーマンスモニタ1312は、同じ場所あるいは異なる場所で提供され得ることに留意されたい。例えば、ユーザインタフェース1308は、ユーザインタフェースのコンピューティングデバイスにおいて提供されることが可能であり、コンポーネントの動的リスト1306およびコンポーネントの静的リスト1310は、アプリケーションサーバのエージェントにおいて提供されることが可能であり、そしてパフォーマンスモニタ1312は、一つまたはそれ以上のアプリケーションサーバにおいて一つまたはそれ以上のエージェントからパフォーマンスデータを受信するマネージャのコンピューティングに関連付けられることが可能である。パフォーマンスモニタ1312は、どのコンポーネントが問題のトランザクションに関与しているかの見解を提供し、これらのコンポーネントに問題があるのか、問題を起こし得るのか判断し、ユーザインタフェース1308上でこの情報を特定することができる。ユーザインタフェース1308は、例えば、どのコンポーネントが一時的に計測されるのかをユーザに手動で選択させることができる。コンポーネントの静的リスト1310は、アプリケーションの実行開始時に計測されるクラスまたは他のコンポーネントを含めることができる。これは、重要なデータを生成するはずであるコンポーネントのベースラインのリストにすることができる。コンポーネントは、コンポーネントがアプリケーションの実行時に既に組み込まれているかどうかに応じて異なる方法で再定義されることができる。コンポーネントがアプリケーションにまだ組み込まれていない場合には、一つの可能な実装として、クラスローダ1302によってJVMなどにロードされることで、正常に組み込まれ得る。例えば、NETフレームワークを使用するような他の実装においては、クラスローダは使用されない。コンポーネントがロードされると、命令があると、例えば、ユーザインタフェース1308、コンポーネントの動的リスト1306、コンポーネントの静的リスト1310およびパフォーマンスモニタ1312、に応答して、トランスフォーマ/プローブビルダ1300がそのコンポーネントを計測する。アプリケーションにすでに組み込まれているが未計測のコンポーネントは、計測を含んでアプリケーションに再組み込みされ得る。例えば、コンポーネントは、アプリケーションから削除することができるとともに、仮想マシンを再起動することなく実行中にリロードすることが可能である。これを達成するためには、JavaのredefineClassコマンドがコンポーネントによってクラスローダ1302に提供される。Java開発キットJDKバージョン1.5またはそれ以降のバージョンがこのコマンドを使用する再定義機能を備えている。このコマンドは、提供されたクラスファイルを使用して提供されたクラスのセットを再定義する。それは、2つ以上のクラスを同時にインターロック変更させるためにセットで動作する。また、再定義されたメソッドがアクティブなスタックフレームを有している場合には、これらのアクティブなフレームが元のメソッドのバイトコードの実行を続行し、再定義されたメソッドが新しい呼び出しで使用される。コンポーネントを例えばクラスのように再定義することは、クラスだけであるが、仮想マシンを再起動することに類似している。クラスが再定義されると、もしクラスが既存のメソッドスタックに存在するならば、そこにとどまる。しかし、すべての新しいメソッドが呼び出される場合には、新しいクラスが使用される。つまり、一旦、再定義されると、新しいバージョンがピックアップされる。トランスフォーマ/プローブビルダ1300は、再定義されたコンポーネントを受信する場合、もしそうするように命令されていたのであれば、コンポーネントを計測する。トランスフォーマ/プローブビルダ1300は、コンポーネントに特定の種類の計測を付加することも可能である。コンポーネントが一時的に計測されアプリケーションに再組み込みされた後、さらには計測が診断のために必要ではなくなると、そのコンポーネントは、再び、しかし一時的な計測を含まずにアプリケーションに再組み込みされる。この計測の削除は、特定された診断期間または他のある種のイベント後のタイムアウト、ユーザコマンド、に基づいて行われる。例えば、パフォーマンスモニタ1312は、コンポーネントのパフォーマンスデータが一定の時間期間に対して、あるいはコンポーネントの呼び出し数に対して許容されていると決めることができる。つまり、パフォーマンスモニタ1312は、計測されたメソッドの少なくとも一つのメソッドのパフォーマンスデータがもはや閾値パフォーマンスレベルに達していないという判定をすることができる。応答においては、パフォーマンスモニタ1312は、例えば、計測を削除するためのredefineClassのようなコマンドを発行することができる。計測の付加および削除は実行時に動的に行われるので、バイトコードを実行している仮想マシンはダウンさせる必要はなく、計測されたコンポーネントからのデータは直ちにアクセスされ得る計測を追加する場合。図14は、コンポーネント群とそれに対応したパフォーマンスデータの階層的関係を示すユーザインタフェース表示を示すものである。ユーザインタフェース1400は、一つまたはそれ以上の計測されたコンポーネントの名前を特定する表示領域1404を含む。ユーザは、表示領域1406内の計測に基づいたコンポーネントに対するトレースなどのパフォーマンスデータを表示するために表示領域1404の一つまたはそれ以上のコンポーネントを選択することができる。チェックボックスまたは他のインタフェースメカニズムが提供され、それによってユーザは、一時的に計測すべきクラス/メソッドまたは他のコンポーネントを特定することができる。ユーザは、例えば、コンポーネントがエラーに関与しているか否か、コンポーネント自身がエラーを起こしていないか、以前のトラブルシューティングの経験やその他の要因の観測に基づいて、あるコンポーネントに対して一時的に計測を付加すべきことを指示することができる。表示領域1404は、どのコンポーネントが別のコンポーネントの下にあるのか、または別のコンポーネントによって呼び出されるのかを示すツリーのような階層構造を使って、アプリケーション内の各コンポーネントを自動的に付加し得る。表示領域1406は、領域1404内のコンポーネントうち選択された一つについて、計測に基づいた計測されたコンポーネントのトランザクショントレースなどのパフォーマンスデータを表示している。例えば、コンポーネントC1、C5およびC5Aは、コンポーネント名がアンダーラインで示されているように、現在、ユーザによって選択されており、そして、対応するパフォーマンスデータ、例えば、トランザクショントレースが、領域1406における曲線1410、1412および1414によって提供される。領域1406には、エージェントからマネージャに提供されるパフォーマンスデータが付加され得る。以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、本発明の範囲を限定するものではない。上記した技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記した実施形態は、本発明の原理をベストに説明するために選定されたものであり、その実用に際しては、本発明が最適にその有用性を発揮するように、その特定用途に適するように当業者が様々に変形し得る。発明の範囲は、ここに添付した特許請求の範囲によって定められることを意図している。"