Osnovni uvod u JMX

1. Uvod

The Okvir Java Management Extensions (JMX) uveden je u Javi 1.5 i našao je široko prihvaćeno u zajednici programera Java od svog osnutka.

Pruža lako konfigurabilnu, skalabilnu, pouzdanu i više ili manje prijateljsku infrastrukturu za upravljanje Java aplikacijom bilo lokalno ili udaljeno. Okvir uvodi koncept MBeans za upravljanje aplikacijama u stvarnom vremenu.

Ovaj je članak detaljni vodič za početnike za stvaranje i postavljanje osnovnog MBeana i upravljanje njime putem JConsole-a.

2. JMX arhitektura

JMX arhitektura slijedi troslojni pristup:

  1. Sloj instrumentacije: MBeans registrirani kod JMX agenta putem kojeg se upravlja resursima
  2. JMX agent sloj: temeljna komponenta (MbeanServer) koja održava registar upravljanih MBeana i pruža sučelje za pristup njima
  3. Sloj daljinskog upravljanja: obično alat na strani klijenta poput JConsole

3. Stvaranje MBean klase

Dok stvaramo MBeans, postoji određeni obrazac dizajna kojem se moramo prilagoditi. Klasa modela MBean MORA implementirati sučelje sa sljedećim imenom: “Naziv klase modela” plus MBean.

Pa definirajmo naše MBean sučelje i klasu koja ga implementira:

javno sučelje GameMBean {public void playFootball (String clubName); javni String getPlayerName (); javna praznina setPlayerName (Niz igračaName); } igra javne klase implementira GameMBean {private String playerName; @Override public void playFootball (String clubName) {System.out.println (this.playerName + "igranje nogometa za" + clubName); } @Override javni niz getPlayerName () {System.out.println ("Vrati ime igrača" + this.playerName); povrat igračaName; } @Override public void setPlayerName (StringNameName) {System.out.println ("Postavi playerName na vrijednost" + playerName); this.playerName = ImeName; }}

The igra klasa nadjačava metodu igrati nogomet() nadređenog sučelja. Osim toga, klasa ima varijablu člana igračevo ime i geter / postavljač za to.

Imajte na umu da su getter / setter također deklarirani u nadređenom sučelju.

4. Instrumentiranje s JMX agentom

JMX agenti su entiteti koji se izvode lokalno ili daljinski i koji pružaju pristup za upravljanje MBeansima registriranim kod njih.

Iskoristimo PlatformMbeanServer - glavna komponenta JMX agenta i registrirajte igra Učini s tim.

Koristit ćemo drugi entitet - ObjectName - za registraciju igra instanca klase s PlatformMbeanServer; ovo je niz koji se sastoji od dva dijela:

  • domena: može biti proizvoljan niz, ali prema MBean konvencijama imenovanja, trebao bi imati naziv Java paketa (izbjegava sukobe imenovanja)
  • ključ: popis “ključ = vrijednost”Parovi odvojeni zarezom

U ovom ćemo primjeru koristiti: “Com.baledung.tutorial: type = basic, name = game”.

Dobit ćemo MBeanServer iz tvorničke klase java.lang.management.ManagementFactory.

Tada ćemo registrirati model MBean koristeći stvoreni ObjectName:

isprobajte {ObjectName objectName = new ObjectName ("com.baeldung.tutorial: type = basic, name = game"); MBeanServer poslužitelj = ManagementFactory.getPlatformMBeanServer (); server.registerMBean (nova igra (), objectName); } catch (MalformedObjectNameException | InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) {// obradi iznimke}

Napokon, samo da bismo to mogli testirati - dodati ćemo dok petlja da spriječi završavanje aplikacije prije nego što pristupimo MBeanu putem JConsole:

dok (istina) {}

5. Pristup MBeanu

5.1. Povezivanje sa strane klijenta

  1. Pokrenite aplikaciju u Eclipseu
  2. Pokrenite Jconsole (nalazi se u mapi smeća u instalacijskom direktoriju JDK vašeg stroja)
  3. Veza -> nova veza -> odaberite lokalni Java proces ovog vodiča -> Poveži -> Upozorenje o nesigurnoj SSl vezi -> Nastavi s nesigurnom vezom
  4. Nakon uspostavljanja veze, kliknite gornju desnu karticu MBeans u oknu View
  5. Popis registriranih MBeana pojavit će se u lijevom stupcu
  6. Kliknite com.baeldung.tutorial -> basic -> igra
  7. Pod igrom će biti dva reda, po jedan za atribute i operacije

Evo kratkog pogleda na dio postupka JConsole:

5.2. Upravljanje MBeanom

Osnove upravljanja MBean-om su jednostavne:

  • Atributi se mogu čitati ili pisati
  • Mogu se pozivati ​​metode i dostavljati im argumenti ili vraćati vrijednosti iz njih

Pogledajmo što to znači za igra MBean u praksi:

  • atribut: upišite novu vrijednost za atribut igračevo ime - na primjer "Messi" i kliknite Gumb za osvježavanje

Sljedeći zapisnik pojavit će se u konzoli Eclipse:

Postavite playerName na vrijednost Messija

  • operacijama: upišite vrijednost za argument String metode igrati nogomet() - na primjer "Barcelona" i kliknite gumb metode. A upozorenje prozora za uspješno pozivanje pojavit će se

Na konzoli eclipse pojavit će se sljedeći zapisnik:

Messi igra nogomet za Barcelonu

6. Zaključak

Ovaj se vodič dotaknuo osnova postavljanja aplikacije s omogućenim JMX-om pomoću MBeansa. Također, raspravljalo se o korištenju tipičnog alata na strani klijenta poput JConsole za upravljanje instrumentiranim MBeanom.

Domena JMX tehnologije vrlo je širokog opsega i dosega. Ovaj se vodič može smatrati početničkim korakom prema tome.

Izvorni kod ovog vodiča možete pronaći na Githubu.