<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, 2011, Oracle and/or its affiliates. All rights reserved.
-->

<html>
<head>
  <title>Desenvolvendo um Gerenciador do Java Management Extensions (JMX) e Conectando-se a um Agente JMX Remoto</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
  <meta name="description" content="Remote manager tutorial for NetBeans JMX Wizard module">
  <link rel="stylesheet" href="../../../netbeans.css">
  <meta name="TOPIC" content="ADVANCED">
  <meta name="TYPE" content="ARTICLE">
  <meta name="AUDIENCE" content="NBUSER">
  <meta name="author" content="Jean-Francois DENISE">
  <meta name="author" content="Joel FERAUD">
  <meta name="KEYWORDS" content="NETBEANS, TUTORIAL, GUIDE, USER, DOCUMENTATION, JMX">
  <meta name="description" content="A tutorial on how to implement and use a JMX manager and JMX agent in NetBeans IDE"/>
  <link rel="stylesheet" type="text/css" href="../../../lytebox.css" media="screen">
        <script type="text/javascript" src="../../../images_www/js/lytebox-compressed.js"></script>
</head>
<body>
<h1>Desenvolvendo um Gerenciador do Java Management Extensions (JMX) e Conectando-se a um Agente JMX Remoto</h1>


<p class="align-center"><b>Duração esperada: 30 minutos</b></p>

<p>O Módulo do Assistente JMX do NetBeans integra a tecnologia do JMX correta 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. 
  </p>

<p>Este tutorial mostra como executar as seguintes ações:</p>
<ol>
  <li>Inicie um agente JMX para torná-lo acessível de um gerenciador JMX remoto.</li>
  <li>Crie um gerenciador JMX.</li>
  <li>Execute o gerenciador.</li>
  <li>Atualize o gerenciador para adicionar sua própria lógica de gerenciamento. </li>
</ol>


<h3>Exercícios do Tutorial</h3>
<img alt="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0" class="stamp" src="../../../images_www/articles/73/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">
<ul>
  <li><a href="#Exercise_1">Criando o Projeto de Anagrama de Amostra de Gerenciamento</a></li>
  <li><a href="#Exercise_2">Executando o Agente</a></li>
  <li><a href="#Exercise_3">Criando o Projeto do Gerenciador</a>
      <ul>
          <li><a href="#Exercise_3">Criando o Projeto</a></li>
          <li><a href="#Exercise_4">Criando a Classe do Gerenciador Executável</a></li>
      </ul>
  </li>
  <li><a href="#Exercise_5">Executando o Gerenciador</a></li>
</ul>


<h3>Pré-requisitos</h3>
<p>Este tutorial pressupõe que você tenha algum conhecimento básico das tecnologias a seguir ou alguma experiência de programação com elas: </p>
    <ul>
        <li>Tecnologia JMX: <a href="http://download.oracle.com/javase/6/docs/technotes/guides/jmx/index.html"> Documentação on-line do JMX</a>
            </li>
        <li>Tecnologia Java: <a href="http://www.oracle.com/technetwork/java/javase/tech/index.html"> Visão Geral das Tecnologias Java SE</a>
            </li>
        <li>NetBeans IDE</li>
    </ul>
<p>Você também se beneficiará tendo conhecimento sobre<a href="http://download.oracle.com/javase/6/docs/technotes/guides/management/index.html"> Monitoramento e Gerenciamento da Plataforma Java</a></p>

<h3>Software Necessário para o Tutorial</h3>
<p>Para este tutorial, você precisa ter instalado no computador os seguintes softwares:</p>
<table>
    <tbody>
    <tr>
        <th class="tblheader" scope="col">Software ou Recurso</th>
        <th class="tblheader" scope="col">Versão Necessária</th>
    </tr>
    <tr>
        <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
        <td class="tbltd1">Versão Java 7.2, 7.3, 7.4, 8.0</td>
    </tr>
    <tr>
        <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK (Java Development Kit)</a></td>
        <td class="tbltd1">versão 7 ou 8</td>
    </tr>
    <tr>
        <td class="tbltd1">Plug-in do JMX</td>
        <td class="tbltd1">Disponível na Central de Atualização do NetBeans</td>
    </tr>
    <tr>
        <td class="tbltd1">Plug-in de JConsole</td>
        <td class="tbltd1">Disponível na Central de Atualização do NetBeans</td>
    </tr>
    </tbody>
