Cette quatrième partie sur JMX (cf. [introduction](/2010/10/jmx-pour-les-nuls-introduction.html, partie 1 portant sur les généralités, partie 2 portant sur les différents MBeans et le concept de Notification et partie 3 sur les agents JMX) permettra de présenter les classes de bases de JMX c’est-à-dire les classes qui sont manipulées en interne par les API de JMX à savoir :
ObjectName
ObjectInstance
Attribute
AttributeList
Table des matières
- JMX, qu’est ce que c’est?
- Spécifications
ObjectName
Un nom d’objet permet d’identifier un MBean dans le MBean Server de manière unique. L’application de supervision et d’administration utilise ce nom unique pour identifier le MBean cible.
La classe ObjectName
représente ce nom unique dans le MBean Server et est constitué :
- d’un nom de domaine,
- d’un ensemble non ordonné d’une ou plusieurs clés-propriétés.
Le nom de domaine est une chaîne de caractères sensible à la casse qui fournit la structure d’un espace de nommage dans l’agent JMX. Il peut être optionnel car le MBean Server est capable d’en fournir un par défaut.
Il peut contenir n’importe quel caractère mis à part les caractères “:”, “*” et “?” et prend généralement la forme d’un nom de domaine DNS inversé (ex : com.jetoile.myDomain
). Il est déconseillé qu’il contienne la chaine “//”.
La liste de clés-propriétés permet de fournir un nom unique au MBean dans un domain donné. Une clé-propriété est, en fait, un pair de clé/valeur où la valeur est une chaîne de caractères qui ne doit pas contenir les caractères suivants : “:”, “”", " “, “=”, “*”, “?”. Une propriété doit obligatoirement être présente.
Un objectName aura donc la forme suivante :
[domainName]:property=value[,property=value]*
Exemple :
MyDomain:description=Printer,type=laser
MyDomain:description=Disk,capacity=2
DefaultDomain:description=Disk,capacity=1
DefaultDomain:description=Printer,type=ink
DefaultDomain:description=Printer,type=laser,date=1993
Socrates:description=Printer,type=laser,date=1993
En outre, JMX propose un moyen pour interroger l’annuaire de MBeans présent dans le MBean Server.
Ainsi, pour l’exemple donné ci-dessus, il est possible d’avoir :
- “:” renverra tous les objets du MBean Server. Un objet null ou une chaîne de caractère est équivalente à .
- “:*” renverra tous les objets du MBean Server présents dans le domaine par défaut
- “MyDomain:*” ne renverra rien
- “??Dom*:*” renverra tous les objets présent dans MyDomain
- “:description=Printer,type=laser,” renverra les objets suivants :
- MyDomain:description=Printer,type=laser
- DefaultDomain:description=Printer,type=laser,date=1993
- Socrates:description=Printer,type=laser,date=1993
- “Domain:description=Printer,” renverra les objets suivants :
- MyDomain:description=Printer,type=laser
- DefaultDomain:description=Printer,type=ink
- DefaultDomain:description=Printer,type=laser,date=1993
- “Domain:description=P,*” renverra les mêmes résultats que la requête précédente.
ObjectInstance
La classe ObjectInstance
permet de lier le nom d’un objet MBean à sa classe Java. C’est la seule description possible d’un MBean dans le MBean Server puisque l’accès à un MBean par sa référence n’est pas autorisé.
Attribute et AttributeList
Les classes Attribute
et AttributeList
représente les attributs et leurs valeurs d’un MBean. Elles contiennent le nom des attributs sous forme de chaîne de caractères et leurs valeurs sous forme d’objet de type ObjectInstance
.
Les exceptions
JMX propose un ensemble d’exceptions qui peuvent principalement être levées par le MBean Server ou les services de l’agent JMX qui effectuent les opérations sur le MBean lorsque le code de ce dernier lève une exception.
Le mot de la fin de cette partie
Nous avons vu dans cette partie les objets de base manipulés par JMX. Dans les parties suivantes, nous verrons plus précisément la notion de MBean Server.