02.07.2013 Views

article de presse - Cap Data Consulting

article de presse - Cap Data Consulting

article de presse - Cap Data Consulting

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!