Target 探针对象

Target 探针对象是将要应用探针的类和方法的说明。

Target 对象是可选的。当未指定 Target 对象时,将把探针应用于由检测引擎处理的所有类。

Target 对象允许您创建过滤规则,以便根据与包、类、方法名以及方法的特征符相匹配的模式来确定检测操作是包括还是排除方法。这些模式可以包含通配符,其中“*”将代表零个或多个字符。

如果 Target 的通配符模式与方法的包、类、名称和特征符相匹配,则类型属性将确定是检测(include)还是不检测(exclude)该方法。如果这些模式与方法的包、类、名称和特征符不匹配,则缺省情况下将检测该方法。

Target 对象包括下列属性:
属性 描述
类型 必需。类型属性确定是否将探针应用于目标方法。指定 include 以将探针应用于与通配符模式相匹配的类和方法,指定 exclude 则排除这些类和方法。
可选。指定要与类名的包部分匹配的通配符模式。例如:java.util* 将与 java.util 包和它的子包中的每个类匹配。如果未指定此属性,则缺省值为 *
类名 可选。指定要与类名匹配的通配符模式。如果未指定此属性,则缺省值为 *
方法 可选。指定要与方法名匹配的通配符模式。如果未指定此属性,则缺省值为 *
特征符 可选。指定要与方法的特征符(即,一个表示方法的自变量和返回类型的字符串)匹配的通配符模式。这是方法特征符的 Java 内部格式。例如:(Ljava/lang/Object;)D 是将 Object 作为参数并返回 double 类型的方法的特征符。此通配符模式可用来区分重载方法。如果未指定此属性,则缺省值为 *

注意:

  • 探针可以具有多个包含连续的确定目标规则的 Target 对象。要仅将您指定的方法作为目标,则在想要作为目标的方法的 Target 对象后面添加指定 package=* className=* method=* signature=* type=exclude 的最终 Target 对象。
  • 还将针对类实现的任何接口的包和类名来检查在 Target 对象中指定的包和类名。例如,java.util.HashMap 实现接口 java.util.Map。如果探针将包 java.util、类名 Map 和方法名 size 作为目标,则该探针将应用于 java.util.HashMap.size(),还会应用于实现 Map 接口的任何其它类的 size 方法。
  • 模式匹配不会考虑继承关系:如果 Derived 类继承 Base 类,并且探针将 Base.run() 作为目标,则该探针不会自动应用于 Derived.run()
  • 如果 Target 对象中的包模式是一个句点符号(“.”),则它表示未命名的全局 Java 包。这允许您显式地将全局包中的类作为目标。例如:
    <target type="include" package="." class="SomeClass" method="*" />
    <target type="exclude" package="*" class="*" method="*" />
    这两个目标规则导致探针将全局包中的 SomeClass 类作为目标,而排除所有其它类。通过这些规则,将排除任何其它包中称为 SomeClass 的类。
  • 调用位置探针将目标模式和规则与已调用方法的包、类、名称和特征符进行匹配。匹配操作是针对编译时已知的已调用方法来完成的;即,针对静态已知的类和方法名,而不是由于继承和虚函数将调用的实际方法。如果调用是通过接口引用完成的,则接口名称必须匹配。
示例
<target
  type="include"
  package="com.example"
  className="*Proxy"
  method="Get*"
/>

包含于
Probe 对象

上级主题: Probekit 参考

Copyright IBM Corporation and others 2000, 2004.