Grunnleggende introduksjon til JMX

1. Introduksjon

De Java Management Extensions (JMX) framework ble introdusert i Java 1.5 og har funnet bred aksept i Java-utviklermiljøet siden oppstarten.

Det gir en lett konfigurerbar, skalerbar, pålitelig og mer eller mindre vennlig infrastruktur for administrering av Java-applikasjoner enten lokalt eller eksternt. Rammeverket introduserer konseptet MBeans for sanntidsadministrasjon av applikasjoner.

Denne artikkelen er en trinnvis veiledning for en nybegynner for å lage og sette opp en grunnleggende MBean og administrere den gjennom JConsole.

2. JMX Arkitektur

JMX-arkitekturen følger en trelags tilnærming:

  1. Instrumentasjonslag: MBåler som er registrert hos JMX-agenten som ressurser administreres gjennom
  2. JMX agentlag: kjernekomponenten (MbeanServer) som fører register over administrerte MBeans og gir et grensesnitt for å få tilgang til dem
  3. Fjernstyringslag: vanligvis klientsideverktøy som JConsole

3. Opprette en MBean-klasse

Mens du lager MBeans, er det et bestemt designmønster som vi må overholde. Modellen MBean-klasse MÅ implementere et grensesnitt med følgende navn: “Modellklassenavn” pluss MBean.

Så la oss definere MBean-grensesnittet og klassen som implementerer det:

offentlig grensesnitt GameMBean {public void playFootball (String clubName); offentlig streng getPlayerName (); public void setPlayerName (String playerName); } offentlig klasse Spill implementerer 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); returner spillernavn; } @ Override public void setPlayerName (String playerName) {System.out.println ("Set playerName to value" + playerName); this.playerName = spillernavn; }}

De Spill klasse overstyrer en metode spille fotball() av foreldregrensesnittet. Bortsett fra dette har klassen en medlemsvariabel spillernavn og getter / setter for det.

Merk at getter / setter også er erklært i foreldregrensesnittet.

4. Instrumentering med JMX-agenten

JMX-agenter er enhetene som kjører enten lokalt eller eksternt, og som gir ledelsen tilgang til MBeansvaret som er registrert hos dem.

La oss bruke PlatformMbeanServer - kjernekomponenten i JMX agent og registrer Spill MBean med det.

Vi bruker en annen enhet - ObjectName - for å registrere Spill klasseinstans med PlatformMbeanServer; dette er en streng som består av to deler:

  • domene: kan være en vilkårlig streng, men i henhold til MBean-navngivningskonvensjoner skal den ha Java-pakkenavn (unngår navngivningskonflikter)
  • nøkkel: en liste med "nøkkel = verdi”Par atskilt med komma

I dette eksemplet bruker vi: “Com.baledung.tutorial: type = basic, name = game”.

Vi får tak i MBeanServer fra fabrikkklassen java.lang.management.ManagementFactory.

Deretter registrerer vi modellen MBean ved hjelp av laget Objektnavn:

prøv {ObjectName objectName = new ObjectName ("com.baeldung.tutorial: type = basic, name = game"); MBeanServer server = ManagementFactory.getPlatformMBeanServer (); server.registerMBean (nytt spill (), objektnavn); } fange (MalformedObjectNameException | InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) {// håndtere unntak}

Til slutt, bare for å kunne teste det - vi legger til en samtidig som loop for å forhindre at applikasjonen avsluttes før vi får tilgang til MBean via JConsole:

mens (sant) {}

5. Få tilgang til MBean

5.1. Koble fra klientsiden

  1. Start applikasjonen i formørkelsen
  2. Start Jconsole (ligger i søppelmappen i JDK-installasjonskatalogen på maskinen din)
  3. Tilkobling -> ny tilkobling -> velg den lokale Java-prosessen i denne opplæringen -> Koble til -> Usikker SSl-tilkoblingsvarsel -> Fortsett med usikker tilkobling
  4. Etter at tilkoblingen er opprettet, klikker du øverst til høyre MBeans-fanen i Vis-ruten
  5. Liste over registrerte MBeans vises i venstre kolonne
  6. Klikk com.baeldung.tutorial -> basic -> game
  7. Under spillet vil det være to rader, en hver for attributter og operasjoner

Her er en rask titt på JConsole-delen av prosessen:

5.2. Administrere MBean

Grunnleggende om MBean management er enkle:

  • Attributter kan leses eller skrives
  • Metoder kan påberopes og argumenter kan leveres til dem eller verdier som returneres fra dem

La oss se hva det betyr for Spill MBean i praksis:

  • Egenskap: skriv inn en ny verdi for attributtet spillernavn - for eksempel “Messi” og klikk Oppdater-knapp

Følgende logg vises i Eclipse-konsollen:

Sett spillernavn til å verdsette Messi

  • operasjoner: skriv inn en verdi for String-argumentet til metoden spille fotball() - for eksempel “Barcelona” og klikk på metodeknappen. EN vindusvarsel for vellykket påkalling vil dukke opp

Følgende logg vises i formørkelseskonsollen:

Messi spiller fotball for Barcelona

6. Konklusjon

Denne opplæringen berørte det grunnleggende om å sette opp et JMX-aktivert program ved bruk av MBeans. Det diskuteres også om bruk av et typisk klientsideverktøy som JConsole for å administrere den instrumenterte MBean.

Domenet til JMX-teknologien har veldig bredt omfang og rekkevidde. Denne opplæringen kan betraktes som et nybegynnersteg mot det.

Kildekoden til denne veiledningen finner du på Github.


$config[zx-auto] not found$config[zx-overlay] not found