Extensões de gerenciamento Java - Java Management Extensions

Java Management Extensions ( JMX ) é uma tecnologia Java que fornece ferramentas para gerenciar e monitorar aplicativos , objetos do sistema, dispositivos (como impressoras ) e redes orientadas a serviços. Esses recursos são representados por objetos chamados MBeans (para Managed Bean ). Na API, as classes podem ser carregadas e instanciadas dinamicamente. O gerenciamento e o monitoramento de aplicativos podem ser projetados e desenvolvidos usando o Kit de gerenciamento dinâmico Java.

JSR 003 do Java Community Process definiu JMX 1.0, 1.1 e 1.2. O JMX 2.0 estava sendo desenvolvido sob JSR 255, mas este JSR foi posteriormente retirado. O JMX Remote API 1.0 para gerenciamento e monitoramento remoto é especificado pelo JSR 160. Uma extensão do JMX Remote API para Web Services estava sendo desenvolvida no JSR 262.

Adotado desde o início pela comunidade J2EE , o JMX faz parte do J2SE desde a versão 5.0. "JMX" é uma marca comercial da Oracle Corporation .

Arquitetura

Arquitetura JMX

JMX usa uma arquitetura de três níveis:

  1. O nível Probe - também chamado de nível de Instrumentação - contém as probes (chamadas MBeans ) que instrumentam os recursos
  2. O nível do Agente , ou MBeanServer - o núcleo do JMX. Ele atua como um intermediário entre o MBean e os aplicativos.
  3. O nível de Gerenciamento Remoto permite que aplicativos remotos acessem o MBeanServer por meio de conectores e adaptadores. Um conector fornece acesso remoto total à API MBeanServer usando várias comunicações ( RMI , IIOP , JMS , WS- * …), enquanto um adaptador adapta a API a outro protocolo ( SNMP ,…) ou GUI baseada na Web ( HTML / HTTP , WML / HTTP , ...).

Os aplicativos podem ser consoles genéricos (como JConsole e MC4J ) ou aplicativos específicos de domínio (monitoramento). Os aplicativos externos podem interagir com os MBeans por meio do uso de conectores JMX e adaptadores de protocolo. Os conectores servem para conectar um agente a um aplicativo de gerenciamento remoto habilitado para JMX. Essa forma de comunicação envolve um conector no agente JMX e um cliente de conector no aplicativo de gerenciamento.

Os adaptadores de protocolo fornecem uma visão de gerenciamento do agente JMX por meio de um determinado protocolo. Os aplicativos de gerenciamento que se conectam a um adaptador de protocolo geralmente são específicos para um determinado protocolo.

Feijões gerenciados

Um bean gerenciado - às vezes simplesmente referido como MBean - é um tipo de JavaBean , criado com injeção de dependência . Beans gerenciados são particularmente usados ​​na tecnologia Java Management Extensions - mas com Java EE 6 a especificação fornece um significado mais detalhado de um bean gerenciado.

O MBean representa um recurso em execução na máquina virtual Java , como um aplicativo ou serviço técnico Java EE (monitor transacional, driver JDBC, etc.). Eles podem ser usados ​​para coletar estatísticas sobre questões como desempenho, uso de recursos ou problemas (pull); para obter e definir configurações ou propriedades do aplicativo (push / pull); e notificando eventos como falhas ou mudanças de estado (push).

O Java EE 6 fornece que um bean gerenciado é um bean implementado por uma classe Java, que é chamada de classe de bean. Uma classe Java de nível superior é um bean gerenciado se for definido como um bean gerenciado por qualquer outra especificação de tecnologia Java EE (por exemplo, a especificação de tecnologia JavaServer Faces ) ou se atender a todas as seguintes condições:

  1. Não é uma classe interna não estática.
  2. É uma aula concreta, ou é anotada @Decorator .
  3. Ele não é anotado com uma anotação de definição de componente EJB ou declarado como uma classe de bean EJB em ejb-jar.xml .

Nenhuma declaração especial, como uma anotação, é necessária para definir um bean gerenciado.

Um MBean pode notificar o MBeanServer de suas mudanças internas (para os atributos) implementando o javax.management.NotificationEmitter . A aplicação interessada nas mudanças do MBean registra um listener ( javax.management.NotificationListener ) para o MBeanServer. Observe que o JMX não garante que os ouvintes receberão todas as notificações.

Tipos

Existem dois tipos básicos de MBean:

  • Os MBeans padrão implementam uma interface de negócios contendo setters e getters para os atributos e as operações (ou seja, métodos).
  • Os MBeans dinâmicos implementam a javax.management.DynamicMBean interface que fornece uma maneira de listar os atributos e operações e obter e definir os valores dos atributos.

Tipos adicionais são Open MBeans , Model MBeans e Monitor MBeans . MBeans abertos são MBeans dinâmicos que dependem dos tipos de dados básicos. Eles são autoexplicativos e mais fáceis de usar. MBeans de modelo são MBeans dinâmicos que podem ser configurados durante o tempo de execução. Uma classe MBean genérica também é fornecida para configurar dinamicamente os recursos durante o tempo de execução do programa.

Um MXBean ( Platform MBean ) é um tipo especial de MBean que reifica subsistemas da Java Virtual Machine , como coleta de lixo , compilação JIT , pools de memória , multi-threading , etc.

Um MLet ( miniaplicativo de gerenciamento ) é um utilitário MBean para carregar, instanciar e registrar MBeans em um MBeanServer a partir de uma descrição XML . O formato do descritor XML é:

 <MLET CODE = ''class'' | OBJECT = ''serfile''
   ARCHIVE = ''archiveList''
   [CODEBASE = ''codebaseURL'']
   [NAME = ''objectName'']
   [VERSION = ''version'']
 >
   [arglist]
 </MLET>

Apoiar

O JMX é compatível em vários níveis por diferentes fornecedores:

Veja também

Referências

  1. ^ "Visão geral do Java Dynamic Management Kit" . docs.oracle.com . Recuperado em 12 de janeiro de 2021 .
  2. ^ JSR 003: Especificação JavaTM Management Extensions (JMXTM)
  3. ^ JSR 255: Especificação JavaTM Management Extensions (JMXTM), versão 2.0
  4. ^ JSR 160: API remota JavaTM Management Extensions (JMX)
  5. ^ JSR 262: Conector de serviços da Web para agentes Java Management Extensions (JMX)
  6. ^ Usando JConsole para monitorar aplicativos
  7. ^ "O projeto MC4J cria software de gerenciamento para servidores de aplicativos J2EE e outros aplicativos Java" . Arquivado do original em 23/03/2007 . Página visitada em 2006-08-27 .
  8. ^ Extensões de gerenciamento Java (JMX) - Melhores práticas
  9. ^ "MLet (Java 2 Platform SE 5.0)" . Sun Microsystems . Página visitada em 22/06/2008 .
  10. ^ UnboundID Corp. Arquivado em 06/03/2012 na máquina Wayback
  11. ^ http://www.opennms.org/wiki/Category:JMX
  12. ^ "Coleta de dados JMX" . www.logicmonitor.com . Recuperado em 2020-11-20 .
  13. ^ Apache Tomcat 6.0: Monitorando e gerenciando o Tomcat (manual do Tomcat)
  14. ^ https://github.com/prometheus/jmx_exporter

Leitura adicional

Artigos

Livros

links externos