// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Conceitos Básicos sobre Monitoramento do JMX no NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Conceitos Básicos sobre Monitoramento do JMX no NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Conceitos Básicos sobre Monitoramento do JMX no NetBeans IDE

O Módulo JMX do NetBeans integra a tecnologia do JMX correto para seu workflow no NetBeans IDE. Este módulo permite que você desenvolva aplicações de gerenciamento, adicione o gerenciamento às aplicações existentes, desenvolva aplicações do gerenciador e monitore o estado da Máquina Virtual.

Este documento foi atualizado para a versão 3.0 do módulo do Assistente JMX, para NetBeans IDE 6.5 e mais recente e em execução no JDK 6 ou JDK 7. Você pode fazer download do módulo JMX do Centro de Atualização.

*Observação:* este documento é uma introdução curta e rápida ao módulo JMX do NetBeans IDE. Para obter informações mais detalhadas, conclua o Tutorial do Módulo JMX link:jmx-tutorial.html[+Adicionando Instrumentação do JMX a uma Aplicação Java+].

Este documento com conceitos básicos fornece uma visão geral das funcionalidades do módulo JMX:

image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0"]

* Assistente para criar MBeans e Gerenciadores do JMX.
* Ações para atualizar MBeans existentes adicionando atributos e operações, implementando a Interface  ``MBeanRegistration``  ou a  ``NotificationEmitter`` .
* Geração de MBean de uma Classe Java existente.
* Ação para registrar MBeans no Servidor de MBeans da Plataforma Java.
* Capacidade de acionar a console de gerenciamento da Plataforma Java (JConsole).
* Capacidade de Executar e Depurar sua aplicação usando JConsole.
* Aplicação de amostra com base no jogo de Anagramas que mostra como adicionar a potência JMX à sua aplicação.
* Assistente para gerar um arquivo de propriedades de gerenciamento, que permite que você acione uma JVM gerenciável segura.
* Ajuda on-line.
* Tutoriais acessíveis do site link:../../index.html[+netbeans.org+].


== Pré-requisitos

Este tutorial pressupõe que você tenha algum conhecimento básico das tecnologias a seguir ou alguma experiência de programação com elas:

* Tecnologia JMX: link:http://download.oracle.com/javase/6/docs/technotes/guides/jmx/index.html[+ Documentação on-line do JMX+]
* Tecnologia Java: link:http://www.oracle.com/technetwork/java/javase/tech/index.html[+ Visão Geral das Tecnologias Java SE+]
* NetBeans IDE

Você também se beneficiará tendo conhecimento sobrelink:http://download.oracle.com/javase/6/docs/technotes/guides/management/index.html[+ Monitoramento e Gerenciamento da Plataforma Java+]


== Software Necessário para o Tutorial

Para este tutorial, você precisa ter instalado no computador os seguintes softwares:

|===
|Software ou Recurso |Versão Necessária 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |Pacote Java 7.2, 7.3, 7.4, 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Development Kit)+] |versão 7 ou 8 

|Plug-in do JMX |Disponível na Central de Atualização do NetBeans 

|Plug-in de JConsole |Disponível na Central de Atualização do NetBeans 
|===

Para instalar os plug-ins *JMX* e *JConsole*, selecione Ferramentas > Plug-ins e faça download dos módulos do Centro de Atualização do NetBeans.


== Acessando os Assistentes do JMX

Depois de instalar o plug-in JMX e seu projeto ser aberto, você pode acessar o assistente JMX, escolhendo Arquivo > Novo Arquivo (Ctrl-N) e selecionando a categoria JMX. Em seguida, você pode escolher o seguinte:

