Introducere de bază în JMX

1. Introducere

Cadrul Java Management Extensions (JMX) a fost introdus în Java 1.5 și a fost acceptat pe scară largă în comunitatea dezvoltatorilor Java încă de la începuturile sale.

Oferă o infrastructură ușor configurabilă, scalabilă, fiabilă și mai mult sau mai puțin prietenoasă pentru gestionarea aplicațiilor Java, fie local, fie de la distanță. Cadrul introduce conceptul de MBeans pentru gestionarea în timp real a aplicațiilor.

Acest articol este un ghid pas cu pas pentru începători pentru a crea și configura un MBean de bază și a-l gestiona prin JConsole.

2. Arhitectura JMX

Arhitectura JMX urmează o abordare în trei straturi:

  1. Stratul de instrumentare: MBeans înregistrat la agentul JMX prin care sunt gestionate resursele
  2. Stratul de agent JMX: componenta de bază (MbeanServer) care menține registrul MBeans gestionat și oferă o interfață pentru a le accesa
  3. Strat de gestionare de la distanță: de obicei, instrument de partea clientului, cum ar fi JConsole

3. Crearea unei clase MBean

În timp ce creăm MBeans, există un anumit model de proiectare la care trebuie să ne conformăm. Clasa model MBean TREBUIE să implementeze o interfață cu următorul nume: „numele clasei model” plus MBean .

Deci, să definim interfața noastră MBean și clasa care o implementează:

public interface GameMBean { public void playFootball(String clubName); public String getPlayerName(); public void setPlayerName(String playerName); } public class Game implements GameMBean { private String playerName; @Override public void playFootball(String clubName) { System.out.println( this.playerName + " playing football for " + clubName); } @Override public String getPlayerName() { System.out.println("Return playerName " + this.playerName); return playerName; } @Override public void setPlayerName(String playerName) { System.out.println("Set playerName to value " + playerName); this.playerName = playerName; } }

Joc Clasa prioritate față de o metodă playFootball () a interfeței - mamă. În afară de aceasta, clasa are un membru variabil playerName și getter / setter pentru aceasta.

Rețineți că getter / setter sunt, de asemenea, declarați în interfața părinte.

4. Instrumentare cu agentul JMX

Agenții JMX sunt entitățile care rulează fie local, fie de la distanță, care oferă accesul de gestionare la MBean-urile înregistrate la acestea.

Să folosim PlatformMbeanServer - componenta de bază a agentului JMX și să înregistrăm Game MBean cu acesta.

Vom folosi o altă entitate - ObjectNam e - pentru a înregistra instanța clasei de joc la PlatformMbeanServer ; acesta este un șir format din două părți:

  • domeniu : poate fi un șir arbitrar, dar conform convențiilor de numire MBean, acesta ar trebui să aibă numele pachetului Java (evită conflictele de nume)
  • cheie: o listă de perechi „ cheie = valoare ” separate prin virgulă

În acest exemplu, vom folosi: „com.baledung.tutorial: type = basic, name = game”.

Vom obține MBeanServer din clasa din fabrică java.lang.management.ManagementFactory.

Apoi vom înregistra modelul MBean folosind ObjectName creat :

try { ObjectName objectName = new ObjectName("com.baeldung.tutorial:type=basic,name=game"); MBeanServer server = ManagementFactory.getPlatformMBeanServer(); server.registerMBean(new Game(), objectName); } catch (MalformedObjectNameException | InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) { // handle exceptions }

În cele din urmă, doar pentru a putea testa - vom adăuga o buclă de timp pentru a împiedica terminarea aplicației înainte de a putea accesa MBean prin JConsole:

while (true) { }

5. Accesarea MBean

5.1. Conectarea din partea clientului

  1. Porniți aplicația în Eclipse
  2. Porniți Jconsole (situat în dosarul bin al directorului de instalare JDK al mașinii dvs.)
  3. Conexiune -> Conexiune nouă -> selectați procesul Java local al acestui tutorial -> Conectare -> Avertisment conexiune SSl nesigur -> Continuați cu conexiunea nesigură
  4. După stabilirea conexiunii, faceți clic pe fila MBeans din dreapta sus a panoului Vizualizare
  5. Lista cu MBean-urile înregistrate va apărea în coloana din stânga
  6. Faceți clic pe com.baeldung.tutorial -> de bază -> joc
  7. Sub joc, vor exista două rânduri, câte unul pentru atribute și operații

Iată o privire rapidă asupra părții JConsole a procesului:

5.2. Gestionarea MBean

Bazele managementului MBean sunt simple:

  • Atributele pot fi citite sau scrise
  • Metodele pot fi invocate și argumentele pot fi furnizate acestora sau valorile returnate de la acestea

Să vedem ce înseamnă asta pentru Game MBean în practică:

  • atribut : tastați o nouă valoare pentru atributul playerName - de exemplu „Messi” și faceți clic pe butonul Reîmprospătare

Următorul jurnal va apărea în consola Eclipse:

Setați playerName să o aprecieze pe Messi

  • operații : tastați o valoare pentru argumentul String al metodei playFootBall () - de exemplu „Barcelona” și faceți clic pe butonul metodă. Va apăreao alertă de fereastră pentru invocarea cu succes

Următorul jurnal va apărea în consola eclipsei:

Messi joacă fotbal pentru Barcelona

6. Concluzie

Acest tutorial a abordat elementele de bază ale configurării unei aplicații cu JMX utilizând MBeans. De asemenea, s-a discutat despre utilizarea unui instrument tipic client-partea ca JConsole pentru a gestiona instrumentul MBean.

Domeniul tehnologiei JMX este foarte vast ca domeniu de aplicare și acoperire. Acest tutorial poate fi considerat un pas pentru începători în acest sens.

Codul sursă al acestui tutorial poate fi găsit pe Github.