GICOM
Application de commerce électronique

Etape 7: Administration et supervision des serveurs

Projet de M2GI option SRR et RICM3 option SR

Année Universitaire 2005-2006

Université Joseph Fourier

 

Contributeur(s) étape : Didier Donsez

Encadrement M2GI/SRR : Didier Donsez, Sara Bouchenak

Encadrement RICM3/SR : Pierre-Yves Gibello, Maxime Martinasso

 

Dernière mise à jour : 17/01/2006

 

PLAN

1      Objectif 1

2      JMX (Java Management eXtension) 1

3      Réalisation. 3

3.1       Préliminaires. 3

3.2       Instrumentation simple des serveurs CORBA.. 3

3.3       Réalisation du déploiement dynamique des servants. 4

3.4       Réalisation d’un adaptateur pour IIOP. 4

3.5       Sécurisation de l’administration et du déploiement 4

3.6       JMX avec ANT. 4

3.7       MEJB.. 4

4      Documentation. 4

 

1      Objectif

L'étape 7 consiste à permettre l’administration et la supervision des serveurs (CORBA) de l’application GICOM. 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      Réalisation

3.1    Préliminaires

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

Vous pourrez aussi vous connecter sur les connecteurs JMX de vos serveurs JOnAS (La JMXServiceURL est service:jmx:rmi:///jndi/rmi://hostname:1099/jrmpconnector_jonas) pour explorer les managed objects d’un serveur J2EE conformément au JSR 77.

Remarque : la console SNMP vu en TP Réseaux 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    Instrumentation simple des serveurs CORBA

Lisez premièrement le chapitre 21 « Using Java Management Extentions (JMX) » du guide de programmation de JacORB (%JACORB_HOME%\doc\ProgrammingGuide\ProgrammingGuide.pdf

Cette sous-étape consiste à ajouter un MBeanServer à votre GenericServer CORBA. Ce MBeanServer sera pourvu de connecteurs et d’adaptateurs qui seront activés au démarrage à partir d’un fichier d’initialisation.

Vous utiliserez ensuite le MBeanServer pour superviser quelques éléments notoires de vos serveurs (POA, POM, Intercepteur). Vous définirez pour chacun de ces éléments un MBean permettant des récupérer des statistiques diverses et variées (A vous de les imaginer !)

Vous pourrez écrire des MBeans utilisant les types

3.3    Réalisation du déploiement dynamique des servants

Cette sous-étape consiste à implémenter le déploiement dynamiques des servants. Les servants pourront être déployer dynamiquement à partir d’archives présentes sur Internet. Pour cela, vous utiliserez les MLet à la façon de JBoss.

3.4    Réalisation d’un adaptateur pour IIOP

Cette sous-étape consiste à réaliser un adaptateur IIOP. Pour cela, vous définirez l’interface IDL de cet adaptateur afin de pourvoir faire l’essentiel des opérations que permet de faire un connecteur. Ensuite, vous implémenterez cet adaptateur au moyen d’un dynamic MBean qui implémente l’interface MBeanRegistration pour pouvoir récupérer la référence du MBeanServer. Vous testerez cet adaptateur en écrivant un client simple (de type Shell ou GUI) permettant d’explorer les MBeans enregistrés sur le MBeanServer.

3.5    Sécurisation de l’administration et du déploiement

Activez la sécurité pour les connecteurs et n’autorisez que le déploiement d’archives signées.

3.6    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.

3.7    MEJB

Pour terminer cette étape, vous pourrez regarder rapidement l’exemple j2eemanagement qui est dans le répertoire examples de JOnAS. Cet exemple illustre l’usage de MEJB pour explorer les managed objects d’un serveur J2EE. Un MEJB peut être perçu comme un adaptateur JMX. Ils sont spécifiés par le JSR 77.

4      Documentation

Pour comprendre JMX, vous pouvez vous reporter