* *Arquivo de Configuração de Gerenciamento.* Arquivo de propriedades Java padrão para armazenar sua configuração para gerenciamento do JMX, principalmente para conexão remota e segurança.
* *Vários tipos de MBeans do JMX.* Um MBean pode representar um dispositivo, uma aplicação ou qualquer recurso que precisa ser gerenciado. Os MBeans expõem uma interface de gerenciamento: um conjunto de atributos legíveis e/ou graváveis e um conjunto de operações que podem ser chamadas, junto com uma autodescrição. A interface de gerenciamento não é alterada durante todo o ciclo de vida da instância do MBean. Os MBeans também poderão emitir notificações quando determinados eventos definidos ocorrerem. Os MBeans do JMX precisam ser registrados no Servidor MBean.
* *Gerenciador do JMX.* Um Gerenciador do JMX é uma aplicação que se conecta a um Servidor MBean do JMX remoto.
image::images/jmx-newfile.png[title="Assistentes de Novo Arquivo na categoria JMX"]


== Atualizando MBeans

Você pode adicionar atributos e operações em seus MBeans com as ações do menu contextual do JMX, que exibirão uma caixa de diálogo. Seus MBeans também podem implementar a interface  ``NotificationEmitter`` .

Para atualizar um MBean, selecione o arquivo Java da classe do MBean na árvore do Projeto e acesse o menu pop-up, clicando com o botão direito do mouse no nó, ou simplesmente clique com o botão direito na janela do editor, na qual seu arquivo Java da classe do MBean está aberto e acesse o menu pop-up JMX.

Estas ações são demonstradas no Exercício 3 do tutorial link:jmx-tutorial.html#Exercise_3[+ Adicionando Instrumentação JMX a uma Aplicação Java+].


== Registrando MBeans

Para se conectar remotamente a seus MBeans e gerenciar sua aplicação, seus MBeans precisam ser registrados no Servidor MBean.

Um Servidor MBean é a parte central principal da tecnologia JMX. Ele mantém referência de todos os MBeans registrados nele, pode enviar notificações do novo registro ou deleção do MBean e pode aceitar conexões remotas para expor atributos e operações de seus MBeans registrados. Se você não estiver familiarizado com Servidor MBean, leia a documentação de API  `` link:http://download.oracle.com/javase/6/docs/api/javax/management/MBeanServer.html[+ javax.management.mbeanserver +] `` ,

Iniciando o JDK 5, a Plataforma Java fornece um Servidor MBean default, chamado o Servidor MBean da Plataforma. Ele permite que você monitore a JVM, mas também é possível usá-lo para registrar seu próprio MBean nele. Para obter detalhes sobre o Servidor MBean da Plataforma Java, leia a documentação `` link:http://download.oracle.com/javase/6/docs/api/java/lang/management/ManagementFactory.html[+ java.lang.management.ManagementFactory +]``  da API.

Dependendo de sua lógica, determina o local em seu código de aplicação, no qual você deseja que seus MBeans sejam registrados, geralmente na fase de inicialização de sua classe Principal. Clique com o Botão Direito do Mouse na janela do seu editor no local no qual você deseja que o código de registro do MBean seja gerado, selecione o submenu JMX e, em seguida, a ação "Gerar Registro de MBean...".

Esta ação é demonstrada no Exercício 5 do tutorial link:jmx-tutorial.html#Exercise_5[+ Adicionando Instrumentação JMX a uma Aplicação Java+].


== Implementando e Executando Aplicações Gerenciáveis

JConsole é uma ferramenta gráfica compatível com JMX para monitorar uma máquina virtual Java. A JConsole pode monitorar JVMs locais e remotas e pode ser usada para monitorar e gerenciar aplicações JMX.

Geralmente, o fluxo de trabalho da implementação e execução de aplicações gerenciáveis é o seguinte:

1. Gerar seus MBeans.
2. Adicionar implementação aos seus MBeans
3. Gerar código de registro do MBean.
4. Executar ou depurar seu projeto com JConsole.

Depois de instalar os plug-ins do JMX e da JConsole você verá que os seguintes botões são adicionados à barra de ferramentas. As ações também ficam acessíveis no item de menu Depurar no menu principal.

|===
|Botão |Descrição 

