A JMX alapvető bemutatása
1. Bemutatkozás
A Java Management Extensions (JMX) keretrendszer a Java 1.5-ben vezették be, és a kezdetek óta széles körben elfogadott a Java fejlesztői közösségben.
Könnyen konfigurálható, méretezhető, megbízható és többé-kevésbé barátságos infrastruktúrát biztosít a Java alkalmazások helyi vagy távoli kezeléséhez. A keretrendszer bevezeti az MBeans koncepcióját az alkalmazások valós idejű kezelésére.
Ez a cikk kezdő lépésről lépésre ismerteti az alap MBean létrehozását és beállítását, valamint a JConsole segítségével történő kezelését.
2. JMX Architecture
A JMX architektúra háromrétegű megközelítést követ:
- Instrumentációs réteg: A JMX ügynöknél regisztrált MBeans, amelyen keresztül az erőforrásokat kezelik
- JMX ügynök réteg: az alapkomponens (MbeanServer), amely karbantartja a kezelt MBeanok nyilvántartását és interfészt biztosít az ezekhez való hozzáféréshez
- Távoli felügyeleti réteg: általában ügyféloldali eszköz, mint például a JConsole
3. MBean osztály létrehozása
Az MBeans készítése közben van egy sajátos tervezési minta, amelynek meg kell felelnie. Az MBean osztály modelljének KÖTELEZŐ interfészt kell létrehoznia a következő névvel: „Modellosztály neve” plusz MBean.
Tehát definiáljuk az MBean felületünket és az azt megvalósító osztályt:
nyilvános felület GameMBean {public void playFootball (String clubName); public String getPlayerName (); public void setPlayerName (karakterlánc-lejátszóNév); } public class Game megvalósítja a GameMBean {private String playerName; @Orride public void playFootball (String clubName) {System.out.println (this.playerName + "focizni a" + clubName számára); } @Orride public String getPlayerName () {System.out.println ("Return playerName" + this.playerName); return playerName; } @Orride public void setPlayerName (String playerName) {System.out.println ("A PlayerName beállítása értékre" + playerName); this.playerName = játékosNév; }}
A Játszma, meccs osztály felülír egy módszert focizni() a szülői felület. Ettől eltekintve az osztály tagváltozóval rendelkezik játékos neve és getter / setter érte.
Vegye figyelembe, hogy a getter / setter a szülői felületen is deklarálva van.
4. Hangszerelés a JMX ügynökkel
A JMX ügynökök a lokálisan vagy távolról futó entitások, amelyek kezelési hozzáférést biztosítanak a náluk regisztrált MBeans-hoz.
Használjuk PlatformMbeanServer - a JMX ügynök központi összetevője, és regisztrálja a Játszma, meccs MBean vele.
Más entitást fogunk használni - ObjectName - regisztrálni a Játszma, meccs osztálypéldány a PlatformMbeanServer; ez egy String, amely két részből áll:
- tartomány: tetszőleges karakterlánc lehet, de az MBean elnevezési megállapodások szerint Java csomagnévvel kell rendelkeznie (elkerüli a névadási ütközéseket)
- kulcs: a „kulcs = érték”Vesszővel elválasztott párok
Ebben a példában a következőket fogjuk használni: “Com.baledung.tutorial: type = basic, name = game”. Megkapjuk a MBeanServer a gyári osztályból java.lang.management.ManagementFactory. Ezután a létrehozott segítségével regisztráljuk az MBean modellt ObjectName: Végül csak azért, hogy kipróbálhassuk - hozzáadunk egy míg ciklus az alkalmazás leállításának megakadályozásához, mielőtt hozzáférhetünk az MBean-hoz a JConsole-on keresztül: Itt van egy rövid áttekintés a folyamat JConsole részéről: Az MBean kezelés alapjai egyszerűek: Lássuk, mit jelent ez a Játszma, meccs MBean a gyakorlatban: A következő napló jelenik meg az Eclipse konzolban: Állítsa a playerName értékét Messi értékére A következő napló jelenik meg a napfogyatkozás-konzolon: Messi focizik a Barcelonában Ez az oktatóanyag egy JMX-kompatibilis alkalmazás MBeans használatával történő beállításának alapjait érintette. Megvitatta egy tipikus kliensoldali eszköz, például a JConsole használatát is az instrumentált MBean kezeléséhez. A JMX technológia hatóköre és hatóköre nagyon széles. Ez a bemutató kezdő lépésnek tekinthető. Az oktatóanyag forráskódja megtalálható a Github oldalon.próbálja meg az {ObjectName objectName = new ObjectName ("com.baeldung.tutorial: type = basic, name = game"); MBeanServer szerver = ManagementFactory.getPlatformMBeanServer (); server.registerMBean (új játék (), objectName); } catch (MalformedObjectNameException | példányAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) {// kezelni a kivételeket}
míg (igaz) {}
5. Az MBean elérése
5.1. Csatlakozás az ügyfél oldalról
5.2. Az MBean kezelése
6. Következtetés