From 6553561cb76af57ef5480c49e6205799c70cacdb Mon Sep 17 00:00:00 2001 From: Dancovich Date: Fri, 5 Jul 2013 10:46:52 -0300 Subject: [PATCH] Completada primeira versão de documentação sobre mecanismo de monitoração e gerenciamento. --- documentation/reference/pt-BR/gerenciamento.xml | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------ documentation/reference/pt-BR/master.xml | 4 +--- 2 files changed, 93 insertions(+), 117 deletions(-) diff --git a/documentation/reference/pt-BR/gerenciamento.xml b/documentation/reference/pt-BR/gerenciamento.xml index da3eaaf..e70e34c 100644 --- a/documentation/reference/pt-BR/gerenciamento.xml +++ b/documentation/reference/pt-BR/gerenciamento.xml @@ -24,8 +24,6 @@ uso o desenvolvedor pode se despreocupar com detalhes de implementação de cada tecnologia individual e facilmente integrar tais tecnologias. - -
Introdução ao mecanismo @@ -34,77 +32,18 @@ anotada com o estereótipo @ManagementController. +@ManagementController +public class GerenciadorUsuarios]]> Essa anotação é suficiente para o mecanismo de gerenciamento descobrir sua classe e disponibiliza-la para ser monitorada e gerenciada. Contudo, a simples anotação acima não informa ao mecanismo quais aspectos da classe serão expostos. Por padrão, um Management Controller - não expõe nenhum aspecto seu. Para selecionar quais aspectos serão expostos usamos as anotações @ManagedProperty e @ManagedOperation. + não expõe nenhum aspecto seu. Para selecionar quais aspectos serão expostos usamos as anotações + @ManagedProperty e @ManagedOperation. Além disso outras anotações podem ser usadas para personalizar o funcionamento + de classes anotadas com @ManagementController. - - - Anotação - Descrição - Atributos - - - - - - - @ManagedProperty - - - - Marca um atributo na classe como uma propriedade gerenciada, significando que clientes externos podem ler e/ou escrever valores nesses atributos. - Um atributo marcado pode estar disponível para leitura e/ou escrita. Por padrão, o que determina a visibilidade de um atributo - marcado é a presença dos métodos getAtributo e setAtributo, respectivamente disponibilizando o atributo - para leitura e escrita. - Para sobrescrever esse comportamento existe na anotação @ManagedProperty o atributo accessLevel. - Com ele é possível criar um atributo apenas para leitura, mas que contenha um método set. O contrário também é possível. - - - - - description: Um texto descritivo documentando o propósito da propriedade. - accessLevel: Sobrescreve o nível padrão de acesso de uma propriedade. Os valores possíveis são - READ_ONLY, WRITE_ONLY e DEFAULT, que significa que a presença de métodos get e set vai determinar o nível de acesso. - - - - - - - @ManagedOperation - - - - Marca um método da classe gerenciada como uma operação, o que significa que clientes externos podem invocar esse método remotamente. - Operações gerenciadas normalmente são criadas para executar intervenções em um sistema já em execução. Por exemplo, é possível criar uma - operação que, ao ser invocada, destrua todas as seções abertas no servidor e não utilizadas nos últimos 30 minutos. - - - - - description: Um texto descritivo documentando o propósito da operação. - type: Documenta o propósito da operação. ACTION informa que a operação modificará - o sistema de alguma forma. INFO diz que a operação coletará e retornará informações sobre o sistema. ACTION_INFO - informa que a operação modificará o sistema de alguma forma e retornará informações sobre o resultado. UNKNOWN é o padrão - e significa que o resultado da execução da operação é desconhecido. - - - - - - -
- Personalizando operações gerenciadas - - Abaixo são apresentadas opções para personalizar ainda mais os atributos e operações marcados para gerenciamento da aplicação. - - + Anotação @@ -112,15 +51,62 @@ Atributos - + + @ManagedProperty + + + + Marca um atributo na classe como uma propriedade gerenciada, significando que clientes externos podem ler e/ou escrever valores nesses atributos. + Um atributo marcado pode estar disponível para leitura e/ou escrita. Por padrão, o que determina a visibilidade de um atributo + marcado é a presença dos métodos getAtributo e setAtributo, respectivamente disponibilizando o atributo + para leitura e escrita. + Para sobrescrever esse comportamento existe na anotação @ManagedProperty o atributo accessLevel. + Com ele é possível criar um atributo apenas para leitura, mas que contenha um método set. O contrário também é possível. + + + + + description: Um texto descritivo documentando o propósito da propriedade. + accessLevel: Sobrescreve o nível padrão de acesso de uma propriedade. Os valores possíveis são + READ_ONLY, WRITE_ONLY e DEFAULT, que significa que a presença de métodos get e set vai determinar o nível de acesso. + + + + + + + @ManagedOperation + + + + Marca um método da classe gerenciada como uma operação, o que significa que clientes externos podem invocar esse método remotamente. + Operações gerenciadas normalmente são criadas para executar intervenções em um sistema já em execução. Por exemplo, é possível criar uma + operação que, ao ser invocada, destrua todas as seções abertas no servidor e não utilizadas nos últimos 30 minutos. + + + + + description: Um texto descritivo documentando o propósito da operação. + type: Documenta o propósito da operação. ACTION informa que a operação modificará + o sistema de alguma forma. INFO diz que a operação coletará e retornará informações sobre o sistema. ACTION_INFO + informa que a operação modificará o sistema de alguma forma e retornará informações sobre o resultado. UNKNOWN é o padrão + e significa que o resultado da execução da operação é desconhecido. + + + + + + @OperationParameter - Esta anotação opcional permite detalhar melhor parâmetros em uma operação gerenciada. O efeito desta anotação é dependente da + Esta anotação opcional pode ser usada para cada parâmetro de um método anotado com @ManagedOperation. + + Ele permite detalhar melhor parâmetros em uma operação gerenciada. O efeito desta anotação é dependente da tecnologia utilizada para comunicação entre cliente e servidor. Na maioria das tecnologias, essa anotação meramente permite ao cliente exibir informações sobre cada parâmetro: nome, tipo e descrição. @@ -133,8 +119,8 @@ - -
+ +
@@ -151,51 +137,43 @@ por expor o número de usuários que efetuaram login no sistema. +@BusinessController +public class ControleAcesso{ + + @Inject + private MonitorLogin monitorLogin; + + public boolean efetuarLogin(String usuario , String senha){ + // código de login + monitorLogin.setContadorLogin( monitorLogin.getContadorLogin() + 1 ); + } +}]]> Como é possível ver, classes anotadas com @ManagementController podem ser injetadas em qualquer ponto do código. Valores definidos para seus atributos retêm seu estado, então um cliente que acesse remotamente o sistema e monitore o valor do atributo contadorLogin verá a quantidade de logins efetuados no momento da consulta. - -
Conectando um cliente de monitoração - O demoiselle-core contém as funcionalidades necessárias para marcar aspectos monitoráveis de sua aplicação, mas não conta com nenhum mecanismo - para estabelecer uma conexão com um cliente de monitoração. Para isso utiliza-se extensões do framework. + O demoiselle-core contém as funcionalidades necessárias para marcar aspectos monitoráveis de sua aplicação, + mas não conta com nenhum mecanismo para estabelecer uma conexão com um cliente de monitoração. Para isso utiliza-se extensões do framework. - A extensão padrão do framework Demoiselle é a demoiselle-jmx. Essa extensão utiliza a especificação JMX e - permite registrar as classes marcadas para monitoração como MBeans. Uma vez que as classes sejam registradas como MBeans, seus atributos - e operações expostos para monitoração podem ser acessados via JMX por um cliente adequado, como o JConsole que acompanha por padrão o JDK - da Oracle. + A extensão padrão do framework Demoiselle responsável pela tecnologia de monitoração é a demoiselle-jmx. + Essa extensão utiliza a especificação JMX (JSR 3) e permite registrar as classes marcadas para monitoração como MBeans. + Uma vez que as classes sejam registradas como MBeans, seus atributos e operações expostos para monitoração podem ser + acessados via JMX por um cliente adequado, como o JConsole que acompanha por padrão o JDK da Oracle. Para acrescentar a extensão demoiselle-jmx em um projeto Maven, adicione a dependência abaixo no arquivo pom.xml. - br.gov.frameworkdemoiselle - demoiselle-jmx - compile - - ]]> + + br.gov.frameworkdemoiselle + demoiselle-jmx + compile +]]> @@ -206,27 +184,27 @@ A figura mostra como uma classe monitorada na aplicação Bookmark é exibida no JConsole. +@ManagementController +public class BookmarkMonitor { + + @Inject + private BookmarkDAO bookmarkDAO; + + @ManagedOperation(type=OperationType.INFO , description="Informa quantos bookmarks estão salvos no sistema") + public int countSavedBookmarks(){ + return bookmarkDAO.findAll().size(); + } +}]]>
JConsole acessando a aplicação <emphasis>Bookmark</emphasis> - + JConsole acessando a aplicação Bookmark
+ \ No newline at end of file diff --git a/documentation/reference/pt-BR/master.xml b/documentation/reference/pt-BR/master.xml index 3d62a2f..b8c5f52 100644 --- a/documentation/reference/pt-BR/master.xml +++ b/documentation/reference/pt-BR/master.xml @@ -5,7 +5,6 @@ - - + -- libgit2 0.21.2