Probekit 使用下面这两组规则来确定是否要检测给定方法:一组规则是在探针定义的目标规范部分指定的规则,另一组规则是当您启动应用程序时“概要分析”对话框中被指定为过滤器的一组规则。即使您不明确指定目标规范和过滤器,它们也会影响是否将探针应用于给定方法。
要将探针应用于给定方法,这两组规则都必须将该方法标记为“包括”。
为了确定某一组规则是否包括该方法,Probekit 将按照每条规则的排列顺序逐一进行考虑,并且会针对该规则中的模式检查该方法的包名、类名和方法名。只要一出现匹配项,就会按规则将该方法标记为“包括”或“排除”。出现的第一个匹配项将确定该方法的结果;将不再检查其它规则。在每组规则末尾都具有一条隐式的“全部包括”规则,因此,如果一组规则是空的,或者没有任何规则的模式与该方法相匹配,则会包括该方法。
要探测特定方法或一组方法,可以使用目标规范、过滤器或者将这两者结合使用:
- 目标规范适合于打算始终调查特定方法或一组方法的探针。有关信息,请阅读探针目标规范。
- 当探针与它的目标之间的联系不是很紧密时,就适合使用过滤器。有关信息,请阅读收集探针数据:基本用法。
- 如果将目标规范与过滤器结合起来使用,则可以更灵活地应用探针。
例如,假定您要编写一个探针,用来收集关于在应用程序服务器上运行的 servlet 的信息。可以使用该探针的目标规范来指出只应将探针应用于 doPut 方法:

注意,这些目标规范不会限制应用探针的包或类,并且不会指定特征符。因此,该探针可以收集运行的每个类中每个 doPut 方法的数据。
但是,对于给定的任何运行,通常您想只收集特定类(例如,myServlet 类)中的 doPut 方法的数据。为此,您需要在启动应用程序时,在“概要分析”对话框中设置一个过滤器:

在设置了此过滤器之后,加上在该探针中指定的目标规则的共同作用,该运行将收集您想调查的特定 doPut 方法的信息。当您启动探针时,可以通过在过滤器中指定不同的类,来对其它 doPut 方法复用该探针。