août
2008
Depuis la version 5.0 de la plateforme Java 2 Standard edition, JMX est entièrement intégré dans l’API, et un outil qui s’appelle JConsole est fournit avec le JDK, il permet de gérer des MBeans dans des processus locaux, ou distants en utilisant un connecteur RMI.
Nous allons montrer pas-à-pas comment se fait l’administration d’une ressource grace à l’outil JConsole.
on a le MBean suivant :
public interface HelloMBean {
public void sayHello();
public int add(int x, int y);
public String getHelloWord();
public void setHelloWord(String value);
}
Et le code de la classe implémentant l’interface MBean.
public class Hello implements HelloMBean {
private String helloWord;
public int add(int x, int y) {
return x + y;
}
public String getHelloWord() {
return helloWord;
}
public void sayHello() {
System.out.println(helloWord);
}
public void setHelloWord(String value) {
helloWord = value;
}
}
voici le programme permettant d’enregistrer le MBean dans un MBeanServer et de creer un connecteur pour pouvoir l’adminstrer avec JConsole
try {
Hello h = new Hello();
h.setHelloWord("Bonjour");
LocateRegistry.createRegistry(9999);
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("Hello:type=HelloObject");
mbs.registerMBean(h, name);
JMXServiceURL url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:9999/server");
JMXConnectorServer cs =
JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
cs.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
On peut se connecter soit à un processus java locale en cours d’exécution, soit en fournissant une URL d’accès à un processus distant, dans le cas de cet exemple démonstratif on se connecte a un processus locale a l’aide d’une URL.
Une fois la connexion établit, dans l’onglet MBeans de JConsole, on trouve touts les MBeans enregistrés sur le serveur auquel on s’est connecté dans notre cas, on trouve HelloObject.
Une fois le MBean localisé, on peut accéder a ses attributs et éventuellement les changer s’il ne sont pas read-only, dans l’exemple démonstratif le MBean HelloObject a un attribut qui se nomme HelloWord qui a comme valeur « Bonjour ».
On peut également appeler les opérations que fournit un MBean, dans l’exemple démonstratif, on appelle la méthode add avec comme paramètres 5 et 6, elle retourne la valeur 11.
Voila! j’espere avoir été assez clair :P, pour vous familiariser avec JMX et les MBeans je vous conseille l’excellement tutoriel de chez sun ici
ceci est mon tout premier billet, n’hésitez pas a critiquez et commenter.