Commit 5c5a48bab3e622e4a04c02738293e5bfc0cd3d42

Authored by Dancovich
1 parent 605c06cd
Exists in master

IN PROGRESS - issue FWK-123: Revisar e atualizar documentação do

Framework 2.4.0 
https://demoiselle.atlassian.net/browse/FWK-123
documentation/reference/pt-BR/gerenciamento.xml
@@ -171,6 +171,50 @@ public class MonitorLogin{ @@ -171,6 +171,50 @@ public class MonitorLogin{
171 <para>Como é possível ver, classes anotadas com <emphasis>@ManagementController</emphasis> podem ser injetadas em qualquer ponto do código. Valores definidos 171 <para>Como é possível ver, classes anotadas com <emphasis>@ManagementController</emphasis> podem ser injetadas em qualquer ponto do código. Valores definidos
172 para seus atributos retêm seu estado, então um cliente que acesse remotamente o sistema e monitore o valor do atributo <emphasis>contadorLogin</emphasis> verá 172 para seus atributos retêm seu estado, então um cliente que acesse remotamente o sistema e monitore o valor do atributo <emphasis>contadorLogin</emphasis> verá
173 a quantidade de logins efetuados no momento da consulta.</para> 173 a quantidade de logins efetuados no momento da consulta.</para>
  174 +
  175 + <section>
  176 + <title>Enviando notificações da aplicação</title>
  177 +
  178 + <para>
  179 + É comum que aplicações monitoradas permaneçam em estado de espera - é função do cliente de monitoração acessar a aplicação e obter
  180 + as informações necessárias.
  181 + </para>
  182 +
  183 + <para>
  184 + No entanto existem casos onde é necessário que a aplicação comunique clientes de eventos ocorridos no sistema. Um exemplo é um monitor
  185 + de espaço em disco que envia um alerta quando esse espaço for menor que 20% do total.
  186 + </para>
  187 +
  188 + <para>
  189 + Para essa funcionalidade o <emphasis>Demoiselle Framework</emphasis> disponibiliza o utilitário <emphasis>NotificationManager</emphasis>, que
  190 + pode ser injetado em sua aplicação a qualquer momento para notificar clientes externos de eventos importantes.
  191 + </para>
  192 +
  193 + <para>Considere o exemplo abaixo:</para>
  194 +
  195 + <programlisting role="JAVA"><![CDATA[
  196 +public class DiskWritter{
  197 +
  198 + @Inject
  199 + private NotificationManager notificationManager;
  200 +
  201 + public void writeFile(byte[] data , File fileToWrite){
  202 + // ... implementação da escrita de arquivo
  203 +
  204 + if (fileToWrite.getUsableSpace() / (float)fileToWrite.getTotalSpace() <= 0.2f){
  205 + Notification notification = new GenericNotification("O espaço disponível no disco é inferior a 20% do total");
  206 + notificationManager.sendNotification( notification );
  207 + }
  208 + }
  209 +}]]></programlisting>
  210 +
  211 + <para>
  212 + Nesse exemplo podemos ver como enviar uma notificação em decorrência de um evento gerado pela aplicação. Dessa forma
  213 + a aplicação pode comunicar a um agente de monitoração sobre o espaço disponível no disco, ao invés de aguardar que o agente
  214 + conecte-se à aplicação para solicitar essa informação explicitamente.
  215 + </para>
  216 + </section>
  217 +
174 </section> 218 </section>
175 219
176 <section> 220 <section>
@@ -200,22 +244,22 @@ public class MonitorLogin{ @@ -200,22 +244,22 @@ public class MonitorLogin{
200 individualmente, as classes monitoradas serão então expostas para todas as extensões escolhidas.</para> 244 individualmente, as classes monitoradas serão então expostas para todas as extensões escolhidas.</para>
201 </tip> 245 </tip>
202 246
203 - <para>A figura <xref linkend="exemplo_jconsole" /> mostra como uma classe monitorada na aplicação <emphasis>Bookmark</emphasis> é exibida no <emphasis>JConsole</emphasis>.</para> 247 + <para>A figura <xref linkend="exemplo_jconsole" /> mostra como uma classe monitorada é exibida no <emphasis>JConsole</emphasis>.</para>
204 248
205 - <programlisting role="JAVA"><![CDATA[  
206 -@ManagementController  
207 -public class BookmarkMonitor { 249 + <programlisting role="JAVA"><![CDATA[@ManagementController
  250 +public class HelloWorldManager {
  251 +
  252 + @Inject
  253 + private HelloWorld helloWorld;
208 254
209 - @Inject  
210 - private BookmarkDAO bookmarkDAO; 255 + @ManagedOperation(type=OperationType.ACTION)
  256 + public void saySomething(String whatToSay){
  257 + helloWorld.say(whatToSay);
  258 + }
211 259
212 - @ManagedOperation(type=OperationType.INFO , description="Informa quantos bookmarks estao salvos no sistema")  
213 - public int countSavedBookmarks(){  
214 - return bookmarkDAO.findAll().size();  
215 - }  
216 }]]></programlisting> 260 }]]></programlisting>
217 261
218 - <figure id="exemplo_jconsole"><title>JConsole acessando a aplicação <emphasis>Bookmark</emphasis></title> 262 + <figure id="exemplo_jconsole"><title>JConsole acessando uma aplicação monitorada</title>
219 <mediaobject> 263 <mediaobject>
220 <imageobject> 264 <imageobject>
221 <imagedata fileref="images/jmx-jconsole-example.png" width="90%" /> 265 <imagedata fileref="images/jmx-jconsole-example.png" width="90%" />
@@ -223,6 +267,21 @@ public class BookmarkMonitor { @@ -223,6 +267,21 @@ public class BookmarkMonitor {
223 <textobject><phrase>JConsole acessando a aplicação <emphasis>Bookmark</emphasis></phrase></textobject> 267 <textobject><phrase>JConsole acessando a aplicação <emphasis>Bookmark</emphasis></phrase></textobject>
224 </mediaobject> 268 </mediaobject>
225 </figure> 269 </figure>
  270 +
  271 + <para>
  272 + É possível perceber os seguintes elementos nessa imagem:
  273 + <itemizedlist>
  274 + <listitem>Uma classe gerenciada <emphasis>HelloWorldManager</emphasis> com uma operação chamada <emphasis>saySomething</emphasis></listitem>
  275 + <listitem>Uma classe geradora de notificações <emphasis>NotificationBroadcaster</emphasis> responsável por converter as notificações para a API JMX</listitem>
  276 + </itemizedlist>
  277 + </para>
  278 +
  279 + <para>
  280 + Através do <emphasis>JConsole</emphasis> é possível invocar comandos e acessar atributos em todas as classes anotadas com <emphasis>@ManagementController</emphasis>
  281 + em aplicações que usam o <emphasis>demoiselle-jmx</emphasis>. Também é possível inscrever-se às notificações enviadas por <emphasis>NotificationBroadcaster</emphasis>
  282 + e receber todas as notificações enviadas pela aplicação.
  283 + </para>
  284 +
226 </section> 285 </section>
227 286
228 287
documentation/reference/pt-BR/images/jmx-jconsole-example.png

290 KB | W: | H:

50.9 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin