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

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

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

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

親トピック: Probekit エレメント参照

関連資料
Probekit の例
executableUnit プローブ・フラグメント
staticInitializer プローブ・フラグメント

使用条件 | フィードバック
(C) Copyright IBM Corporation 2004. All Rights Reserved. (C) Copyright IBM Japan 2004