JMX (Java Management eXtensions)JMX (Java Management Extensions) est une spécification de Sun fournie à travers le JCP (Java Community Process) qui permet d’administrer à distance des applications Java, mais également des équipements d’administration de réseau (firewall, routeur,...). Cette spécification se décompose en trois niveaux décrits ci-dessous :
Le niveau instrumentation : les MBeans Au sein de cette architecture, les Mbeans représentent la brique de base et constituent en fait des interfaces de communication avec les éléments physiques (qu’ils soient locaux ou distants) ou les programmes gérés à travers JMX. Ces divers éléments sont appelés ici les ressources gérées. Cette couche d’instrumentation peut être par ailleurs définie de manière complètement indépendant des autres couches de la spécification. Les Mbeans sont des classes Java correspondant à la définition des JavaBeans. Les JavaBeans sont des classes Java pour lesquels un certain nombre de propriétés peuvent être vues à distance à travers des interfaces clairement spécifiées. Par exemple, si un JavaBean souhaite mettre à disposition une propriété de bean level, il suffit pour le développeur d’implémenter les méthodes : // pour changer la valeur de level
Il est important de bien saisir que la manière dont est stockée la variable level dans le JavaBean est indifférente. Il peut très bien ne pas y avoir de level sans que cela perturbe la mise en place du bean. Ceci n’est que l’aspect le plus élémentaire des JavaBeans. Il est également possible de gérer de cette manière des collections d’objets, ou des propriétés qui soient elles-mêmes des objets. Cette définition ne convient cependant que dans le cas des Mbeans standard, qui fournissent un jeu de propriétés constant durant l’exécution de l’application. Les Mbeans dynamiques, eux, voient leurs propriétés évoluer au cours du temps, non seulement en valeur, mais également par leur définition. Par exemple, un Mbean masquant un composant Java de persistance évolué pourra disposer à un instant de propriétés lui permettant de gérer une base de donnée objet, puis des propriétés dédiées à la gestion d’une base de donnée relationnelle, tout en restant utilisable dans un agent ou une interface complexe. Ceci est possible en utilisant, comme implémentation standard de Mbean dynamique, le MbeanModel, ou en définisssant une classe de Mbean dynamique implémentant l’interface DynamicMBean. On reste cependant ici dans le cas de composants objets accessibles en tant que JavaBeans, de manière locale ou distante. Utiliser les Mbeans sans en passer par la couche agent ne présente qu’un intéret relatif. La couche agent : le MbeanServer La couche agent de la spécification permet de gérer des Mbean, mais également de fournir des adaptateurs de protocoles permettant d’accéder à cette couche depuis des clients, comme par exemple depuis un client HTML. Au sein de cette couche, un composant, standardisé par JMX, a un rôle essentiel. Il s’agit du MbeanServer. Ce serveur permet d’enregistrer des Mbeans, de les explorer, et de les exploiter de manière locale ou à distance. Au sein d’un MbeanServer, chaque Mbean est connu sous un nom unique. Ce MbeanServer permet donc d’agréger les informations fournies par les différents Mbeans pour qu’elles soient exploitées, soit par la logique spécifique de l’agent, soit par les différents connecteurs et services associés. Cette logique est la partie codée par le développeur. C’est celle-ci qui va fournir toute l’intelligence de l’agent en programmant, par exemple, des actions telles que le changement de base de persistance si une base de données est surchargée, ou encore, dans le cadre plus spécifique d’une gestion de cluster, l’arrêt de Mbeans dont la présence n’est plus utile. La couche agent fournit par spécification un certain nombre de services, qui peuvent être implémentés sous forme de Mbeans. Ces services comprennent :
Les connecteurs de protocoles permettent, en utilisant l’architecture des connecteurs J2EE, à l’agent de communiquer avec un protocole donné. En effet, de lui même, un agent ne dispose pas de capacités de communication. En utilisant un connecteur, un agent JMX peut ainsi obtenir des capacités de communication CORBA, SNMP, HTTP, ... Par défaut, un adaptateur est fourni pour le HTML, qui permet de disposer, pour n’importe quel agent JMX, d’une console d’administration accessible depuis un navigateur internet. C’est sur ce principe que fonctionne la console JMX fournit en standard avec Jboss. Auteur : Nicolas Delsaux
|
||
