プローブには、メソッド・プローブおよび Callsite プローブの 2 種類があります。
メソッド・プローブは、ターゲット・メソッドの本体に挿入されます。メソッド・プローブの場合、バイトコード・インスツルメンテーション (BCI) エンジンが、ターゲット・メソッドを含むクラスまたは JAR ファイルを装備します。
Callsite プローブは、ターゲット・メソッドを呼び出すすべてのメソッドの本体に挿入されます。すなわち、Callsite プローブは、呼び出しサイトで、呼び出し先メソッドではなく、呼び出し側メソッドに挿入されます。 Callsite プローブの場合、BCI エンジンは、ターゲット・メソッドを呼び出す メソッドを含んでいるクラスまたは JAR ファイルを装備します。
多くの場合、ユーザーのプロジェクトからシステム・ライブラリーに対する呼び出し、あるいはプロジェクト外のその他のサポート・クラスに対する呼び出しをモニターしたい場合に、呼び出し側プローブが使用されます。ターゲットにしたいメソッドを含んでいるクラス・ファイルの装備が難しいか、不可能な場合にも、Callsite プローブは有用です。
プローブが、メソッド・プローブであるか Callsite プローブであるかは、プローブのフラグメント型に依存します。プローブ・フラグメント型の注釈付きリストについては、『プローブ・フラグメント型』を参照してください。
Probekit ソース・ファイル (probe ファイル) には、メソッド・プローブと Callsite プローブの両方を組み込むことができます。ただし、個々のプローブには、メソッドおよび Callsite プローブ・フラグメントを混在させて組み込むことはできません。 プローブ内のすべてのプローブ・フラグメントは、同じカテゴリーになっている必要があります。