Objet de sonde Fragment

L'objet de sonde Fragment représente une spécification de la logique d'une sonde. Il comporte le code source Java qui sera exécuté.

Au moins un objet Fragment est obligatoire. Il contient l'objet Code et tous les éléments de données auxquels le code source fait référence dans celui-ci. Une sonde peut comporter plusieurs objets Fragment, mais chacun doit posséder un type unique.

L'objet Fragment inclut la propriété suivante :
Propriété Description
type Obligatoire. Pour les sondes de méthode, doit être entry, exit, catch, staticInitializer ou executableUnit. Pour les sondes de site d'appel, doit être beforeCall ou afterCall. Vous ne pouvez pas combiner des fragments méthode et des fragments de site d'appel dans une même sonde.
Le tableau suivant répertorie et décrit les types de fragments et il mentionne le type de sonde dans lequel chacun peut être employé :
Type de fragment Type de sonde Description
entry Méthode Les fragments entry s'exécutent à l'entrée de la méthode. Les fragments entry ne s'exécutent pas pour des méthodes insérées dans la classe par Probekit.
exit Méthode Les fragments exit s'exécutent à la sortie de la méthode : la sortie est normale lorsque la méthode lance une exception ou que l'exception lancée se propage hors de la méthode. Les fragments exit ne s'exécutent pas pour des méthodes insérées dans la classe par Probekit.
catch Méthode Les fragments catch s'exécutent au début d'une clause catch dans la méthode ou d'une clause finally s'exécutant comme résultat d'une exception.
staticInitializer Méthode Les fragments staticInitializer s'exécutent à l'intérieur de l'initialiseur de chaque classe sondée. Un initialiseur statique sera créé si la classe n'en possède pas. Pour en savoir plus, voir Le fragment de sonde staticInitializer.
executableUnit Méthode Les fragments executableUnit s'exécutent avant chaque unité exécutable de code dans les méthodes respectant la spécification de filtre et de cible de la sonde et pour lesquelles le code source est disponible. Si la méthode ne possède pas les informations source sur les lignes, elle inclura une seule unité exécutable numérotée zéro. Pour en savoir plus, voir Le fragment de sonde executableUnit.
beforeCall Site d'appel Les fragments beforeCall s'exécutent dans la méthode appelante, juste avant l'appel de la méthode cible. Non accepté pour des sondes de méthode.
afterCall Site d'appel Les fragments afterCall s'exécutent dans la méthode appelante, juste après la sortie de la méthode cible (sortie normale ou lorsque la méthode cible lance une exception). Non accepté pour des sondes de méthode.
Remarques :
  • Lorsque des sondes sont appliquées à des méthodes déclarées synchronisées, le code dans les fragments entry, exit et executableUnit n'est pas à coup sûr protégé contre une exécution simultanée de plusieurs unités d'exécution. Par exemple, un fragment entry et les premiers fragments executableUnit peuvent s'exécuter avant verrouillage de la logique de synchronisation de la méthode ; pour sa part, un fragment exit peut s'exécuter après la désactivation du verrouillage.
  • Une sonde peut comporter plusieurs fragments s'appliquant au même endroit dans une méthode. Par exemple, un fragment entry et le premier emplacement executableUnit. Autre exemple : un fragment catch et l'emplacement executableUnit associé, sachant que les clauses catch gérant les exceptions marquent toujours le début d'une nouvelle unité exécutable. Dans ces cas de figure, le code du fragment executableUnit s'exécute après celui du fragment entry ou catch. Par conséquent, les éventuels fragments entry s'exécuteront toujours avant d'autres types de fragments.
Exemple
<fragment type="entry"> 
   <data . . . />
   <code>
      . . . 
   </code>
</fragment>

Figurant dans
Objet de sonde

Rubrique parent : Référence Probekit

Concepts connexes
Différence entre les sondes de méthode et de site d'appel

Copyright IBM Corporation et autres 2000, 2004.