Java Process Status (no Código)

27 09 2008

Olá Galera da Comp!

No post passado falamos sobre a Java Process Status Tool, uma ferramenta da Sun que permite verificar os processos que estão ativos na Máquina Virtual Java.

Neste post, veremos como utilizar as classes MonitoredHost MonitoredVm.

Primeiramente devemos importar para o classpath o pacote tools.jar (disponível no JDK 1.5 ou posterior,  na pasta lib). Para isso utilizaremos o NetBeans IDE na versão 6.1.

1 – Crie ou abra um projeto.

2 – No gerenciador de Projetos (lado esquerdo tela), clique com o botão direito do mouse sobre o nome do projeto e vá até Propriedades.

3 – Clique em Bibliotecas na janela que aparece.

4 – Clique no botão Adicionar JAR/Pasta.

5 – Navegue até a pasta lib do JDK (Exemplo: C:\Arquivos de programas\Java\jdk1.6.0\lib).

6 – Selecione o arquivo nomeado tools.jar.

7 – Dê OK em todas as janelas e volte para o projeto.

Ok, classpath do seu projeto agora já pode encontrar as classes das quais precisamos.

O código que utilizaremos como base será esta função desenvolvida por mim. O código é auto-explicativo e segue abaixo: 

 


import java.util.Set;

import java.net.URISyntaxException;

import java.util.ArrayList;

import java.util.HashSet;

import sun.jvmstat.monitor.MonitorException;

import sun.jvmstat.monitor.MonitoredHost;

import sun.jvmstat.monitor.MonitoredVm;

import sun.jvmstat.monitor.MonitoredVmUtil;

import sun.jvmstat.monitor.VmIdentifier;

 

private void getJVMProcesses(ArrayList array){

        try {

            //Define qual máquina será monitorada, no nosso caso a máquina local

            MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");

            //Faz um Hash com os processos da maquina virtual

            Set vmlist = new HashSet(local.activeVms());

            //For que executa enquanto houverem processos, fazendo com que um Object receba um id de cada um

            for (Object id : vmlist){

                //Configura qual processo será monitorado, no caso, o indicado pelo Object "id"

                MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + id));

                //adiciona no array o nome da classe main do processo

                array.add(MonitoredVmUtil.mainClass(vm, false));

                //adiciona no array o nome completo da classe main do processo (com nomes dos pacotes)

                //array.add(MonitoredVmUtil.mainClass(vm, true));

            }

            //Excessões disparadas pelas classes Monitored

        } catch (MonitorException ex) {

            log.error("Erro na monitoração da JVM. \nErro: "+ex.getMessage());

        } catch (URISyntaxException ex) {

            log.error("Erro na busca do host para monitoração da JVM. \nErro: "+ex.getMessage());

        }

    }

Este método recebe um ArrayList e adiciona os processos encontrados em execução na JVM. 

Bom, é isso por hoje.

Abraços!

[Gustavo]


Ações

Informações

2 respostas

24 04 2009
Leandro

O problema dessa resolução é que a licensa dessa biblioteca é GPL.

24 07 2009
Gustavo Nogueira de Oliveira

Olá Leandro, muito obrigado por responder!

Bom, acredito que se a licensa é GPL, aí que não deveriam mesmo ter problemas. Visto que, GPL (General Public License) é uma licensa pública que permite inclusive a alteração do código.

“Em termos gerais, a GPL baseia-se em 4 liberdades:
A liberdade de executar o programa, para qualquer propósito (liberdade nº 0)
A liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades (liberdade nº 1). O acesso ao código-fonte é um pré-requisito para esta liberdade.
A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2).
A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie deles (liberdade nº 3). O acesso ao código-fonte é um pré-requisito para esta liberdade.”

Fonte: http://pt.wikipedia.org/wiki/GNU_General_Public_License

Deixe um comentário