ターゲット・プローブ・オブジェクト

ターゲット・プローブ・オブジェクトは、プローブの適用対象となるクラスおよびメソッドを指定します。

ターゲット・オブジェクトはオプショナルです。 Target が指定されていない場合は、インスツルメンテーション・エンジンで処理されるすべてのクラスにプローブが適用されます。

ターゲット・オブジェクトを使用することで、パッケージ、クラス、およびメソッドの名前、およびメソッドのシグニチャーと突き合わせされるパターンに基づき、インスツルメンテーションにメソッドを含めたり除外するためのフィルター規則を作成できます。 パターンにはワイルドカードを含めることができます。ワイルドカードの「*」は、ゼロ以上の文字と一致します。

ターゲットのワイルドカード・パターンが、メソッドのパッケージ、クラス、名前、およびシグニチャーと一致する場合、type プロパティーによって、メソッドにプローブが装備されるか (include)、またはされないか (exclude) が決まります。 パターンがメソッドのパッケージ、クラス、名前、およびシグニチャーと一致しない場合は、デフォルトでそのメソッドは装備されます。

ターゲット・オブジェクトには、以下のプロパティーが含まれています。
プロパティー 説明
type 必須。type プロパティーにより、プローブをターゲット・メソッドに適用するかどうかが決まります。 ワイルドカード・パターンと一致するクラスおよびメソッドにプローブを適用するには include を、除外するには exclude を指定してください。
package オプショナル。クラス名のパッケージ部分と突き合わせるためのワイルドカード・パターンを指定します。たとえば、java.util* は、java.util パッケージおよびそのサブパッケージ内の各クラスと一致します。 これが指定されていない場合、デフォルト値は * です。
className オプショナル。クラス名と突き合わせるためのワイルドカード・パターンを指定します。 これが指定されていない場合、デフォルト値は * です。
method オプショナル。メソッド名と突き合わせるためのワイルドカード・パターンを指定します。 これが指定されていない場合、デフォルト値は * です。
signature オプショナル。メソッドのシグニチャー、つまり、メソッドの引数および戻りの型を表すストリングと突き合わせるワイルドカード・パターンを指定します。 これは、メソッド・シグニチャーの Java 内部フォーマットです。 たとえば、(Ljava/lang/Object;)D は、Object をパラメーターとして持ち、double を戻すメソッドのシグニチャーです。 このワイルドカード・パターンを使用すると、多重定義のメソッドを区別することができます。 これが指定されていない場合、デフォルト値は * です。

注:

  • プローブには、連続するターゲット規則を含む複数の Target オブジェクトを持たせることができます。 指定したメソッドのみをターゲットとするには、package=* className=* method=* signature=* type=exclude を指定する最後のターゲット・オブジェクトを、ターゲットにしたいメソッド用のターゲット・オブジェクトの後に追加します。
  • ターゲット・オブジェクトで指定されたパッケージ名およびクラス名は、クラスがインプリメントする任意のインターフェースのパッケージ名およびクラス名に対しても検査されます。 たとえば、java.util.HashMap はインターフェース java.util.Map を実装します。 あるプローブがパッケージ java.util、クラス名 Map、およびメソッド名 size をターゲットにする場合、そのプローブは、java.util.HashMap.size()、および Map インターフェースを実装するその他のクラスの size メソッドに適用されます。
  • パターン・マッチングでは、継承関係は考慮されません。つまり、クラス Derived がクラス Base を拡張し、かつプローブが Base.run() をターゲットとする場合でも、プローブが Derived.run() に自動的に適用されることはありません。
  • ターゲット・オブジェクト内のパッケージ・パターンが単一のピリオド文字の場合、それはグローバルの名前なし Java パッケージを表します。 これにより、グローバル・パッケージ内のクラスを明示的にターゲットとすることができます。 以下に例を示します。
    <target type="include" package="." class="SomeClass" method="*" />
    <target type="exclude" package="*" class="*" method="*" />
    これら 2 つのターゲット規則により、プローブは、グローバル・パッケージ内のクラス SomeClass をターゲットとし、その他のクラスをすべて除外します。 これらの規則によって、その他のパッケージに含まれる SomeClass というクラスは除外されます。
  • 呼び出し側プローブは、呼び出されるメソッドのパッケージ、クラス、名前、およびシグニチャーに対してターゲット・パターンおよび規則を突き合わせします。 突き合わせは、コンパイル時に認識されていた、呼び出し先メソッドに対して行われます。つまり、継承および仮想関数のために呼び出される実際のメソッドではなく、静的として認識されているクラス名およびメソッド名に対して突き合わせが実行されます。 インターフェース参照を介して呼び出しが行われる場合、そのインターフェース名が一致しなければなりません。
<target
  type="include"
  package="com.example"
  className="*Proxy"
  method="Get*"
/>

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

親トピック: Probekit 参照

Copyright IBM Corporation and others 2000, 2004.