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
2 JMX (Java
Management eXtension)
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.
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
Initialement adopté par la communauté J2EE, la spécification
JMX fait partie désormais de
Figure 1 : Architecture à 3 niveaux de JMX.
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
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 service:jmx:rmi:///jndi/rmi://hostname:1099/jrmpconnector_jonas
).
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
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.
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
Pour comprendre JMX, vous pouvez vous reporter