</table>

<p>Para instalar os plug-ins <strong>JMX</strong> e <strong>JConsole</strong>, selecione Ferramentas > Plug-ins e faça download do módulo do Centro de Atualização do NetBeans.</p>


<h3>Recursos</h3>
<ul>
  <li>Conteúdo de ajuda do Netbeans (Ajuda > Conteúdo de Ajuda > JMX). Esta ajuda também fica disponível nos Assistentes.</li>
</ul>

<a name="Exercise_1"></a>
<h2>Criando o Projeto de Anagrama de Amostra de Gerenciamento</h2>
<p>O objetivo deste exercício é criar um agente JMX para o qual a aplicação do gerenciador pode estabelecer conexão. O plug-in do JMX inclui um projeto Java de amostra do agente JMX. Neste exercício você criará este projeto de amostra, em vez de gravar um agente JMX desde o começo. 
</p>

<ol>
  <li>Escolha Arquivo > Novo Projeto.</li>
  <li>Nestas Amostras, selecione a categoria JMX.</li>
  <li>Selecione o Jogo de Anagramas Gerenciado com o projeto JMX. <br /> <img alt="tela do Jogo de Anagramas Gerenciado com o projeto JMX no assistente Novo Projeto" class="margin-around b-all" src="../../../images_www/articles/74/java/jmx/jmx-newproject.png" title="Jogo de Anagramas Gerenciado com o JMX no assistente Novo Projeto" /></li>
 
  <li>Clique em Próximo. Não é necessário alterar o nome do projeto default ou os valores do local. Confirme se a opção Definir como Projeto Principal foi selecionada e clique em Finalizar.</li>
</ol>

<a name="Exercise_2"></a>
<h2>Executando o Agente</h2>
<p>A meta deste exercício é iniciar a aplicação Java com o gerenciamento remoto do JMX ativado. O gerenciamento remoto permite que as aplicações clientes (gerenciadores do JMX) estabeleçam conexão à aplicação (agente JMX) e visualize as informações de gerenciamento e monitoramento.</p>
<p class="notes"><strong>Observação.</strong> Qualquer aplicação em execução com base em JDK 1.5, JDK 1.6 ou JDK 1.7 é um agente JMX para o qual você pode ativar o gerenciamento remoto.</p>

<ol>
  <li>Confirme se o projeto JMXAnagramGame está selecionado e definido como o projeto principal. </li>
  <li>Clique com o botão direito do mouse no projeto JMXAnagramGame e selecione Propriedades.</li>
  <li>Selecione a categoria <strong>Monitoramento e Gerenciamento</strong> na caixa de diálogo Propriedades do Projeto.</li>
  <li>Desmarque <strong>Anexar JConsole ao Projeto</strong>.</li>
  <li>Selecione <strong>Ativar Acesso Remoto do RMI</strong>. Clique em OK.<br> <img alt="Configurar Agente" class="margin-around b-all" src="../../../images_www/articles/74/java/jmx/jmx-properties1.png" title="Categoria Monitoramento e Gerenciamento na caixa de diálogo Propriedades do projeto">
      <p>Você pode fornecer uma porta na qual o agente aguarda pelas solicitações JMX de entrada. Neste tutorial, mantemos a porta default (1099). Se você forneceu outro número de porta, terá que fazer as alterações apropriadas em cada parte deste tutorial. Além disso, neste tutorial, não especificamos um arquivo de propriedades. (Para suas próprias aplicações, fornecemos um assistente para ajudá-lo a criar um arquivo de propriedades de gerenciamento).</p>
  </li>


