Projet PJEM
Projet de Programmation Java Embarqué

Tutorial JMX

Projet de M2PGI option SLE

Année Universitaire 2005-2006

Université Joseph Fourier

 

Contributeur(s) étape : Didier Donsez

Encadrement M2PGI/SLE 2005-2006 : Didier Donsez, Cristina Marin

PLAN

1      Objectif 1

2      JMX (Java Management eXtension) 1

3      Tutoriel JMX.. 2

3.1       JMX en standalone. 3

3.2       JMX avec JOnAS. 3

3.3       JMX avec OSGi 3

3.4       JMX avec ANT. 4

4      Réalisation JMX.. 4

5      Documentation. 4

 

1      Objectif

Ce tutoriel consiste à permettre l’administration et la supervision des passerelles OSGi et des serveurs J2EE de l’application SensorBean.

Pour cela, vous vous appuierez sur l’API JMX disponible dans le JDK 5.0.

2      JMX (Java Management eXtension)

JMX (Java Management eXtension) est un service de supervision et d’administration d’applications Java qui s’inspire de SNMP qui est le protocole d’administration de nœuds IP. JMX permet de superviser et d’administrer des ressources matérielles accessibles depuis une JVM comme des ressources logiciels s’exécutant sur une JVM. L’instrumentation des ressources se fait au moyen de composants appelés MBean (Manageable Bean). La spécification JMX définit l’ensemble des interfaces et classes nécessaires à cette instrumentation.

L’interaction avec les MBeans peut suivre le modèle Pull pour lire et changer la configuration des applications (par exemple, récupérer des statistiques, l’usage des ressources, …) ou bien suivre le modèle Push pour notifier des événements (par exemple, signaler des problèmes, des fautes, des changements d’état, …).

L’architecture JMX comporte 3 niveaux (voir figure 1) :

Les MBeans exposent une interface d’administration comportant un ensemble d’attributs consultables et/ou modifiables et un ensemble des opérations invocables. Il existe quatre types de MBean : standard MBeans, dynamic MBeans, open MBeans et model Mbeans. Un standard MBean a une interface qui est définit statiquement. Le nom de l’interface implémentée doit être préfixé pour le nom de la classe d’implémentation et suffixé par « MBean ». Un dynamic MBean permet d’exposer dynamiquement ses attributs et ses opérations. La classe d’implémentation doit implémenter l’interface DynamicMBean.

Un MBean peut notifier des changements en implémentant l’interface NotificationBroadcaster.

Un MBean peut récupérer la référence du MBeanServer qui l’enregistre en implémentant l’interface MBeanRegistration. Les adaptateurs sont généralement des MBeans enregistrés qui implémentent cette interface.

Les platform MBeans (appelés MXBeans) qui ont été introduit dans la plateforme Java 5.0, sont des MBeans instrumentant la JVM : ils décrivent le système de chargement des classes, la compilation JIT, le ramasse-miette, les loggers, les threads, du système d’exploitation …

Initialement adopté par la communauté J2EE, la spécification JMX fait partie désormais de la Java Platform depuis la version 5.0. Des implémentations alternatives de JMX sont disponibles pour instrumenter des applications J2SE antérieure à J2SE 5.0. MX4J http://mx4j.sf.net est l’une d’entre elles. Elle est d’ailleurs embarquée par JOnAS quand il s’exécute sur des plateformes Java antérieures à 5.0.

architecture à 3 niveaux de JMX

Figure 1 : Architecture à 3 niveaux de JMX.

3      Tutoriel JMX

3.1    JMX en standalone

Testez et comprenez les exemples JMX fournis dans le répertoire.

Utilisez la console JMX JConsole.exe (http://java.sun.com/j2se/1.5/docs/guide/management/jconsole.html) fournie dans le JDK 5.0 pour butiner les MBeans enregistrés sur les MBeanServers des exemples. Vous pourrez utiliser également la console concurrente MC4J http://mc4j.sf.net

Remarque : la console SNMP vu en TP Réseaux par les étudiants de l’option SRR peut servir à parcourir la MIB de la machine virtuelle de vos serveurs via l’adaptateur (voir le JSR 163.et également http://java.sun.com/j2se/1.5.0/docs/guide/management/SNMP.html)

3.2    JMX avec JOnAS

Les serveurs J2EE sont administrables via JMX. Les services sont représentés par des MBeans qui ont été en partie standardisé par le JSR77 (J2EE Management Specification).

Vous pourrez vous connecter au moyen de la JConsole sur les connecteurs JMX publiés par vos serveurs JOnAS (La JMXServiceURL est service:jmx:rmi:///jndi/rmi://hostname:1099/jrmpconnector_jonas).

3.3    JMX avec OSGi

Le bundle JMXAgent [http://www-adele.imag.fr/~donsez/dev/osgi/jmxagent/readme.html] embarque un MBeanServer sur lequel il enregistre automatiquement tout service dont le nom de l’interface est compatible avec celle d’un MBean (standard ou dynamic) (voir figure 2). Il peut démarrer ou arrêter des connecteurs RMI. Il peut également enregistrer des adaptateurs JMX (pour http/HTML et SNMP). JMXAgent est lui-même administrable via son AgentMBean.

Plusieurs exemples de bundles fournissant MBeans et adaptateurs sont disponibles et peut être testés au moyen du script http://www-adele.imag.fr/~donsez/dev/osgi/script/jmxagent.txt

La présentation http://www-adele.imag.fr/~donsez/dev/osgi/jmxagent/jmxosgi.pdf présente les détails du JMXAgent.

 

Figure 2 : architecture de services du JMXAgent

3.4    JMX avec ANT

Utilisez les tâches JMX de Catalina (Apache TomCat) pour automatiser les interactions avec les MBeanServers de vos passerelles et de vos serveurs (déploiement des bundles, …). Pour cela , vous pouvez tester l’exemple se trouvant dans le répertoire exemples\jmx\jmxant de la distribution du projet.

4      Réalisation JMX

Il vous sera demandé pour vos extensions à SensorBean d’offrir un service MBean pour chaque bundle ayant un besoin de configuration ou produisant des statistiques (par exemple, pour la configuration des ports série, …).

Pour cela, vous vous inspirerez de bundle http://www-adele.imag.fr/~donsez/dev/osgi/hellombean .

Vous pourrez écrire des MBeans utilisant les types

5      Documentation

Pour comprendre JMX, vous pouvez vous reporter