Oggetto probe Target

L'oggetto probe Target è una specifica delle classi e dei metodi a cui il probe dovrebbe essere applicato.

L'oggetto Target è facoltativo. Quando non si specifica alcun oggetto Target, il probe verrà applicato a tutte le classi che sono state elaborate dal motore di strumentazione.

L'oggetto Target consente di creare regole filtro per includere o escludere metodi dalla strumentazione sulla base di modelli che vengono confrontati con il nome di un pacchetto, di una classe e di un metodo e, infine, con la firma del metodo. I modelli possono contenere caratteri jolly, dove "*" corrisponderà a zero o più caratteri.

Se i modelli con caratteri jolly di un oggetto Target corrispondono a un pacchetto, una classe, un nome oppure ad una firma del metodo, la proprietà type determina se il metodo viene dotato di probe (include) o meno (exclude). Se i modelli non corrispondono al pacchetto, alla classe, al nome e alla firma del metodo, per impostazione predefinita, il metodo viene dotato di probe.

L'oggetto Target include le seguenti proprietà:
Proprietà Descrizione
type Obbligatoria. La proprietà type determina se un probe viene applicato o meno a un metodo di destinazione. Specificare include per applicare il probe a classi e metodi che corrispondono ai modelli con caratteri jolly exclude per escluderli.
package Facoltativa. Specificare un modello con carattere jolly da confrontare con la parte relativa al pacchetto dei nomi delle classi. Ad esempio: java.util* corrisponderà a tutte le classi nel pacchetto java.util e nei relativi sottopacchetti. Se non specificato, il valore predefinito è *.
className Facoltativa. Specifica un modello con carattere jolly da confrontare con i nomi delle classi. Se non specificato, il valore predefinito è *.
method Facoltativa. Specificare un modello con carattere jolly da confrontare con i nomi dei metodi. Se non specificato, il valore predefinito è *.
signature Facoltativa. Specificare un modello con carattere jolly da confrontare con la firma di un metodo, ossia la stringa che rappresenta gli argomenti e il tipo di ritorno del metodo. È questo un formato interno Java utilizzato per le firme dei metodi. Ad esempio: (Ljava/lang/Object;)D è la firma di metodo che accetta un Object come parametro e che restituisce un tipo double. Questo modello con carattere jolly può essere utilizzato per distinguere i metodi sovraccaricati. Se non specificato, il valore predefinito è *.

Note:

  • un probe può disporre di più oggetti Target che contengono regole di destinazione consecutive. Per destinare solo i metodi specificati, aggiungere un oggetto Target finale che specifica package=* className=* method=* signature=* type=exclude dopo l'oggetto Target per i metodi che si desidera destinare.
  • I nomi della classe e del pacchetto specificati in un oggetto Target vengono confrontati anche con il nome della classe e con quello del pacchetto di qualunque interfaccia implementata da una classe. Ad esempio, java.util.HashMap implementa l'interfaccia java.util.Map. Se un probe destina il pacchetto java.util, il nome della classe Map e il nome del metodo size, il probe verrà applicato a java.util.HashMap.size() e al metodo size di tutte le altre classi che implementano l'interfaccia Map.
  • Il modello corrispondente non considera le relazioni di ereditarietà: se la classe Derived estende la classe Base e un probe destina Base.run(), il probe non verrà automaticamente applicato a Derived.run().
  • Se il modello del pacchetto in un oggetto Target è a singolo punto ("."), rappresenta l'intero pacchetto Java, senza nome. In tal modo, è possibile destinare esplicitamente le classi nell'intero pacchetto. Ad esempio:
    <target type="include" package="." class="SomeClass" method="*" />
    <target type="exclude" package="*" class="*" method="*" />
    Queste due regole di destinazione fanno sì che il probe destini la classe SomeClass nell'intero pacchetto, ma escludendo tutte le altre classi. Sulla base di queste regole, una classe chiamata SomeClass e che si trova in un altro pacchetto, viene esclusa.
  • I probe callsite confrontano i modelli e le regole di destinazione con il pacchetto, la classe, il nome e la firma di un metodo richiamato. Il confronto viene eseguito con il metodo richiamato così come era noto al momento della compilazione, ossia con i nomi della classe e del metodo noti in maniera statica, non con i metodi reali che verranno richiamati a causa delle funzioni di ereditarietà e virtuali. Se la chiamata viene effettuata attraverso un riferimento dell'interfaccia, il nome dell'interfaccia deve corrispondere.
Esempio
<target
  type="include"
  package="com.example"
  className="*Proxy"
  method="Get*"
/>

Contenuto in
Oggetto Probe

Argomento principale: Informazioni di riferimento su Probekit

Copyright IBM Corporation e altri 2000, 2004.