article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
P ratique<br />
Cliquez « Next » puis « Finish ».<br />
Nous avons ainsi accès à l’instrumentation technique <strong>de</strong> la JVM :<br />
Il est dès lors possible d’écouter, et éventuellement modifier, <strong>de</strong>s paramètres<br />
comme les suivants :<br />
• Memory pools (références objet courtes et longues)<br />
• Threads<br />
Programmez n°85 63 avril 2006<br />
• Nombre <strong>de</strong> classes chargées en mémoire, statistiques sur le temps pris<br />
par la machine virtuelle pour compiler le byte co<strong>de</strong>, statistiques sur le<br />
système d’exploitation (temps CPU, swap, IOs etc.)<br />
Expérimentez vous-même les autres nombreuses possibilités offertes<br />
par JMX.<br />
L’instrumentation fonctionnelle<br />
L’instrumentation technique est intéressante lorsque le problème survenant<br />
dans une application est d’origine technique, mais bien souvent<br />
les problèmes sont fonctionnels. Lors <strong>de</strong>s situations d’origine fonctionnelle<br />
et il est important <strong>de</strong> remonter <strong>de</strong>s messages d’erreurs fonctionnels<br />
plutôt que leurs conséquences techniques aux utilisateurs et<br />
équipes <strong>de</strong> support. C’est la clef pour pouvoir résoudre les problèmes<br />
rapi<strong>de</strong>ment. Prenons notre horloge fonctionnant comme un serveur.<br />
Nous consulterons le temps via JMX.<br />
Mais voyons d’abord le co<strong>de</strong> source <strong>de</strong> notre serveur horloger :<br />
import java.lang.management.ManagementFactory;<br />
import javax.management.MBeanServer;<br />
import javax.management.ObjectName;<br />
public class Chrono implements ChronoMBean {<br />
private long secon<strong>de</strong>s = 0;<br />
private boolean continuer = false;<br />
private synchronized boolean continuer() {<br />
return continuer;<br />
}<br />
public void run() {<br />
Niveau<br />
java facile avancé expert<br />
long premierTick = System.currentTimeMillis();<br />
long prochainTick = premierTick; // init.