Guillaume VIEL :: java jee tomcat linux

Aller au contenu | Aller au menu | Aller à la recherche

samedi 2 octobre 2010

Spring AOP : trouver le bon pointcut avec la stack trace

Il est parfois difficile d'identifier le bon endroit pour une "coupe" (pointcut), et il ne faut pas perdre de vue qu'une méthode protected ne pourra jamais être interceptée par Spring AOP.

J'ai donc écris ce bout de code pour me faciliter la tâche et identifier plus aisément quelle pourrait être la méthode déclarée en public et donc candidate au pointcut.

Ce code est à placer dans la méthode qui sera appelée en dernier dans le fil d'exécution afin d'avoir une liste complète des méthodes pouvant être interceptée

        // récupération d'une trace de la pile pour notre thread courant
StackTraceElement[] stack = Thread.getAllStackTraces().get(Thread.currentThread());

for(StackTraceElement ste : stack) { // on parcourt la pile
// on parcours la liste de toutes les méthodes pour la classe
// trouvée dans la stack trace et l'on vérifie si la méthode
// utilisée dans la stacktrace est bien publique
Method[] methods = Class.forName(ste.getClassName()).getMethods();
for(Method m : methods) {
if(m.getName().equals(ste.getMethodName())) {
if(Modifier.isPublic(m.getModifiers()) ) {
logger.debug( ste.getClassName() + "." + ste.getMethodName() );
}
}
}
}

mardi 18 mars 2008

Monitoring JVM Sun avec jvmstat et VisualGC

Sun propose quelques outils pour monitorer la JVM : jstatd, jvmstat et visualGC. Cela reste rudimentaire par rapport à d'autres outils comme jconsole mais cela a le mérite d'exister! Le principal intérêt d'utiliser encore cet outil est qu'il fonctionne pour les vieilles JVM version 1.4! Cet outil n'est pas packagé directement dans le JDK. Voici comment mettre en place cette techno rapidement en Java 1.4, Java 5 ou Java 6 entre une machine linux sur laquelle réside l'application java à monitorer et un poste de travail windows ou linux

Lire la suite...