JMX

** Java Management Extensions** (**JMX**) – Java technologija, kuri aprūpina komponentais, skirtais valdyti bei stebėti Java paremtomis technologijomis sukurtą programinę įrangą, sistemų objektus, periferinius įrenginius (pvz., spausdintuvus) bei į paslaugas orientuotus tinklus. Šiuos resursus atvaizduoja objektai, kurie vadinami MBeans (nuo Managed Bean termino). Naudojant API klasės gali būti dinamiškai įkraunamos ir realizuojamos.
Valdymo bei stebėjimo programinės įrangos projektavimui bei kūrimui naudojamas Java Dynamic Management Kit įrankis.

Tipiniai JMX naudojimo pavyzdžiai:
* Stebėti bei keisti programinės įrangos konfigūraciją.
* Rinkti, kaupti bei pateikti programinės įrangos elgsenos statistiką.
* Pranešti apie būsenos pasikeitimus bei programos klaidas.

JMX API taip pat palaiko nuotolinį prisijungimą kuris įgalina nutolusią valdymo programą prisijungti prie valdomo įrenginio, naudojant viešuosius bei privačiuosius interneto tinklus.

J2EE bendruomenės iniciatyva, JMX yra J2SE rinkinio standartinis komponentas nuo 5.0 versijos.

JMX yra patentuotas kaip Sun Microsystems, Inc prekinis ženklas.

JMX 1.0, 1.1 ir 1.2 buvo aprašyti JSR 003  Java Community Process. Nuo 2006, JMX 2.0 yra tobulinamas pagal JSR 255 . Nuotoliniam valdymui bei stebėjimui naudojama JMX Remote API 1.0 yra aprašyta JSR 160 . JMX Remote API plėtinys web tarnyboms yra kuriamas pagal JSR 262 .

## Architektūra
JMX yra pagrįsta 3-jų lygių architektūra:
* *Zondo* lygis: turi zondus (vadinamus MBeans) instrumentuoti http://www.glenmccl.com/instr/instr.htm  resursus. Dar vadinama *Instrumentacijos* lygiu.
* *Agento* lygis: JMX branduolys yra MBeanServer. Jis atlieka tarpinininko vaidmenį tarp MBean it programinės įrangos.
* *Nuotolinio valdymo* lygs: leidžia nutolusiai programinei įrangai naudojant konektorius ir adaperius pasiekti MBeanServer. Konektorius leidžia pilnai pasiekti MBeanServer API nuotoliniu būdu naudojant daugelį skirtingų komunikacijų framework'ų (RMI, IIOP, JMS, WS-* ir t. t.), o adapteris pritaiko API kitam protokolui (pvz., SNMP) arba web pagrindo sąsajai (pvz., HTML/HTTP, WML/HTTP ir t. t.).

Programine įranga gali būti standartinės konsolės (pvz JConsole  ir MC4J ) bei kitos specifinės stebėjimo aplikacijos. Kita programinė įranga gali bendrauti su MBeans JMX konektoriais ir protokolo adapteris.
Konektoriai naudojami agento prijungimui prie nutolusios valdymo programinės įrangos kuri turi JMX palaikymą. Tokia bendravimo forma naudoja JMX agento konektorių bei konektoriaus "klientą" valdymo aplikacijoje.

Protokolo adapteriai transoformuoja valdymo aplinką kitu protokolu. Dažniausiai tai yra reikalinga tuomet, kai naudojama valdymo programinė įranga palaiko tik specifinį valdymo protokolą (pvz SNMP).

## Palaikymas

JMX yra palaikoma skirtingų gamintojų daugybėje lygių:

* JMX yra palaikoma tokiuose Java aplikacijų serveriuose kaip JBoss, JOnAS, WebSphere Application Server, WebLogic, SAP Netweaver Application Server, Oracle Application Server 10g ir Sun Java System Application Server.
* Sistemų valdymo įrankiai, kurie palaiko šį protokolą apima, bet neapsiriboja HP OpenView, Zenoss, Hyperic ir GroundWork Monitor.
* JMX taip pat palaiko ir tokių produktų kaip Apache Tomcat servlet konteinerius. Plačiau apie tai http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html.
* MX4J http://mx4j.sourceforge.net/ yra atviro kodo JMX.
* jManage http://www.jmanage.org  yra atviro kodo JMX konsolė su web bei komandinės eilutės sąsajom skirta korporacijoms.
* MC4J http://mc4j.org/  yra atviro kodo visualus įrankis jungtis prie JMX tarnybinių stočių

## Nuorodos

## Knygos
* J. Steven Perry: *Java Management Extensions*, O'Reilly, ISBN 0-596-00245-9
* Marc Fleury, Juha Lindfors: *JMX: Managing J2EE with Java Management Extensions*, Sams Publishing, ISBN 0-672-32288-9
* Jeff Hanson: *Connecting JMX Clients and Servers: Understanding the Java Management Extensions*, APress L. P., ISBN 1-59059-101-1
* Benjamin G Sullins, *Mark B Whipple : JMX in Action: You will also get your first JMX application up and running*, Manning Publications Co. 2002, ISBN 1-930110-56-1

## Nuorodos
* JMX on java.sun.com
* JMX at JBoss.com 
* JSR 255 (JMX 2.0)
* JSR 3 (JMX 1.0, 1.1, and 1.2)
;Straipsniai
* "Enabling Component Architectures with JMX" by Marc Fleury and Juha Lindfors
* "Introducing A New Vendor-Neutral J2EE Management API" by Andreas Schaefer
* "Java in the management sphere " by Max Goff
* "Managing J2EE Systems with JMX and JUnit " by Lucas McGregor
* JMX/JBoss  - The microkernel design
* JMX and jManage