<li>Escolha Depurar > Executar Projeto Principal com Monitoramento e Gerenciamento do menu principal para acionar a aplicação Jogo de Anagramas. 
    <p>Se preferir, clique no botão Executar Projeto Principal com Monitoramento e Gerenciamento na barra de ferramentas (&nbsp; <img alt="Botão Executar Projeto Principal com Monitoramento e Gerenciamento na barra de ferramentas" src="../../../images_www/articles/74/java/jmx/run-project24.png" title="Botão Executar Projeto Principal com Monitoramento e Gerenciamento" />).</p>

<p>Quando você executar a aplicação, a janela Jogo de Anagramas será aberta. A JVM está fazendo listening do acesso de RM na porta 1099 de host local. O agente JMX está em execução e aguardando o gerenciador para enviar solicitações de gerenciamento.</p>
  <img alt="Jogo de Anagramas" class="margin-around b-all" src="../../../images_www/articles/74/java/jmx/jmx-anagram.png" title="Jogo de Anagramas">
  <p>Você pode minimizar a janela Anagramas, mas não pode sair da aplicação.</p>
  </li>
</ol>


<a name="Exercise_3"></a>
<h2>Criando o Projeto do Gerenciador</h2>
<p>Neste exercício, você criará um projeto de aplicação Java chamado <tt>JMXAnagramManager</tt> e, em seguida, usará um assistente para criar uma classe de gerenciador executável.</p>

<div class="indent">
<h3>Criando o Projeto</h3>
<ol>
  <li>Selecione Arquivo > Novo Projeto (Ctrl-Shift-N).</li>
  <li>Escolha Aplicação Java na categoria Java. Clique em Próximo.<br> <img alt="tela do assistente Novo Projeto Java" class="margin-around b-all" src="../../../images_www/articles/74/java/jmx/jmx-newjavaproject.png" title="Assistente Novo Projeto Java"></li>
  <li>Digite <strong>JMXAnagramManager</strong> como Nome do Projeto.</li>
  <li>Selecione Definir como Projeto Principal (se não estiver selecionado) e desmarque a opção Criar Classe Principal. Clique em Finalizar.
    <p class="notes"><strong>Observação.</strong> Você usará o assistente Gerenciador JMX para gerar a classe executável principal no próximo exercício. </p>
    </li>
</ol>
  <p>Quando clicar em Finalizar, o novo projeto será adicionado à árvore Projetos. Observe que um projeto do gerenciador JMX é como qualquer outro projeto de aplicação Java. </p>


<a name="Exercise_4"></a>
<h3>Criando a Classe do Gerenciador Executável</h3>
<p>Neste exercício, você aprenderá a usar o assistente Gerenciador JMX para gerar uma classe do gerenciador executável.</p>

