Esse artigo faz parte da revista Java Magazine edição 05. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.imagem_pdf.jpg

Além das fronteiras

Assuma o controle com JMX

   A API Java Management Extensions, prevista para inclusão no J2EE 1.4 e no J2SE 1.5 padroniza o gerenciamento de aplicações

Nesta edição vamos falar sobre administração de aplicações Java com a tecnologia JMX, Java Management Extensions (JSR-003). A especificação de JMX já está na versão 1.2 e vem se mostrando uma "mão na roda" para a administração de aplicações e servidores Java.

Utilização

Grande parte das aplicações comerciais precisa de algum tipo de administração, normalmente implementada através da parametrização com arquivos de propriedades, ou usando módulos de administração da própria aplicação. A parametrização e o monitoramento são recursos fundamentais para atender a requisitos como performance e escalabilidade. Administradores de sistemas de grande porte precisam de ferramentas que permitam observar o uso de recursos, analisar o volume de clientes, parar e iniciar módulos e até alterar as propriedades de balanceamento de carga — e muitas vezes é necessário alterar parâmetros de infra-estrutura sem parar a aplicação.

A tecnologia JMX abre um novo leque de opções para os desenvolvedores, padronizando a administração de aplicações e servidores J2EE.

Arquitetura

O núcleo da tecnologia JMX são os Management Beans ou simplesmente MBeans. Um MBean representa um dispositivo, uma aplicação, parte de uma aplicação — qualquer recurso que precise ser gerenciado. Os MBeans são semelhantes aos conhecidos JavaBeans, com propriedades que podem ser lidas ou alteradas. Também podem conter operações, usadas para executar alguma ação de gerenciamento sobre uma aplicação — parar um módulo, por exemplo.

A idéia é disponibilizar informações da aplicação através dos MBeans, que são conectados a um servidor de gerenciamento. As informações chegam a uma ferramenta específica através de conectores, responsáveis por converter as informações dos MBeans num protocolo específico como SNMP ou IIOP (veja a Figura 1).

Com essa arquitetura, a especificação permite que informações de gerenciamento sejam disponibilizadas de maneira independente do protocolo de administração. Por exemplo, imagine que sua empresa já tenha adquirido um bom ferramental para administração de aplicações e dispositivos via SNMP (Simple Netowork Management Protocol) — esse é o caso de muitas empresas. Com a tecnologia JMX, as novas aplicações J2EE podem ser compatíveis com as ferramentas já compradas sem que, para isso, tenham que estar vinculadas ao protocolo utilizado.

Outra grande vantagem é a disponibilização facilitada das informações em vários formatos. Por exemplo, a implementação de referência de JMX inclui um adaptador HTML/HTTP para a publicação dos MBeans num pequeno site web; isso pode ser feito rapidamente com apenas quatro linhas de código.

MBeans

Existem basicamente dois tipos de MBeans: estáticos e dinâmicos. A diferença está da definição da sua interface, os atributos e métodos visíveis para as ferramentas de administração. Um MBean estático tem sua interface definida pelos métodos de uma interface Java, em tempo de compilação.

Um MBean dinâmico pode mudar sua interface durante a execução; implementa a interface DynamicBean, que define métodos para listar os atributos e métodos disponíveis. No entanto, o cliente — no caso a ferramenta de gerenciamento — não faz distinção entre os dois tipos de implementação de MBeans.

 

Existe também um tipo especial de MBean dinâmico, o Model MBean, usado para auxiliar na criação de MBeans dinâmicos que requerem codificação muito extensa.

Agentes e adaptadores

MBeans são registrados num servidor por um agente – uma classe Java com o papel de interagir com a API JMX para executar as tarefas de criação e registro. O servidor de MBeans é o núcleo central da arquitetura e fornece os meios para criação, registro e localização de MBeans.

Ao ser registrado num servidor, o MBean deve estar associado a uma identificação, chamada de ObjectName, composta por um domínio e uma série de pares do tipo "chave=valor". O domínio tem a função de agrupar MBeans relacionados; os pares apresentam características usadas na localização e identificação. ...

Quer ler esse conteúdo completo? Tenha acesso completo