JMX

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
a
a
26. sor: 26. sor:
 
A specifikáció elismeri "protokoll adapterek" (protocol adapters) implementálásának esetleges szükségességét; ezek nem-Java kliensek számára nyújtanának hozzáférést pl. HTML vagy SNMP felett. (A szerző legjobb tudomása szerint elterjedten használt ilyen megoldás nincs.) Egy nagyon érdekes, de 2008 októberében még csak "Early Access Draft" szintű projekt a [https://ws-jmx-connector.dev.java.net/ Web Services Connector]; a konnektor a [http://www.dmtf.org/standards/wsman/ WS-Management] szabványt használja hordozóprotokollként, így a klienseknek nem kell mindenképpen Java alkalmazásoknak lenniük (az implementáció használhatóságát demonstrálták már [http://msdn.microsoft.com/en-us/library/aa384426(VS.85).aspx WinRM]-mel; elméletileg nyílt implementációkkal, mint pl. a [https://wiseman.dev.java.net/ wiseman] is működőképesnek kell lennie.)
 
A specifikáció elismeri "protokoll adapterek" (protocol adapters) implementálásának esetleges szükségességét; ezek nem-Java kliensek számára nyújtanának hozzáférést pl. HTML vagy SNMP felett. (A szerző legjobb tudomása szerint elterjedten használt ilyen megoldás nincs.) Egy nagyon érdekes, de 2008 októberében még csak "Early Access Draft" szintű projekt a [https://ws-jmx-connector.dev.java.net/ Web Services Connector]; a konnektor a [http://www.dmtf.org/standards/wsman/ WS-Management] szabványt használja hordozóprotokollként, így a klienseknek nem kell mindenképpen Java alkalmazásoknak lenniük (az implementáció használhatóságát demonstrálták már [http://msdn.microsoft.com/en-us/library/aa384426(VS.85).aspx WinRM]-mel; elméletileg nyílt implementációkkal, mint pl. a [https://wiseman.dev.java.net/ wiseman] is működőképesnek kell lennie.)
   
==Felügyeleti adatmodellezés==
+
==MBean-ek metaadatai==
[[Image:JMX_meta_classes.png|frame|A JMX metaadat-osztályok (a [http://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html szabvány] 61. oldaláról átemelve)]]
+
[[Image:JMX_meta_classes.png|frame|A JMX metaadat-osztályok (a [http://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html szabvány] 61. oldaláról átemelve); javax.management csomag]] Altalános esetben egy MBean attribútumait és metódusait az MBeanServer-től kérdezzük le. Látható, hogy a metaadat-osztályok Java osztályok egyszerű leírását adják. Kiemelendő, hogy a típus-adatok (beépített Java típusok illetve osztálynevek) egyszerűen sztringként modellezettek. Elméletileg ez lehetőséget biztosít arra, hogy a kliens ellenőrizze, hogy rendelkezik-e a megfelelő osztálydefiníciókkal; a gyakorlatban azonban a hiányzó osztálydefiníciók és a sorosíthatósági problémák elkerülésére ajánlott az MBean-ek interfészében a beépített osztályokra és típusokra, valamint azok tömbjeire szorítkozni.
  +
  +
 
==JMX objektumnevek==
 
==JMX objektumnevek==
 
TODO: java.lang.management API
 
TODO: java.lang.management API

A lap 2008. december 18., 03:14-kori változata

A Java Management Extensions (JMX) egy, a J2SE 5.0-tól kezdve a platform-implementációk által kötelezően megvalósítandó szabvány. Célja mind a Java alkalmazások és a futtató platform (távoli) menedzsmentre felkészítésének, mind pedig a menedzsment célú hozzáférés mikéntjének szabványosítása.

A JMX mind menedzsment kiszolgálói (illetve menedzselt elem), mind pedig felügyeleti alkalmazás oldalon alapvetően a Java platform feletti implementációt feltételez; főként kötelezően megvalósítandó Java interfészeket, osztályokat és azok viselkedését írja le.

Hasonlóan például a Web Based Enterprise Management nyílt távfelügyeleti szabványhoz és az arra épülő megoldásokhoz, a JMX valódi objektum-orientált felügyeleti adatmodellezést tesz lehetővé (aminek nem csak az objektumok/asszociációk/attribútumok lekérdezése része, de metódusokat is lehet hívni); azzal ellentétben azonban nem definiál előre használható/kiterjeszthető modelleket. J2EE környezetekre a JMX-re épülő JSR-77 specifikáció határozza meg a felügyeleti modellt.

1 JMX alapfogalmak és architektúra

(thumbnail)
A JMX architektúrája (a szabvány alapján)
A JMX-ben a felügyelet szempontjából érdekes erőforrásokat reprezentáló illetve kezelő Java objektumok, un. managed Bean-ek (MBean-ek) egy kifejezetten felügyeleti célú névvel regisztrációra kerülnek egy MBeanServer-ben, attribútumaikkal és hívható metódusaikkal együtt. (A regisztrálhatósághoz bizonyos, pl. osztályelnevezési konvenciókat megadó feltételeket az objektumnak teljesítenie kell.)

Az MBeanServer egy, az MBean-ek eket nyilvántartó objektum, melynek publikus interfésze az MBean regisztráció és törlés mellett lehetőséget biztosít többek között:

  • MBean-ek név és név-minta szerinti keresésére,
  • MBean-ek attribútum- és metódushalmazának lekérdezésére,
  • attribútumok olvasására és írására,
  • metódusok hívására,
  • az MBean-ek által létrehozott jelzésekre (Notification-ök) feliratkozásra.

Megjegyzendő, hogy a mind lokális, mind távoli (lásd később) MBeanServer-hozzáférések esetén alkalmazható interfész metóduskészlete szűkebb, mint annak a specifikusan a lokális Java virtuális gépben található MBeanServer-hez kiterjesztett gyermeke.

A J2SE 5.0-tól kezdve a Java implementációk tartalmaznak egy platform MBeanServer-t. Ez amellett, hogy képes az alkalmazások felügyeletére létrehozott Mbean-eket kezelni, a java.lang.management API által meghatározott MBeaneket implementálva magának a futtató platformnak a felügyeletét is támogatja. Egy JVM-en belül több MBeanServer objektum létezése is megengedett; a platform mellett akár más JMX implementációkkal is dolgozhatunk egyidejűleg. (Az MBeanServer-ek alapesetben egymástól és egymás MBean-jeitől teljesen függetlenek; igény esetén azonban például kaszkádolhatóak.)

Az ugyanazon JVM-en belüli MBeanServer(-ek) elérésére a felügyeletet végző Java kód a specifikáció megvalósításainak egy factory osztályát, vagy a platform implementáció factory osztályát használhatja. A távoli eléréshez azonban nyilvánvalóan szükség van valamilyen mechanizmusra, amely egy JVM MBeanServer-eit valamilyen formában elérhetővé teszi egy másik JVM objektumai számára.

A specifikáció szerint ezt a funkcionalitást látják el a konnektorok. Egy konnektor-megvalósítás részei a konnektor kliens (connector client) és a konnektor kiszolgáló (connector server). A kliens oldali megvalósítás célja az, hogy olyan, a már említett távoli interfészt implementáló lokális objektumot hozzon létre, melynek lokális metódushívásai végrehajtódnak a távoli MBeanServer-en, illetve melynek jelzéseit az átadja a helyi előfizetőknek. A specifikáció kötelezően megvalósítandóként leír egy távoli metódushívás alapú (Java RMI) konnektort, illetve egy opcionálisan megvalósítandó "JMX Messaging Protocol" alapút.

A specifikáció elismeri "protokoll adapterek" (protocol adapters) implementálásának esetleges szükségességét; ezek nem-Java kliensek számára nyújtanának hozzáférést pl. HTML vagy SNMP felett. (A szerző legjobb tudomása szerint elterjedten használt ilyen megoldás nincs.) Egy nagyon érdekes, de 2008 októberében még csak "Early Access Draft" szintű projekt a Web Services Connector; a konnektor a WS-Management szabványt használja hordozóprotokollként, így a klienseknek nem kell mindenképpen Java alkalmazásoknak lenniük (az implementáció használhatóságát demonstrálták már WinRM-mel; elméletileg nyílt implementációkkal, mint pl. a wiseman is működőképesnek kell lennie.)

2 MBean-ek metaadatai

(thumbnail)
A JMX metaadat-osztályok (a szabvány 61. oldaláról átemelve); javax.management csomag
Altalános esetben egy MBean attribútumait és metódusait az MBeanServer-től kérdezzük le. Látható, hogy a metaadat-osztályok Java osztályok egyszerű leírását adják. Kiemelendő, hogy a típus-adatok (beépített Java típusok illetve osztálynevek) egyszerűen sztringként modellezettek. Elméletileg ez lehetőséget biztosít arra, hogy a kliens ellenőrizze, hogy rendelkezik-e a megfelelő osztálydefiníciókkal; a gyakorlatban azonban a hiányzó osztálydefiníciók és a sorosíthatósági problémák elkerülésére ajánlott az MBean-ek interfészében a beépített osztályokra és típusokra, valamint azok tömbjeire szorítkozni.


3 JMX objektumnevek

TODO: java.lang.management API

Személyes eszközök