<ol>
  <li>Confirme se o projeto JMXAnagramManager está definido como o projeto principal. </li>
  <li>Escolha Arquivo > Novo Arquivo (Ctrl-N; ⌘-N no Mac) e selecione Gerenciador JMX na categoria JMX. Clique em Próximo.<br /> <img alt="tela do modelo do Gerenciador JMX no assistente Novo Arquivo" class="margin-around b-all" src="../../../images_www/articles/74/java/jmx/jmx-newjmxmanager.png" title="O modelo do Gerenciador JMX no assistente Novo Arquivo" /></li>
  <li>Digite <strong>AnagramsManager</strong> como o Nome da Classe.</li>
  <li>Digite <strong>com.toys.anagrams.manager</strong> como o nome do pacote.</li>
  <li>Confirme se Gerar Método Principal, Definir como Classe Principal do Projeto e Gerar Código de Descoberta do MBean de Amostra estão selecionados. Clique em Próximo.</li>
  <li>Clique em Editar para digitar o URL do agente JMX para o qual você deseja estabelecer conexão.</li> 
  <li>Aceite os valores default na caixa de diálogo URL do Agente JMX do RMI. Clique em OK. 
      <p>A caixa de diálogo URL do Agente JMX do RMI ajuda a informar um URL de JMX válido, composto de um Protocolo, um Host, uma Porta e um caminho de URL.</p>
  <img alt="tela da caixa de diálogo URL do Agente JMX do RMI" class="margin-around b-all" src="../../../images_www/articles/74/java/jmx/jmx-jmxagenturl.png" title="valores default na caixa de diálogo URL do Agente JMX do RMI" />
          
  <p>Um elemento único é fornecido na lista drop-down do protocolo. O campo Protocolo é gravável, o que permite a você inserir seu próprio protocolo. O agente JVM do RMI do protocolo default é o protocolo RMI usado para estabelecer conexão ao agente JMX do JDK. O Agente que você iniciou anteriormente neste tutorial desta natureza. </p>
  <p>Você deseja usar o host default e o valor da porta porque o Agente está fazendo listening no <tt>localhost:1099</tt>. O campo Caminho do URL é somente leitura e exibe como o caminho é construído para o Agente JVM do RMI. O Caminho do URL é atualizado automaticamente com os valores de host e porta.</p>
  <p>Quando você clicar em OK, o campo URL do Agente JMX é atualizado com o URL completo, de acordo com os detalhes especificados na caixa de diálogo URL do Agente JMX do RMI.</p>
  
  </li>
  <li>Confirme se Conexão Autenticada e Gerar Código de Amostra para Conexão Autenticada estão selecionados. Clique em Finalizar.<br> <a href="../../../images_www/articles/74/java/jmx/jmx-jmxagenturl2.png" id="jmxagent" rel="lytebox" title="Assistente Novo Gerenciador JMX que exibe o URL do Agente JMX"> <img alt="tela do assistente Novo Gerenciador JMX que exibe o painel URL do Agente JMX" class="margin-around b-all" src="../../../images_www/articles/74/java/jmx/jmx-jmxagenturl2-sm.png" title="Clique para aumentar"></a>
    
  <p>A conexão ao Agente não é autenticada porque você não forneceu nenhuma configuração de autenticação quando o agente foi acionado.</p>
  </li>
</ol>
<p>Quando você clicar em Finalizar, o IDE gerará a classe do gerenciador e abrirá o arquivo no editor. Você pode ver se o IDE gerou algum código de amostra para ativar uma conexão autenticada gerada.</p> 

</div>

<a name="Exercise_5"></a>
<h2>Executando o Gerenciador</h2>
<p>Neste exercício, você aprenderá a executar o gerenciador e descobrir os MBeans. </p>
<ol>
  <li>No arquivo AnagramsManager.java, remova o comentário do código de descoberta do MBean localizado no método principal, de forma que ele seja lido:
      <pre>
    public static void main(String[] args) throws Exception {
        
        //Manager instantiation and connection to the remote agent
        AnagramsManager manager = AnagramsManager.getDefault();

        // SAMPLE MBEAN NAME DISCOVERY. Uncomment following code:
          Set resultSet =
          manager.getMBeanServerConnection().queryNames(null, null);
          for(Iterator i = resultSet.iterator(); i.hasNext();) {
          System.out.println("MBean name: " + i.next());
          } 

        // Close connection
        manager.close();
        System.out.println("Connection closed.");
    }
      </pre>
  </li>
<li>Clique com o botão direito do mouse no editor e escolha Corrigir Importações (Alt-Shift-I; ⌘-Shift-I no Mac) para gerar quaisquer instruções de importação necessárias (<tt>java.util.Set</tt> e <tt>java.util.Iterator</tt>). Salve as alterações.</li>
  <li>Escolha Executar > Executar Projeto Principal no menu principal.
      <p>Alternativamente, clique com o botão direito do mouse no nó do projeto JMXAnagramManager na janela Projetos e escolha Executar.</p>
      <p>Quando você escolhe Executar, a aplicação JMXAnagramManager será iniciada e estabelecerá conexão ao agente remoto, exibirá os nomes do MBean descoberto na janela de Saída e, em seguida, encerará a conexão: </p>
  <p>O projeto é compilado, e o gerenciador é iniciado. Os <tt>ObejctNames</tt> descobertos são exibidos na janela de Saída. Você pode observar o nome do MBean <tt>AnagramsStats</tt> e também o MBeans da Java VM. Todos os MBeans padrão da VM estão localizados no domínio <tt>java.lang</tt> do JMX.</p>
