Java Management Extensions: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m robot Aggiungo: de |
Aggiungi 2 libri per la Wikipedia:Verificabilità (20240210)) #IABot (v2.0.9.5) (GreenC bot |
||
(28 versioni intermedie di 26 utenti non mostrate) | |||
Riga 1:
'''Java Management Extensions''' ('''JMX''') è una tecnologia [[Piattaforma Java|Java]] che fornisce strumenti per la gestione e il monitoraggio di [[Applicazione (informatica)|applicazioni]], oggetti di sistema, dispositivi (come le [[Stampante|stampanti]]) e reti orientate ai servizi. Tali risorse sono rappresentate da oggetti chiamati Managed Bean (o MBean). Nell'[[Application programming interface|API]], le [[Classe (informatica)|classi]] possono essere caricate e istanziate dinamicamente. La gestione e il monitoraggio delle applicazioni possono essere progettate e sviluppate utilizzando il Java Dynamic Management Kit.<ref>{{Cita web|url=https://docs.oracle.com/cd/E19698-01/816-7607/6mdjpi6v1/index.html|titolo=Java Dynamic Management Kit 5.1 Getting Started Guide|sito=docs.oracle.com|lingua=en|accesso=16 aprile 2021}}</ref>
{{stub informatica}}▼
La [[Java Specification Request|JSR]] 003<ref>{{cita web|url=http://www.jcp.org/en/jsr/detail?id=3|titolo=JSR 003: JavaTM Management Extensions (JMXTM) Specification|lingua=en|accesso=16 aprile 2021}}</ref> del [[Java Community Process]] definì JMX 1.0, 1.1 e 1.2. JMX 2.0 è stato sviluppato sotto la JSR 255, ma questa JSR è stata successivamente ritirata.<ref>{{Cita web|url=http://www.jcp.org/en/jsr/detail?id=255|titolo=JSR 255: JavaTM Management Extensions (JMXTM) Specification, version 2.0|lingua=en|accesso=16 aprile 2021}}</ref> La JMX Remote API 1.0 per la gestione e il monitoraggio remoto è specificata dalla JSR 160.<ref>{{Cita web|url=http://www.jcp.org/en/jsr/detail?id=160|titolo=JSR 160: JavaTM Management Extensions (JMX) Remote API|lingua=en|accesso=16 aprile 2021}}</ref> Inoltre, con la JSR 262 era stata sviluppata un'estensione della JMX Remote API per i Web Services.<ref>{{Cita web|url=http://www.jcp.org/en/jsr/detail?id=262|titolo=JSR 262: Web Services Connector for Java Management Extensions (JMX) Agents|lingua=en|accesso=16 aprile 2021}}</ref>
[[Categoria:Programmazione]]▼
Adottata inizialmente dalla comunità [[Java EE|J2EE]], JMX è parte integrante di [[Java Platform, Standard Edition|J2SE]] a partire dalla versione 5.0. "JMX" è un marchio di [[Oracle Corporation]].
== Architettura ==
[[File:JMX Architecture.svg|thumb|400px|Architettura JMX]]
JMX utilizza un'architettura a tre livelli:
# Il livello ''Probe'', chiamato anche ''Instrumentation''. Contiene le sonde (chiamate MBean) che strumentano le risorse.
# Il livello ''Agent'', o MBeanServer. È il cuore di JMX e funge da intermediario tra un MBean e le applicazioni.
# Il livello ''Remote Management.'' Consente alle applicazioni remote di accedere ad un MBeanServer attraverso connettori e adattatori. Un connettore fornisce l'accesso remoto completo all'API di un MBeanServer utilizzando varie comunicazioni ([[Remote Method Invocation|RMI]], [[IIOP]], [[Java Message Service|JMS]], WS- *, ecc.), mentre un adattatore adatta l'API ad un altro protocollo (come [[Simple Network Management Protocol|SNMP]]) o alla [[Interfaccia grafica|GUI]] basata sul Web ([[HTML]]/[[Hypertext Transfer Protocol|HTTP]], [[Wireless Markup Language|WML]]/[[Hypertext Transfer Protocol|HTTP]], ecc.).
Le applicazioni possono essere console generiche o applicazioni specifiche del dominio. Le applicazioni esterne possono interagire con gli MBean tramite l'uso di connettori JMX e adattatori di protocollo. I connettori servono per connettere un agente con un'applicazione di gestione remota abilitata per JMX. Questa forma di comunicazione coinvolge un connettore nell'agente JMX e un client connettore nell'applicazione di gestione.
Gli adattatori di protocollo forniscono una vista di gestione dell'agente JMX attraverso un determinato protocollo. Le applicazioni di gestione che si connettono a un adattatore di protocollo sono in genere specifiche per il protocollo specificato.
== Managed Bean ==
Un '''Managed Bean''', a volte indicato semplicemente come ''MBean'', è un tipo di [[JavaBean]] creato con un [[dependency injection]]. I Managed Bean sono particolarmente utilizzati nella tecnologia Java Management Extensions, ma con Java EE 6 la specifica prevede un significato più dettagliato di Managed Bean.
Un MBean rappresenta una risorsa in esecuzione nella [[Macchina virtuale Java|Java Virtual Machine]], ad esempio un'applicazione o un servizio tecnico Java EE (monitor transazionale, driver JDBC, ecc.). Essi possono essere utilizzati per: raccogliere statistiche su problemi come prestazioni, utilizzo delle risorse o problemi (pull); ottenere e impostare le configurazioni o le proprietà dell'applicazione (push/pull); notificare eventi come guasti o cambiamenti di stato (push).
Java EE 6 prevede che un Managed Bean sia un [[JavaBean|bean]] implementato da una classe Java, denominata classe bean. Una classe Java di primo livello è un Managed Bean se è definito come tale da qualsiasi altra specifica della tecnologia Java EE (ad esempio, la specifica della tecnologia [[JavaServer Faces]]) o se soddisfa tutte le seguenti condizioni:
# Non è una classe interna non statica.
# È una classe concreta o è annotato con <code>@Decorator</code> .
# Non è annotato con un'annotazione di definizione del componente EJB o dichiarato come classe bean EJB in <code>ejb-jar.xml</code>.
Non è richiesta alcuna dichiarazione speciale (come un'annotazione) per definire un Managed Bean.
Un MBean può notificare ad un MBeanServer le sue modifiche interne (per gli attributi) implementando <code>javax.management.NotificationEmitter</code> . L'applicazione interessata alle modifiche di un MBean registra un listener (<code>javax.management.NotificationListener</code>) verso un MBeanServer. Si noti che JMX non garantisce che i listener riceveranno tutte le notifiche.<ref>{{Cita web|url=http://www.oracle.com/technetwork/java/javase/tech/best-practices-jsp-136021.html|titolo=Java Management Extensions (JMX) - Best Practices|lingua=en|accesso=16 aprile 2021}}</ref>
=== Tipi ===
Esistono due tipi di base di MBean:
* ''MBean standard'': implementano un'interfaccia business contenente setter e getter per gli attributi e le operazioni (cioè i metodi).
* ''MBean dinamici'': implementano l'interfaccia <code>javax.management.DynamicMBean</code>, che fornisce una maniera per elencare gli attributi e le operazioni e per prelevare ed impostare i valori degli attributi.
Altri tipi sono: ''Open MBean'', ''Model MBean'' e ''Monitor MBean''. Gli ''Open MBean'' sono MBean dinamici che si basano sui tipi di dati di base; sono autoesplicativi e più facili da usare. I ''Model MBean'' sono MBean dinamici che possono essere configurati durante il [[runtime]]. Viene inoltre fornita una classe MBean generica per configurare dinamicamente le risorse durante il runtime del programma.
Un MXBean (o ''Platform MBean'') è un tipo speciale di MBean che [[Reificazione (informatica)|reifica]] i sottosistemi della [[Macchina virtuale Java|Java Virtual Machine]], come ad esempio il [[garbage collection]], la [[Compilatore just-in-time|compilazione JIT]], i pool di memoria, il [[Thread (informatica)|multi-threading]], ecc.
Un MLet (o ''Management applet'') è un MBean di utilità per caricare, istanziare e registrare gli MBean in un MBeanServer da una descrizione [[XML]]. Il formato del descrittore XML è il seguente:<ref>{{Cita web|url=http://java.sun.com/j2se/1.5.0/docs/api/javax/management/loading/MLet.html|titolo=MLet (Java 2 Platform SE 5.0)|editore=Sun Microsystems|lingua=en|accesso=16 aprile 2021}}</ref>
<pre>
<MLET CODE = ''class'' | OBJECT = ''serfile''
ARCHIVE = ''archiveList''
[CODEBASE = ''codebaseURL'']
[NAME = ''objectName'']
[VERSION = ''version'']
>
[arglist]
</MLET>
</pre>
== Note ==
<references />
== Bibliografia ==
*{{cita libro|autore=Benjamin G. Sullins|autore2=Mark B. Whipple|titolo=JMX in Action: You will also get your first JMX application up and running|url=https://archive.org/details/jmxinaction0000sull|editore=Manning Publications Co.|anno=2002|isbn=1-930110-56-1|lingua=en}}
*{{cita libro|autore=J. Steven Perry|titolo=Java Management Extensions|anno=2002|url=https://archive.org/details/javamanagementex0000perr|editore=O'Reilly|isbn=0-596-00245-9|lingua=en}}
*{{cita libro|autore=Jeff Hanson|titolo=Connecting JMX Clients and Servers: Understanding the Java Management Extensions|anno=2004|url=https://archive.org/details/projmxjavamanage0000hans|editore=APress LP|isbn=1-59059-101-1|lingua=en}}
*{{cita libro|autore=Marc Fleury|autore2=Juha Lindfors|titolo=JMX: Managing J2EE with Java Management Extensions|anno=2002|url=https://archive.org/details/jmxmanagingj2eew0000lind|editore=Sams Publishing|isbn=0-672-32288-9|lingua=en}}
== Collegamenti esterni ==
*{{cita web|url=http://java.sun.com/javase/6/docs/technotes/guides/jmx/JMX_1_4_specification.pdf|titolo=Specifiche JMX 1.4 (parte di Java 6)|lingua=en}}
*{{cita web|url=http://www.jboss.org/community/docs/DOC-10941|titolo= JMX|lingua=en}}
*{{cita web|url=http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html|titolo= JMX|lingua=en}}
*{{cita web|url=http://jcp.org/en/jsr/detail?id=255|titolo=JSR 255 (JMX 2.0)|lingua=en}}
*{{cita web|url=http://jcp.org/en/jsr/detail?id=3|titolo=JSR 3 (JMX 1.0, 1.1 e 1.2)|lingua=en}}
|