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:
- Instrumentasjonslag: MBåler som er registrert hos JMX-agenten som ressurser administreres gjennom
- JMX agentlag: kjernekomponenten (MbeanServer) som fører register over administrerte MBeans og gir et grensesnitt for å få tilgang til dem
- 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: 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: Her er en rask titt på JConsole-delen av prosessen: Grunnleggende om MBean management er enkle: La oss se hva det betyr for Spill MBean i praksis: Følgende logg vises i Eclipse-konsollen: Sett spillernavn til å verdsette Messi Følgende logg vises i formørkelseskonsollen: Messi spiller fotball for Barcelona 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.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}
mens (sant) {}
5. Få tilgang til MBean
5.1. Koble fra klientsiden
5.2. Administrere MBean
6. Konklusjon