<p>Veja o que você deverá visualizar na Janela de Saída do NetBeans de execução do JMXAnagramManager:</p>
<pre>
init:
deps-jar:
compile:
run:
MBean name: java.lang:type=MemoryManager,name=CodeCacheManager
MBean name: java.lang:type=Compilation
MBean name: java.lang:type=MemoryPool,name=PS Perm Gen
MBean name: com.sun.management:type=HotSpotDiagnostic
MBean name: java.lang:type=Runtime
MBean name: com.toy.anagrams.mbeans:type=AnagramsStats
MBean name: java.lang:type=ClassLoading
MBean name: java.lang:type=Threading
MBean name: java.lang:type=MemoryPool,name=PS Survivor Space
MBean name: java.util.logging:type=Logging
MBean name: java.lang:type=OperatingSystem
MBean name: java.lang:type=Memory
MBean name: java.lang:type=MemoryPool,name=Code Cache
MBean name: java.lang:type=GarbageCollector,name=PS Scavenge
MBean name: java.lang:type=MemoryPool,name=PS Eden Space
MBean name: JMImplementation:type=MBeanServerDelegate
MBean name: java.lang:type=GarbageCollector,name=PS MarkSweep
MBean name: java.lang:type=MemoryPool,name=PS Old Gen
Connection closed.
BUILD SUCCESSFUL (total time: 1 second)
</pre></li>
</ol>

<!--
<a name="Exercise_6"></a>
<h2>Exercise 6: Updating the Manager Class with Management Logic</h2>
<p>In this exercise you will learn how to make a simple JMX request to access 
  an MBean attribute. We will update the manager class main method in order to 
  access the <tt>NumResolvedAnagrams</tt> attribute. This attribute represents 
  the number of anagrams solved. </p>
<h3>Steps to Follow</h3>
<ol>
  <li>In the main method, before closing the connection we are going to perform 
    the following actions: 
    <ul>
      <li>Access the <tt>MBeanServerConnection</tt>.&nbsp; The <tt>MBeanServerConnection</tt> 
        class allows you to make requests to the remote server.</li>

      <li>Create the Anagrams statistics MBean <tt>ObjectName</tt>. The name is 
        copied/pasted from the output. An object name is needed when a request 
        is sent to a remote agent in order to specify the MBean from which to 
        get the atribute.</li>

      <li>Get the attribute <tt>NumResolvedAttribute</tt>.</li>

      <li>Print the attribute value to the output.</li>
    </ul>
    To do so, copy and paste the four lines of code below at the end of the 
    AnagramsManager.java main method, right before the close conection lines:
    <pre>
        MBeanServerConnection connection = manager.getMBeanServerConnection();
        ObjectName name = new ObjectName("com.toy.anagrams.mbeans:type=AnagramsStats");
        Integer num = (Integer) connection.getAttribute(name, "NumSolvedAnagrams");
        System.out.println("NumSolvedAnagrams : " + num);
    </pre>
    You may need to add an import clause for <tt>javax.management.ObjectName</tt>
  </li>
  <li>Once you have updated the source code, you can play with the Anagrams game 
    then run the project again in order to see the updated values. 
    In the NetBeans Output Window of the JMXAnagramManager run you should now see
    at the end, before the connection closed, the added line:
<pre>
NumSolvedAnagrams : 0
</pre></li>
</ol>
-->
<p><b>Você concluiu! Bom trabalho!</b><br /> Esperamos que este tutorial tenha ajudado a entender como desenvolver aplicações do gerenciador para acessar informações exportadas devido ao JMX. </p>

<div class="feedback-box">
            <a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Developing%20a%20Java%20Management%20Extensions%20Manager">Enviar Feedback neste Tutorial</a></div>
        
        <br style="clear:both;">
            
<h2>Consulte Também</h2>
<p>Para obter mais informações, consulte os seguintes tópicos:</p>
<ul>
    <li><a href="jmx-getstart.html">Conceitos Básicos sobre Monitoramento do JMX no NetBeans IDE</a></li>
    <li><a href="jmx-tutorial.html">Adicionando Instrumentação do JMX (Java Management Extensions) à Aplicação Java</a></li>
    
</ul>


</body>
</html>
