Probabil cel mai important lucru în înțelegerea JMX - pentru a înțelege scopul creării sale. Tehnologia JMX a fost dezvoltat pentru a simplifica dezvoltarea sistemelor de monitorizare și control. Și poți controla aproape orice - atâta timp cât a fost scris în Java. Acest lucru poate fi un micro-dispozitiv de tip cititor de amprente sau de sistem, inclusiv mii de mașini, fiecare dintre care oferă anumite servicii.
utilizările tipice ale tehnologiei JMX:
- colectarea și publicarea datelor statistice privind aplicarea Rabta
- notificarea cu privire la orice modificări ale stării incorecte
Ceea ce este important de reținut - JMX, de fapt, a ordonat dezvoltator să ia în considerare resursele de aplicații ca obiecte și să lucreze cu ei ca resurse gestionate într-un mediu distribuit obiecte.
Ce beneficii oferă JMX. Iată cum descrie aceste beneficii Soare:
- Ușurința de implementare. Arhitectura JMX se bazează pe conceptul de „server de obiect gestionat“, care acționează ca agent de gestionare și poate fi rulat pe mai multe dispozitive / computere care acceptă Java.
- Scalabilitate. Agenții de servicii JXM sunt independente și pot fi introduse ca un plug-in-uri în agent JMX. Sistemul Componenta-osnovanaaya vă permite să creați soluții scalabile de la dispozitive mici la sisteme foarte mari.
- Abilitatea de a extinde conceptul în viitor. JMX vă permite să creați soluții flexibile. De exemplu, JMX vă permite să creați soluții simple, care pot găsi o varietate de servicii.
- Concentrându-se pe managementul. JMX oferă un servo proiectat să funcționeze într-un mediu distribuit și API-ul este proiectat pentru soluții care gestionează aplicații, rețele, servicii, etc.
JMX vă permite să creați arhitectura cu mai multe nivele, în cazul în care resursele gestionate și aplicația de management pot fi integrate într-o singură soluție, așa cum se arată în figură. Resursele reprezintă un Java-obhekty - ManagedBeans (MBeans), care sunt înregistrate pe serverul principal -MBean-server. Acest server acționează ca un agent și poate fi rulat practic oriunde există JVM.
Să aruncăm o privire mai atentă la ceea ce este prezentat în figură.
Acest strat conține MBean'y și resursele pe care le administrează. Resursele pot fi gestionate, în cazul în care acestea sunt fie dezvoltate în Java, sau au orice, pentru înfășurare Java. De fapt, ea devine un obiect de tip MBean de resurse (standard sau dinamice - mai mult pe aceasta mai târziu). StandartnyeMBeans este Java obiecte care fac obiectul unor modele de proiectare (de exemplu, acestea trebuie să aibă un constructor și setteri și getteri). MBeans dinamice sunt dezvoltate în conformitate cu o interfață specifică, care oferă o mai mare flexibilitate în design. Nivelul instrumentație permite MBeans să fie controlate la nivelul agentului (Agent Level), dar la acest nivel dezvoltatorul nu are nevoie să știe despre modul în care agentul cu care trebuie să interacționeze.
Principalele componente sunt Instrumenation Nivel:
- MBeans - este Java obiecte care implementeaza o interfață specială. Interfața include: 1), anumite cantități care pot fi disponibile; 2) operațiunile care pot fi invocate; 3) Notificarea trebuie trimisă; 4) constructori.
Există 4 tipuri de MBeans:
1. MBeans standard. Cele mai simple fasole. Interfata de administrare este definit printr-un set de metode
2. MBeans dinamice. Acestea pun în aplicare o interfață personalizată, care este pus la dispoziție în timpul rulării.
3. MBeans deschisă. Acest MBeans dinamice, care utilizează numai tipurile de date de bază pentru controlul universal.
4. MBeans model. Acest MBeans dinamice, care sunt complet configurabil și poate afișa descrierea lor în timpul rulării (ceva vrodeReflection)
- Modelul de notificare - JMX definește un model de bază notificator, care se bazează pe evenimente Java (eveniment). Utilizarea de notificare agenților MBeansi JMX pot transmite informațiile reciproc
- Clase de metadate MBean - Aceste clase includ structura pentru a descrie toate componentele interfețele MBeans: atributele notifier, operații, constructori. Pentru fiecare metadate includ numele, descrierea și anumite caracteristici (de exemplu, atributul este read-only sau citire / scriere, etc.).
- MBean Server - este registrul de obiecte care sunt utilizate pentru a gestiona. Orice obiect înregistrat pe serverul devine disponibil pentru aplicații. Trebuie remarcat faptul că serverul publică numai interfețe și nu permite referințe directe obiect. Orice resurse pe care doriți să le controlați trebuie să fie înregistrate pe server ca MBean. server de Standratny oferă o interfață pentru a accesa MBean. Interesant, MBean poate înregistra orice alte MBean, agentul însuși sau aplicația de la distanță prin intermediul serviciilor rapredelennye. Când vă înregistrați MBean ar trebui să dea un nume unic, care va fi folosit pentru a desemna danomu obiect.
- agent de servicii - obiectele care pot interacționa cu resursele din MBean (MBean utilizat pentru a se referi la resursele). Conceput pentru a controla API JMX, care include următoarele servicii:
1. Dinamic Class Loader - cu ajutorul applet'a de management (m-let) vă permite să încărcați clase și biblioteci binare din diferite locuri
2. Monitoare - se uită la cantitatea de schimbare (Chilov sau șir de caractere) MBean și poate informa cu privire la aceste schimbări alte obiecte.
3. Timere - furnizează un program de notificare.
4. Alte servicii - definesc relația dintre MBean la tipuri predefinite
Acest strat conține componente care permit aplicațiilor să interacționeze cu agentul. Acesta oferă interfața pentru a pune în aplicare JMXmenedzherov.
Incepand cu Java SE 5 făcut sprijin JMX 1.2 și JMX la distanță API 1.0, care sunt astăzi punerea în aplicare oficiale. Java SE include următoarele subsisteme:
- Instrumente de JVM - concepute pentru monitorizare și control. O capacitate built-in pentru accesul local și la distanță.
- Monitorizarea API și management - pachetul java.kang.management include o interfață pentru monitorizarea și gestionarea JVM. Cu aceasta puteți obține o varietate de informații - numărul de clase încărcate, numărul de fire, setările de memorie, statistici și alte colector de gunoi.
- instrumente de management - diverse utilitati. În special JConsole cu care vă puteți conecta la un JVM de funcționare și a obține parametrii săi.
Puteti vedea pentru tine parametrii JVM rulează folosind utilitarul JConsole. O poți face la nivel local - trebuie doar să rulați orice aplicație (mai bine dacă aceasta este o formă de pe ecran - nu pentru a închide) și apoi executați jconsole - direct din linia de comandă. Dacă nu ați înregistrat calea de a kaktaloga cu acest utilitar (situat în kaktloge cu javac), apoi căutați-l în directorul.
Remotely ceva mai complicat - să nu fie chinuit cu setările de fișier parola aplicație, puteți începe cu linia
După cum puteți vedea aici totul este foarte simplu - interfață descrie toate cele trei metode. Setter și getter pentru rând și o acțiune - „Say Hello» - sayHello.
Clasa prezintă, de asemenea, dificultăți deosebite. Ea are doi constructori - unul cu un șir de caractere implicit de inițializare, iar al doilea este specificat șirul. Toate cele trei metode sunt, de asemenea, puse în aplicare. Cu toate acestea, poate fi deja o MBean'om reală. Deci, mândru.
Dacă luați mai în serios, de fapt, acesta este un pas puternic spre intelegerea JMX obiect. La urma urmei avem este ușor de a face mai multe lucruri deodată:
- Setați sau puteți citi parametrii. (Eu vorbesc de set / get metode). Acum există doar o linie, dar poți fi cu adevărat valoros. Cum ar fi spațiu pe disc. Adevărat, el este probabil să fie readonly. Dar poate fi controlată prin parametri - cum ar fi numărul de utilizatori conectați. Sau sistem de timp. Sau o adresă URL nouă într-o bază de date pentru statistici.
- Cere MBean pentru a efectua orice acțiune (e sayHello aproximativ acum) - de exemplu, pentru a reporni aplicația. Sau trimite mail la. Există tot felul de lucruri utile pe care le pot solicita.
Se merge la fel ca și faptul că MBean noastre nu va funcționa. Are nevoie de un server pe care se va lucra. Să trecem la subiect.
În această secțiune, vom crea un server și să-l locale, și anume, acesta va fi disponibil numai la mașina noastră și mașina noastră. În esență, în mod direct.
Vedem un mesaj pe ecran:
SimpleAgent se execută ...
Apăsați pentru a continua ...
Serverul nostru cu binom nostru a lansat si acum ne putem întoarce la el. Nu închideți această fereastră - este încă util pentru noi. Pornește deja cunoscut jconsole instrument
Noi vedem aplicația noastră. Selectați și faceți clic pe «Conectare».
Am subliniat cel mai interesant - un semn de carte unde puteți vedea MBean, care pot fi accesate. M-am schimbat deja valoarea noastră «Bună» în «Bună, lume». Acest lucru nu este ușor, dar foarte simplu - repara direct on-line
Și acum, în arborele din stânga, evidențiați „Operațiuni«-»sayHello“.
Dacă facem clic pe butonul „sayHello“, care spune că vom vedea un mesaj
Si uita-te la fereastră, în cazul în care serverul nostru se execută. Vei vedea cu siguranță acolo inscripția «Bună, lumea» (Dacă aveți același titlu ca și mine).
La distanță apel cherezRMI
Pentru apel la distanță, avem nevoie de cel puțin Java 5.0. În principiu, este posibil, și 1,4, dar atunci va fi necesar să se instaleze pachete suplimentare. Deci, vom lucra pe Java 5.0 sau mai mare pentru viteză.
Accesul de la distanță se bazează pe ideea de adaptoare (conectori) prin care aplicația la nivel de manager (cm. de mai sus) poate reacționa cu agentul (MBeanServer). Cu alte cuvinte, el MBeanServer se poate conecta cu diverși conectori, prin care acesta este disponibil. Considerăm doua conexiune varinat - prin RMI și peste HTTP.
codul nostru de server se va schimba un pic.
Dacă nu faci mizerie, apoi din nou egant nostru rula ca de obicei. Și acum îl puteți utiliza prin tastarea adresei URL în browser.
Pe pagina veti vedea MBean noastre minunate
Apăsați partea de sus a link-urile marcate și veți fi direcționat către o pagină care vă va permite să lucreze cu fasole ta.
Cred că va fi ușor de înțeles.
În acest articol, nu am considerat aplicații client posibilitatea napisnaiya. Deși cursul va fi posibil și necesar să se scrie, dacă doriți. Dar vom vorbi despre un alt timp.