JMX Java Management e Xtension API Cnam Paris
- Slides: 72
JMX Java Management e. Xtension API Cnam Paris jean-michel Douin, douin au cnam point fr version 19 Février 2008 Architecture à base de composants ESIEE 1
Sommaire • Objectifs – Supervision de JVM • Une Première approche – Un exemple • • Un Manageable Bean (MBean) Un Agent Une supervision Une démonstration • De bien plus près : 3 niveaux – Instrumentation • Standard, dynamic, open, model Beans et MXBeans. – Agent / serveur • Installation et accès aux « MBeans » – Distribué • Connecteurs et adaptateurs ESIEE 2
Bibliographie utilisée • La présentation de Christophe Ebro – http: //rangiroa. essi. fr/cours/internet/02 -JMX-partie 2. pdf • L’indispensable tutoriel de Sun – http: //java. sun. com/docs/books/tutorial/jmx/index. html – http: //java. sun. com/javase/technologies/core/mntr-mgmt/javamanagement/ • Hello world – http: //java. sun. com/j 2 se/1. 5. 0/docs/guide/jmx/examples. html • Le blog de Daniel Fuchs – http: //blogs. sun. com/jmxetc/ • JMX et Design Patterns chez hp – http: //devresource. hp. com/drc/resources/jmxbestp_dp_pres/index. jsp • Côté développeur ibm – http: //www-128. ibm. com/developerworks/java/library/j-jmx 2/ Orienté MX 4 j, date un peu http: //admc. com/blaine/howtos/jmx/ http: //www. xmojo. org/products/xmojo/index. html Spécialisé MXBean / accès à la JVM – http: //www-128. ibm. com/developerworks/java/library/j-mxbeans/ Divers – http: //www-adele. imag. fr/users/Didier. Donsez/ujf/sujet/jmx. html ESIEE 3
Pré-requis • Notions de – Client/serveur, • Protocole JRMP( rmi) et HTTP – Introspection – Patrons Fabrique, Publish-Subscribe, Proxy ESIEE 4
JMX : Objectifs • Gestion/administration de Ressources – Matérielles comme logicielles • Configuration/déploiement – Statique et dynamique • Contrôle – Du Cycle de vie : start/stop/suspend/resume – De la Charge en vue d’une meilleure répartition • Supervision – Performance – Des erreurs/ exceptions – De l’état (cf. cycle de vie) ESIEE 5
JMX API • Hypothèse : tout est JAVA-JVM – Ressources matérielles – Ressources logicielles • Adoptée par de nombreuses entreprises – http: //java. sun. com/javase/technologies/core/mntr-mgmt/javamanagement/jmxadoption. jsp • Outils prédéfinis – jconsole, rmi/http/snmp/jini adapter ESIEE 6
Architecture • 3 niveaux – Instrumentation • Gestion de la ressource par un composant (MBean, Managed Bean) – Agents • Initialisation, installation et contrôle des MBean – Distribué/intégration • Adaptateurs de Protocoles • RMI/HTTP/SNMP-CMIP • Sécurité • Common Management Information Protocol (CMIP), protocole ISO • Simple Network Management Protocol (SNMP) ESIEE 7
Schéma de Christophe Ebro Sun • 3 niveaux Instrumentation, ESIEE serveur, distribué 8
Objectifs rappel contexte JVM • Accès à une JVM « de l’extérieur » – Une JVM en cours d’exécution … • Gestion d’objets Java déjà en place… MBean – Accès aux attributs • Lecture/écriture – Appels de méthodes • Passage de paramètres / retour de résultat – Notifications, installations d’observateurs • évènements • Ajout dynamique de nouveaux objets MBean – Code des classes en place spécialisé – Code « hors-place » à télécharger ESIEE 9
Par l’exemple : un capteur… • Sensor. MBean Instrumentation – Standard, dynamic, … • Sensor. Agent Serveur • Outil jconsole Distribué ESIEE 10
Un exemple comme présentation • Sensor. MBean • Sensor. Agent Outil de Sun jconsole • Sensor. Client Instrumentation ESIEE Serveur Distribué 11
Instrumentation, Standard MBean // un capteur comme ressource public interface Sensor. MBean { // getter/setter public int get. Value(); public void set. Value(int val); // operations public void reset(); } MBean suffixe imposé … ESIEE 12
Sensor implements Sensor. MBean public class Sensor implements Sensor. MBean{ private final int PERIOD; private int value; private Acquisition local; // un thread interne public Sensor(int period){ this. PERIOD = period; local = this. new Acquisition(); } public synchronized int get. Value(){ return value; } public synchronized void set. Value(int value){ this. value = value; } // operations public void reset(){… ESIEE Sensor préfixe imposé … 13
Agent • L’agent se charge de – L’Installation (instanciation) du MBean – L’Enregistrement auprès du serveur de MBeans • MBean. Server • Un nom unique lui est attribué – en général par l’utilisateur, – selon une convention de nommage • Apparenté Properties exemple : Sensor. Agent: name=Sensor 1 » name la clé, Sensor 1 la valeur • Est installé sur la même JVM – D’autres peuvent le faire : un autre MBean, le serveur, de l’extérieur … ESIEE 14
Agent : Sensor. Agent public class Sensor. Agent{ private MBean. Server mbs; public Sensor. Agent(){ try{ mbs = Management. Factory. get. Platform. MBean. Server(); //* Object. Name name = new Object. Name("Sensor. Agent: name=Sensor 1"); Sensor mbean = new Sensor(2000); // création du mbean mbs. register. MBean(mbean, name); // enregistrement }catch(Exception e){ e. print. Stack. Trace(); } } public static void main(String[] args)throws Exception{ … new Sensor. Agent(); … Thread. sleep(Long. MAX_VALUE); * usage ici du patron fabrique … ESIEE 15
Client : Sensor. Client public class Sensor. Client{ // même JVM // Sensor. Agent a = new Sensor. Agent(); préalable MBean. Server mbs = …… // recherche du MBean Object. Name name = new Object. Name("Sensor. Agent: name=Sensor 1"); // accès à l’attribut, get. Value() System. out. println(mbs. get. Attribute(name, "Value")); … ESIEE 16
Distribué : jconsole • Accès à l’une des JVM, – munie par défaut de son MBean. Server ESIEE 17
Distribué : jconsole • Onglet Threads – Sensor. Agent est bien endormi… ESIEE 18
Distribué : jconsole • name=Sensor 1 – Accès aux attributs ESIEE 19
Distribué : jconsole • name=Sensor 1 – Opération reset() ESIEE 20
Résumé • Instrumentation MBean • Serveur Un Agent • Distribué jconsole • Réveil, alarmes, pannes … – Ou bien Notifications, évènements asynchrones ? ESIEE 21
Réveil & notifications • À la suite d’un changement d’état – Patron publish/subscribe, mode pull ESIEE 22
Instrumentation & Notifications public class Sensor extends Notification. Broadcaster. Support implements Sensor. MBean{ public synchronized void set. Value(int value){ this. value = value; this. sequence. Number++; send. Notification( new Notification( "set. Value", // un nom this, sequence. Number, // un numéro System. current. Time. Millis(), // une estampille Integer. to. String(value))); // un message } ESIEE 23
Agent & notifications • L’agent est un ici observateur de « son » MBean public class Sensor. Agent implements Notification. Listener{ private MBean. Server mbs; public Sensor. Agent(){ try{ … mbean. add. Notification. Listener(this, null); }catch(Exception e){ e. print. Stack. Trace(); } } public void handle. Notification( Notification notification, Object handback){ System. out. print(notification. get. Message()); System. out. println(" number : " + notification. get. Sequence. Number()); } ESIEE 24
Client : jconsole & notifications jconsole a souscrit ESIEE 25
Petite conclusion • À la mode des Bean-Java – Getter/setter, opérations – Standard MBean comme suffixe … Instrumentation – Enregistrement de ce MBean … Agent – Supervision jconsole • Simple ! • À suivre… ESIEE 26
Sommaire Maintenant d’un peu plus près ESIEE 27
Instrumentation MBeans 5 types • Standard : engendré depuis une interface xxx. MBean – Voir l’exemple de présentation • Dynamic : n’importe quel objet, – fonctionnalités découvertes à l’exécution • Model : configurable, une template à instancier • Open : limité à un ensemble de type Java – Inhibe les téléchargements de code • MXBean 1. 6 : accès aux ressources de la JVM ESIEE 28
Dynamic. MBean • Par introspection … – c’est un mandataire String/JVM ESIEE 29
Dynamic • Accès de l’extérieur … – possible avec des noms d’attributs ou d’opérations – Il sera possible de les télécharger … ESIEE 30
Exemple du capteur public class Sensor. Dynamic extends Notification. Broadcaster. Support implements Dynamic. MBean { public Sensor. Dynamic() { build. Dynamic. MBean. Info(); } public Object get. Attribute(String attribute. Name) throws Attribute. Not. Found. Exception, MBean. Exception, Reflection. Exception { if (attribute. Name. equals("Value")) { return get. Value(); } … Voir http: //java. sun. com/j 2 se/1. 5. 0/docs/guide/jmx/examples. html ESIEE 31
Dynamic. MBean • Proposer une « signature » du composant – get. MBean. Info() retourne cette signature – Les méta-données MBean. Info décrivent les attributs, opérations et notifications • Utilisation ad’hoc – Un adaptateur d’objets Java existants afin de les rendre « compatibles MBean » ESIEE 32
Instrumentation MBeans 5 types • Standard : engendré depuis une interface xxx. MBean • Dynamic : n’importe quel objet, – fonctionalités découvertes à l’exécution • Model : configurable, une template à instancier • Open : limité à un ensemble de type Java – Inhibe les téléchargements de code • MXBean 1. 6 : accès aux ressources de la JVM ESIEE 33
Instrumentation MBeans 5 types • Standard : engendré depuis une interface xxx. MBean • Dynamic : n’importe quel objet, – fonctionalités découvertes à l’exécution • Model : configurable, une template à instancier • Open : limité à un ensemble de type Java – Inhibe les téléchargements de code • MXBean 1. 6 : accès aux ressources de la JVM ESIEE 34
Instrumentation MBeans 5 types • Standard : engendré depuis une interface xxx. MBean • Dynamic : n’importe quel objet, – fonctionalités découvertes à l’exécution • Model : configurable, une template à instancier • Open : limité à un ensemble de type Java • MXBean : accès aux ressources de la JVM ESIEE 35
MXBean ESIEE • Compilation. MXBean • Garbage collection system • Memory. MXBean • Memory managers Memory. Manager. MXBean • Threading Thread. MXBean • Operating system Operating. System. MXBean • Runtime system • Class loading system • Memory resources Garbage. Collector. MXBean Runtime. MXBean Class. Loading. MXBean 36
Un exemple : Thread. Agent, Thread. MXBean public class Thread. Agent{ private MBean. Server mbs; public Thread. Agent(){ try{ Thread. MXBean mbean = Management. Factory. get. Thread. MXBean(); mbs = Management. Factory. get. Platform. MBean. Server(); Object. Name name = new Object. Name("Thread. Agent: name=thread 1"); mbs. register. MBean(mbean, name); }catch(Exception e){ e. print. Stack. Trace(); } } public static void main(String[] args)throws Exception{ … new Thread. Agent(); … Thread. sleep(Long. MAX_VALUE); ESIEE 37
Distribué : jconsole ESIEE 38
Sommaire Agents. . ESIEE 39
Agents • Adpatateurs et connecteurs • MBean server • Interrogation et listage • Chargement dynamique • Agent services ESIEE 40
Distribué, Connector, Adapter • Un connector – – Est un MBean, Est enregistré auprès du “MBean server”, Communique avec une machine (paire) Exemple • Un rmi connecteur • Un adapter – – Est un MBean , Est enregistré auprès du “MBean server”, Ecoute sur un port et respecte un certain protocole. Exemple • Un adapter HTML accepte des requêtes au protocole HTTP • Un client type est un navigateur ESIEE 41
Les connecteurs • RMI • TCP dédié ESIEE 42
Rmi connecteur, Sensor. Agent try { MBean. Server mbs …. name = new Object. Name("Sensor. Agent: name=Sensor 2"); mbs. register. MBean(sensor. Bean, name); // Creation et démarrage du connecteur JMXService. URL url = new JMXService. URL("service: jmx: rmi: ///jndi/rmi: //localhost: 9999/server") ; JMXConnector. Server cs = JMXConnector. Server. Factory. new. JMXConnector. Server(url, null, mbs); cs. start(); } catch(Exception e) { } ESIEE 43
Rmi + jconsole • start rmiregistry 9999 – Côté MBean. Server ESIEE 44
Rmi. Client public class RMIClient{ public static void main(String[] args) throws Exception{ // à la recherche du connecteur, via l’annuaire JMXService. URL url = new JMXService. URL("service: jmx: rmi: ///jndi/rmi: //localhost : 9999/server"); JMXConnector cs = JMXConnector. Factory. connect(url); MBean. Server. Connection mbs = cs. get. MBean. Server. Connection(); Object. Name name = new Object. Name("Sensor. Agent: name=Sensor 2"); System. out. println(" value : " + mbs. get. Attribute(name, "Value")); } } ESIEE 45
Notification, déjà vue public void add. Notification. Listener(Object. Name name, Notification. Listener listener, Notification. Filter filter, Object handback) public void add. Notification. Listener(Object. Name name, Object. Name listener, Notification. Filter filter, Object handback) public void remove. Notification. Listener(Object. Name name, Notification. Listener listener) public void remove. Notification. Listener(Object. Name name, Object. Name listener) ESIEE 46
Les adaptateurs • Navigateur html adaptateur ESIEE 47
Html adaptateur, Sensor. Agent try { MBean. Server mbs …. name = new Object. Name("Sensor. Agent: name=Sensor 2"); mbs. register. MBean(sensor. Bean, name); // Creation et démarrage de l’adaptateur Html. Adaptor. Server adapter = new Html. Adaptor. Server(); //* adapter. set. Port(8088); name = new Object. Name("Html. Adaptor. Server: name=html, port=8088"); mbs. register. MBean(adapter, name); adapter. start(); * import com. sun. jdmk. comm. *; // 5. 0. 1 ESIEE 48
Le Client est un navigateur ESIEE 49
Client, navigateur • Sans oublier, jdmkrt. jar dans le classpath – Bluej voir le répertoire lib/userlib/ – java -cp. ; . . /JMX/jdmkrt. jar Thread. Agent ESIEE 50
A la recherche du MBean ? • MBean en connaisssant son nom : ok • Tous les MBean d’un certain type ? • Tous les MBean dont l’attribut « Counter » == 10 • Tous les MBean dont l’attribut « Counter » >= 10 et dont l’estampille < X • « QL » pour les Mbean ? MQL ? – Query. Exp – Expression booléenne ESIEE 51
Query. Exp, comme un composite… Query. Exp exp = Query. gt(Query. attr("count"), Query. value(10)) Query. Exp prob 1 = Query. eq(Query. attr("ink. Level"), Query. value("LOW")); Query. Exp prob 2 = Query. lt(Query. attr("paper. Count"), Query. value(50)); Query. Exp exp = Query. or(prob 1, prob 2); • "(ink. Level = LOW) or (paper. Count < 50)" ESIEE 52
Chargement dynamique de MBean • Agent M-Let • Description XML ESIEE 53
M-Let • Comment – M-Let agent ESIEE 54
Chargement dynamique de MBean • M-Let – « URLClass. Loader » Associé à un descripteur en XML <MLET CODE=Sensor ARCHIVE=sensor. jar CODEBASE=http: //jfod. cnam. fr/NSY 102/jmx/ NAME=Sensor: name=Sensor 1> </MLET> • Descripteur XML, nommé sensor. mlet, à cette URL http: //jfod. cnam. fr/NSY 102/jmx/sensor. mlet ESIEE 55
Mlet en séquence ESIEE 56
Agent M-let public MLet. Agent(){ try{ mbs = Management. Factory. get. Platform. MBean. Server(); Object. Name name = new Object. Name("Services: name=mlet"); mbs. create. MBean("javax. management. loading. MLet", name); JMXService. URL url = new JMXService. URL("service: jmx: rmi: ///jndi/rmi: //localhost: 9999/server"); JMXConnector. Server cs = JMXConnector. Server. Factory. new. JMXConnector. Server(url, null, mbs); cs. start(); }catch(Exception e){ e. print. Stack. Trace(); } } ESIEE 57
Agent M-Let Sensor À la volée! • Téléchargement dynamique du MBean Sensor – Appel de get. MBeans. From. URL("http: //jfod. cnam. fr/NSY 102/jmx/sensor. mlet") ESIEE 58
MLet. Bean public interface MLet. MBean { public Set get. MBeans. From. URL(String url) throws Service. Not. Found. Exception; public Set get. MBeans. From. URL(URL url) throws Service. Not. Found. Exception; public void add. URL(URL url); public void add. URL(String url) throws Service. Not. Found. Exception; public URL[] get. URLs(); public URL get. Resource(String name); public Input. Stream get. Resource. As. Stream(String name); public Enumeration get. Resources(String name) throws IOException; public String get. Library. Directory(); public void set. Library. Directory(String libdir); } ESIEE 59
M-Let File <MLET CODE="class. Name" | OBJECT="serialized. Object. File. Name" ARCHIVE="class. Or. Jar. File. Name" [CODEBASE="relative. Path. To. Archive"] [NAME="mbean. Object. Name"] [VERSION="version"] > [<ARG TYPE="type" VALUE="value">] </MLET> • [<ARG TYPE="type" VALUE="value">] – Adaptés au constructeurs avec paramètres – Exemple <ARG TYPE=int VALUE=3000> ESIEE 60
retrait dynamique de MBean • mbs = Management. Factory. get. Platform. MBean. Server(); • Object. Name name=… • mbs. unregister(name) ESIEE 61
Sommaire ESIEE 62
Interrogations au sujet des MBeans • MBean. Info meta-data: mbs. get. MBean. Info(obj. Name); – Dynamic comme Standard MBeans • And you can also run a type-check: mbs. is. Instance. Of(obj. Name, class. Name) ESIEE 63
Exemplee : JMX-JBoss • ESIEE http: //www. openknowledge. de/pdf/jax 2003/JMX_2003_05_10. pdf 64
Conclusion ESIEE 65
MBean Cycle de vie • Extrait de ce livre, – chapitre 9 : Designing with JMX • Paragraphe 3 MBean Registration and Lifecycle ESIEE 66
Création locale et enregistrement ESIEE 67
Création du MBean et enregistrement ESIEE 68
Création depuis une application externe ESIEE 69
Création par un adaptateur ESIEE 70
Création au démarrage ESIEE 71
M-let et notifications • Être prévenu d’un téléchargement • Voir l’adaptateur livre page 241 ESIEE 72
- Jmx 102
- Aperion cnam
- Cnam la rochelle
- Cnam ceet
- Cnam conference
- Java database connectivity api
- Dominonappulat
- Java summary
- Java sound api
- Java print api
- Java graphics
- Generic communication
- Sun java api
- Dynamic proxies in java
- Java reflection api
- Java number
- Java import java.util.*
- Import java.awt
- Import java scanner
- Import java
- Import java.util.*
- Java import java.util.*
- Java import java.io.*
- Import java.util
- Java import java.io.*
- Pengertian awt dan swing pada java
- Import java.awt.event
- Java compiler translates java source code into
- Ejb javatpoint
- Api 1173
- Full lifecycle api management
- Top management and middle management
- Management pyramid
- Top management and middle management
- Desktop management task force
- Cafe voltaire paris
- Villa paris glew
- Viaje paris fin de curso
- Unang paglalakbay ni jose rizal
- Prijam i hekaba
- On paris ernest hemingway analysis a level
- Judgement of paris iliad
- Big four paris
- Paris basin climate
- Describe the scenario that led prince paris to kidnap helen
- Who was the previous owner of texas
- Tourism in the paris basin
- Ipack eps paris
- What causes lady montague’s death
- Give two examples from lines 26-31 that juliet
- How does juliet treat paris when they meet?
- Act 5 romeo and juliet summary
- Which two characters are detained by the watchmen
- What happened in act 4 of romeo and juliet
- Biscuit mold by rizal
- Principles of cast application
- Slavoluk pobjede paris
- Paris ville mondiale bac pro
- Organigramme drh université de paris
- Paris probe proves palace innocent
- Chagall paris through the window
- Injustus
- 31 rue de seine
- La domination macrocéphalique de paris
- Bohemia de paris alegre loca y gris
- Paris and friar lawrence
- Jardines versalles paris
- Introduction
- Haikara restaurant paris
- Pierre-auguste renoir the judgement of paris
- Conferinta de pace de la paris 1946 ppt
- Fylogenetisk stamtræ
- Marc antoine jullien de paris educación comparada