フラグメント・プローブ・オブジェクト

フラグメント・プローブ・オブジェクトは、プローブのロジックを指定します。 これには、実行される Java ソース・コードが含まれます。

フラグメント・オブジェクトは、少なくとも 1 つ必要です。 ここには Code オブジェクトと、Code オブジェクト内のソース・コードによって参照されるすべてのデータ項目が含まれます。 1 つのプローブに複数のフラグメント・オブジェクトを含めることができますが、2 つのフラグメント・オブジェクトを同じタイプにすることはできません。

フラグメント・オブジェクトには、以下のプロパティーが含まれています。
プロパティー 説明
type 必須。メソッド・プローブの場合、これは entryexitcatchstaticInitializer、または executableUnit でなければなりません。 呼び出し側プローブの場合、これは beforeCall または afterCall でなければなりません。 1 つのプローブ内でメソッド・フラグメントと呼び出し側フラグメントを両方使用することはできません。
以下の表は、フラグメント・タイプのリストとその説明し、および各フラグメント・タイプを使用できるプローブのタイプを示します。
フラグメント・タイプ プローブ・タイプ 説明
entry メソッド entry フラグメントは、メソッドの開始時に実行されます。 entry フラグメントは、Probekit によってクラスに挿入されたメソッドでは実行されません。
exit メソッド exit フラグメントは、メソッドの終了時に実行されます。正常終了したとき、メソッドが例外をスローしたとき、あるいはスローされた例外がメソッドの外に波及したときの、いずれの場合にも実行されます。 exit フラグメントは、Probekit によってクラスに挿入されたメソッドでは実行されません。
catch メソッド catch フラグメントは、メソッド内の catch 文節の最初、または例外の結果として実行される finally 文節の最初で実行されます。
staticInitializer メソッド staticInitializer フラグメントは、各プローブ済みクラスのクラス・イニシャライザーの内部で実行されます。 クラスにまだ静的イニシャライザーがない場合は、新たに作成されます。 詳しくは、『staticInitializer プローブ・フラグメント』を参照してください。
executableUnit メソッド executableUnit フラグメントは、プローブのターゲットおよびフィルター指定と一致し、ソース・コードが使用可能なメソッド内の、コードの各実行可能単位の前に実行されます。 メソッドにソース行情報がない場合、番号 0 の実行可能単位が 1 つのものとして表示します。 詳しくは、『executableUnit プローブ・フラグメント』を参照してください。
beforeCall 呼び出し側 beforeCall フラグメントは、ターゲット・メソッドが呼び出される直前に、呼び出し元メソッドで実行されます。 メソッド・プローブでは無効です。
afterCall 呼び出し側 afterCall フラグメントは、ターゲット・メソッドが終了した直後に、呼び出し元メソッドで実行されます。正常終了した場合、またはターゲット・メソッドが例外をスローした場合に実行されます。メソッド・プローブでは無効です。
注:
  • synchronized と宣言されているメソッドにプローブを適用するとき、entryexit、および executableUnit フラグメント内のコードが複数のスレッドで同時実行される場合に保護が保証されません。 たとえば、entry フラグメントと、executableUnit フラグメントの最初のいくつかが、メソッドの同期ロジックでロックを取得する前に実行される可能性があります。また、exit フラグメントが、ロックが解放された後で実行される可能性もあります。
  • プローブには、メソッド内の同じロケーションに適用する複数のフラグメントを持たせることができます。たとえば、entry フラグメントと最初の executableUnit のロケーションです。 また、例外処理の catch 文節は常に新しい実行可能単位の始まりを表すため、catch フラグメントとその関連の executableUnit のロケーションも、もう 1 つの例として挙げられます。 これらの場合、executableUnit フラグメントのコードは、entry または catch フラグメントのコードの で実行されます。 これにより、entry フラグメントがある場合、それは常に、その他の種類のフラグメントの前に実行されます。
<fragment type="entry">
   <data . . . />
   <code>
      . . . 
   </code>
</fragment>

上位オブジェクト
プローブ・オブジェクト

親トピック: Probekit 参照

関連概念
メソッド・プローブ対呼び出しサイト・プローブ

Copyright IBM Corporation and others 2000, 2004.