Grundlæggende introduktion til JMX
1. Introduktion
Det JMX-ramme (Java Management Extensions) blev introduceret i Java 1.5 og har fundet bred accept i Java-udviklerfællesskabet siden starten.
Det giver en let konfigurerbar, skalerbar, pålidelig og mere eller mindre venlig infrastruktur til styring af Java-applikationer enten lokalt eller eksternt. Rammen introducerer konceptet MBeans til realtidsadministration af applikationer.
Denne artikel er en nybegynder trin for trin guide til at oprette og opsætte en grundlæggende MBean og administrere den gennem JConsole.
2. JMX Arkitektur
JMX-arkitekturen følger en trelags tilgang:
- Instrumentationslag: MBiler, der er registreret hos JMX-agenten, gennem hvilke ressourcer styres
- JMX agentlag: kernekomponenten (MbeanServer), der opretholder et register over administrerede MBeans og giver en grænseflade for at få adgang til dem
- Fjernstyringslag: normalt klientsidesværktøj som JConsole
3. Oprettelse af en MBean-klasse
Mens du opretter MBeans, er der et bestemt designmønster, som vi skal overholde. Model MBean-klassen SKAL implementere en grænseflade med følgende navn: “Modelklassenavn” plus MBean.
Så lad os definere vores MBean-grænseflade og klassen, der implementerer den:
offentlig grænseflade GameMBean {public void playFootball (String clubName); offentlig streng getPlayerName (); public void setPlayerName (String playerName); } offentlig klasse spil implementerer GameMBean {private String playerName; @ Overstyr offentlig ugyldigt playFootball (String clubName) {System.out.println (dette.playerName + "spiller fodbold 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 = playerName; }}
Det Spil klasse tilsidesætter en metode spille fodbold() af overordnet interface. Bortset fra dette har klassen en medlemsvariabel spiller navn og getter / setter for det.
Bemærk, at getter / setter også erklæres i den overordnede grænseflade.
4. Instrumentering med JMX-agenten
JMX-agenter er de enheder, der kører enten lokalt eller eksternt, og som giver ledelsesadgangen til de MBeansvar, der er registreret hos dem.
Lad os bruge PlatformMbeanServer - kernekomponenten i JMX agent og registrere Spil MBean med det.
Vi bruger en anden enhed - ObjectName - at registrere Spil klasse instans med PlatformMbeanServer; dette er en streng bestående af to dele:
- domæne: kan være en vilkårlig streng, men ifølge MBean-navngivningskonventioner skal den have Java-pakkenavn (undgår navngivningskonflikter)
- nøgle: en liste over “nøgle = værdi”Par adskilt med komma
I dette eksempel bruger vi: “Com.baledung.tutorial: type = basic, name = game”. Vi får den MBeanServer fra fabrikklassen java.lang.management.ManagementFactory. Derefter registrerer vi modellen MBean ved hjælp af den oprettede Objektnavn: Endelig bare for at kunne teste det - vi tilføjer et mens loop for at forhindre, at applikationen afsluttes, før vi kan få adgang til MBean via JConsole: Her er et hurtigt kig på JConsole-delen af processen: Grundlæggende om MBean management er enkle: Lad os se, hvad det betyder for Spil MBean i praksis: Følgende log vises i Eclipse-konsollen: Indstil playerName til at værdi Messi Følgende log vises i formørkelseskonsollen: Messi spiller fodbold for Barcelona Denne vejledning berørte det grundlæggende ved opsætning af en JMX-aktiveret applikation ved hjælp af MBeans. Det diskuterede også om brug af et typisk klientsidesværktøj som JConsole til at styre den instrumenterede MBean. Domænet for JMX-teknologi har meget bred rækkevidde og rækkevidde. Denne vejledning kan betragtes som et begynders skridt mod det. Kildekoden til denne vejledning kan findes på Github.prøv {ObjectName objectName = new ObjectName ("com.baeldung.tutorial: type = basic, name = game"); MBeanServer-server = ManagementFactory.getPlatformMBeanServer (); server.registerMBean (nyt spil (), objektnavn); } fange (MalformedObjectNameException | InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) {// håndtere undtagelser}
mens (sandt) {}
5. Adgang til MBean
5.1. Opretter forbindelse fra klientsiden
5.2. Administration af MBean
6. Konklusion