|image::images/run-project24.png[title="Botão Executar Projeto Principal com Monitoramento e Gerenciamento"] |Executar Projeto Principal com Monitoramento e Gerenciamento 

|image::images/debug-project24.png[title="Botão Depurar Projeto Principal com Monitoramento e Gerenciamento"] |Depurar Projeto Principal com Monitoramento e Gerenciamento 

|image::images/console24.png[title="Botão Iniciar Console de Gerenciamento de JConsole"] |Iniciar Console de Gerenciamento de JConsole 
|===

*Observação.* JConsole faz parte da Plataforma Java e pode ser usado independentemente do IDE. Para obter detalhes, consulte os seguintes recursos.

* Página principal link:http://download.oracle.com/javase/6/docs/technotes/tools/share/jconsole.html[+ ``jconsole`` +]
* link:http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html[+Usando o documento da JConsole+]


== Executando a Aplicação de Amostra

O módulo JMX inclui uma aplicação de amostra com o monitoramento do JMX incorporada nele.

1. Escolha Arquivo > Novo Projeto.
2. Nestas Amostras, selecione a categoria JMX.
3. Selecione o Jogo de Anagramas Gerenciado com o projeto JMX. 
image::images/jmx-newproject.png[title="Jogo de Anagramas Gerenciado com o JMX no assistente Novo Projeto"]

[start=4]
. Clique em Próximo. Não é necessário alterar o nome do projeto default fornecido ou os valores do local. Confirme se a caixa de seleção Definir como Projeto Principal está selecionada. Clique em Finalizar.

*Observações.* O IDE poderá solicitar a instalação das bibliotecas JUnit se você não tiver instalado o plug-in do JUnit anteriormente. Você pode clicar em Resolver, na caixa de diálogo Resolver Problemas de Recursos, para iniciar o Instalador a fim de instalar o plug-in do JUnit. Se preferir, instale o plug-in do JUnit no gerenciador de Plug-ins.


[start=5]
. Depois que seu projeto for criado e definido como o Projeto Principal, Execute-o com o JConsole, clicando no botão "Executar Projeto Principal com Monitoramento e Gerenciamento" da JConsole.

*Observações.* É possível que você veja uma advertência de Falha de Conexão na Console de Monitoramento e Gerenciamento Java quando a console tenta estabelecer conexão com o processo do Jogo de Anagramas. Neste tutorial, você pode clicar em Não Seguro quando solicitado a autorizar a conexão.

Clicar neste botão aciona e exibe o Jogo de Anagramas:

image::images/jmx-anagram.png[title="Jogo de Anagramas"]

A janela JConsole também é exibida.


[start=6]
. Na janela JConsole, selecione a guia MBeans e no layout da árvore à esquerda, abra todos os nós em  ``anagrams.toy.com``  conforme mostrado abaixo.
image::images/jmx-jconsole1.png[title="Janela JConsole"]

[start=7]
. Selecione o nó Notificações e clique no botão Assinar na parte inferior, de forma que o JConsole recebem uma nova notificação cada vez que um anagrama é resolvido.

[start=8]
. Agora vá para a janela Jogo de Anagramas e resolva os primeiros três ou quatro anagramas. (As respostas estão na classe WordLibrary, mas aqui estão elas: abstração, ambíguos, aritmética, barra invertida...)

[start=9]
. Volte para a JConsole e observe que ela recebeu as quatro notificações.

[start=10]
. Clique no nó Atributos e observe que os valores do atributo estão atualizados: 
image::images/jmx-jconsole2.png[title="Janela de JConsole mostrando valores atualizados"]
link:/about/contact_form.html?to=3&subject=Feedback:%20Getting%20Started%20with%20JMX%20Monitoring[+Enviar Feedback neste Tutorial+]



== Consulte Também

Este documento era uma introdução curta e rápida ao módulo JMX do NetBeans IDE. Para obter informações mais detalhadas, consulte o seguinte tutorial do módulo JMX:

* link:jmx-tutorial.html[+Adicionando Instrumentação JMX a uma Aplicação Java+]
