JMX

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
a
a
22. sor: 22. sor:
 
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 [http://java.sun.com/j2ee/1.4/docs/api/javax/management/MBeanServerFactory.html ''factory''] osztályát, vagy a [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/ManagementFactory.html 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.
 
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 [http://java.sun.com/j2ee/1.4/docs/api/javax/management/MBeanServerFactory.html ''factory''] osztályát, vagy a [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/ManagementFactory.html 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 [http://java.sun.com/javase/6/docs/api/javax/management/MBeanServerConnection.html 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ó 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 [http://java.sun.com/javase/6/docs/api/javax/management/MBeanServerConnection.html 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ú ([http://en.wikipedia.org/wiki/Java_remote_method_invocation Java RMI]) konnektort, illetve egy opcionálisan megvalósítandó "JMX Messaging Protocol" alapút. A specifikáció elismeri "protokoll adapterek" 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.)
   
 
TODO: java.lang.management API
 
TODO: java.lang.management API

A lap 2008. december 18., 02:10-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.

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" 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.)

TODO: java.lang.management API

Személyes eszközök