Exercice 1.5 : Utilisation d'une bibliothèque d'exécution pour une logique de sondes plus complexe

Avant de commencer, nous vous conseillons de lire l'Exercice 1.4 : Création de sondes plus avancées.

Probekit vous permet de créer facilement des sondes simples avec des fragments de code Java simples. Comme vous l'avez vu dans l'exercice 1.4, vous pouvez même faire des choses compliquées avec des sondes de base. Toutefois, il arrive que vous ayez besoin de faire quelque chose de vraiment complexe, auquel cas une sonde simple ne suffit pas. Dans ce cas, au lieu de tenter d'insérer toute la logique que vous voulez exécuter dans des fragments de sonde, vous pouvez créer une "bibliothèque de support d'exécution" pour vos sondes. Vos fragments de sonde peuvent alors appeler des éléments de cette bibliothèque, qui est le pivot de l'action.

Si vous décidez d'utiliser une bibliothèque d'exécution, il est parfois nécessaire d'appeler ses méthodes par réflexion. En effet, les classes de sonde générées sont chargées par le chargeur de classes d'amorçage et ne peuvent pas accéder directement à celles chargées par le chargeur de classes système.

Voici un exemple de fragment "entry" qui appelle une méthode entryHandler de la bibliothèque d'exécution :

Supposons que vous vouliez appeler une classe com.sample.ProbeSupport avec une méthode statique entryHandler et que la méthode entryHandler n'accepte aucun argument. Supposons également que la classe puisse être chargée par le chargeur de classes système.

try {
  String className = "com.sample.ProbeSupport";
  ClassLoader sysLoader = ClassLoader.getSystemClassLoader();
  Class cls = Class.forName(className, true, sysLoader);
  java.lang.reflect.Method mth = cls.getMethod("entryHandler", null);
  mth.invoke(null, null);
}
catch (Throwable t) {
  System.out.println("Probe error while attempting reflection:");
  t.printStackTrace();
}

Pour gagner du temps à chaque appel, vous pouvez utiliser le fragment au niveau de classe pour déclarer un objet statique java.lang.reflect.Method et l'initialiser une seule fois.

Terminez ce tutoriel en passant en revue les objectifs de formation, dans la section Résumé.

Conditions d'utilisation | Appréciations en retour
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.