Handerson Frota – Analista Programador; Sócio Fundador da Triadworks; Atualmente Analista Programador da IVIA; Envolvido na programação desde os 13 anos iniciando com C, web desde 1997 e com Java desde 2001; Entusiasta Java e Ajax; Colunista da DevMedia, com artigos e vídeo aulas; Coordenador e Fundador da Célula Java na Faculdade Lourenço Filho; Já atuou em vários projetos de médio e grande porte exercendo as funções de: Programador, Analista, Arquiteto e Líder Técnico;
O que é  COMET ? Comet ou ReverseAjax ? Você não conhece o DWR ? Quer saber mais sobre o DWR ? E agora como utilizar ? Mas, como vou configurar isso ? Preste atenção em alguns exemplos. Considerações finais.
 
Polling; Piggyback; Comet;
Polling – (Ativo) Quando o navegador(cliente) faz pedidos ao servidor em intervalos regulares e freqüentes. Gerando assim um tráfico extra e pesado na rede.
Servidor você tem alguma atualização pra mim ? SIM   NÃO  
Piggyback – (Passivo) O servidor tendo alguma atualização para o cliente aguarda até que o cliente faça uma nova solicitação, então ele “aproveita” para enviar juntamente com a respostas do cliente a sua atualização. Não gera tráfego extra, em contra partida é muito demorado.
Opá, tenho uma nova atualização pra você ! Servidor preciso do extrato da minha conta. Receba seu extrato e  um débito no seu cartão .
Comet – (Ativo) O servidor fica responsável em atualizar a qualquer momento o cliente. Uma única conexão é aberta e mantida pelo servidor.
Ele se utiliza basicamente de duas estratégias: Streaming; Long polling;
Streaming O navegador abre uma única conexão persistente para o servidor. Quando o servidor envia algum evento a conexão  não é fechada.
2. Long polling O navegador faz um pedido para o servidor, que é mantido em aberto até que o servidor tenha novos dados a ser enviado.  Após enviar um evento, o servidor encerra a conexão e imediatamente o navegador abre uma nova.
Seja qual for a técnica, o servidor é capaz de enviar novas informações com baixa latência; Streaming é considerado de melhor desempenho  comparado ao Long Polling;
Opa, a sua mulher acabou de efetuar uma compra com o seu cartão ! Vítima receba essa atualização.
 
 
 
 
O DWR é o Framework Ajax para JAVA mais robusto,  simples e confiável que existe no mercado atualmente. Ele possui integração com os principais frameworks do  mercado: JSF, EJB2, EJB3, Struts 1x, Struts 2.x, Webwork, Hibernate, Hibernate 2, Hibernate 3, Spring dentre outros.
 
 
Site Oficial:  http://directwebremoting.org/dwr Artigos, Vídeo Aulas:  http://www.handersonfrota.com.br/artigos-tutoriais/dwr/
 
Por padrão o DWR começa com o Reverse Ajax(Comet) desligado, permitindo apenas a transferência via Piggyback. O Reverse Ajax do DWR possui dois modos: Ativo e Passivo. O Modo Ativo possui ainda mais 3 modos.
 
Full Streaming(Comet - Streaming) Early Closing (Comet - Long Polling) Polling
 
 
1. Basta acrescentar o trecho de código no seu web.xml. Com isso você ativa o Reverse Ajax.
2. Depois de ativado no web.xml, agora no segundo passo você vai definir qual a página que vai se utilizar do Reverse Ajax. Basta acrescentar na sua página a seguinte linha de código: Você poderá adicionar no  onload  da página ou no início de um arquivo JS, ou apenas como Script na página.
 
 
Este é o modo padrão quando o Reverse Ajax é ativado para  as versões 2.0.3 e anteriores.  A partir da versão 2.0.4 o padrão é a Early Closing. Ele tem como características respostas mais rápidas,  porque ele fecha a conexão apenas uma vez a cada 60  segundos, ou verifica se o browser ainda está ativo.
Para ativar o modo Full Streaming na versão DWR 2.0.4 em  diante, basta seguir as configurações: No web.xml ative o uso de Reverse Ajax.
Ainda no web.xml adicione o seguinte trecho. Depois basta acrescentar na sua página a seguinte linha de código:
No modo Early Closing ele irá manter a conexão aberta  assim como na Full Streaming, no entanto ele ocupa apenas  a conexão durante 60 segundos, se não houver uma saída  para o navegador. Esse modo nas versões DWR 2.0.4 e superiores, não se faz  necessária nenhuma configuração adicional.  Para as versões 2.0.3 para baixo é preciso adicionar o  seguinte trecho.
Neste caso o DWR irá manter a conexão aberta por mais de  500 milissegundos após a primeira saída, depois ele fecha e  já solicita o a sua reabertura. Ele faz isso antes de forçar um  flush.
Caso este modo esteja sendo utilizado em aplicações com  um elevada taxa de transferência de dados(servidor-cliente)  se faz necessário em alguns casos aumentar a o tempo de  conexão aberta com o servidor. Bastando alterar o valor no maxWaitAfterWrite = 1000 ou  Mais, dependendo da sua necessidade.
 
Se por algum motivo você deseje utilizar essa técnica,  também é bem simples configurar. Além da configuração padrão:  web.xml(activeReverseAjaxEnabled=true) é preciso  adicionar dois init-params, veja a seguir:
Você deve definir o PollingServerLoadMonitor. No modo Polling o default é de 5 segundos, mas é  recomendado que você altere esse valor, pelo menos para 60  segundos. Isso para as versões DWR 2.0.3 em diante.
 
Como vimos o DWR tem um excelente suporte a Reverse  Ajax(Comet) em geral. Bem simples de se utilizar, fácil de  configurar e robusto. O DWR 3.0 promete muito mais, com novas features,  suporte a Rest, melhor integração com Spring, suporte ao  Google Gears e Dojo Offline,Aptana Jaxer, OpenAjax,  PubSub, Bayeux etc.
 

Reverse Ajax Dwr

  • 1.
  • 2.
    Handerson Frota –Analista Programador; Sócio Fundador da Triadworks; Atualmente Analista Programador da IVIA; Envolvido na programação desde os 13 anos iniciando com C, web desde 1997 e com Java desde 2001; Entusiasta Java e Ajax; Colunista da DevMedia, com artigos e vídeo aulas; Coordenador e Fundador da Célula Java na Faculdade Lourenço Filho; Já atuou em vários projetos de médio e grande porte exercendo as funções de: Programador, Analista, Arquiteto e Líder Técnico;
  • 3.
    O que é COMET ? Comet ou ReverseAjax ? Você não conhece o DWR ? Quer saber mais sobre o DWR ? E agora como utilizar ? Mas, como vou configurar isso ? Preste atenção em alguns exemplos. Considerações finais.
  • 4.
  • 5.
  • 6.
    Polling – (Ativo)Quando o navegador(cliente) faz pedidos ao servidor em intervalos regulares e freqüentes. Gerando assim um tráfico extra e pesado na rede.
  • 7.
    Servidor você temalguma atualização pra mim ? SIM  NÃO 
  • 8.
    Piggyback – (Passivo)O servidor tendo alguma atualização para o cliente aguarda até que o cliente faça uma nova solicitação, então ele “aproveita” para enviar juntamente com a respostas do cliente a sua atualização. Não gera tráfego extra, em contra partida é muito demorado.
  • 9.
    Opá, tenho umanova atualização pra você ! Servidor preciso do extrato da minha conta. Receba seu extrato e um débito no seu cartão .
  • 10.
    Comet – (Ativo)O servidor fica responsável em atualizar a qualquer momento o cliente. Uma única conexão é aberta e mantida pelo servidor.
  • 11.
    Ele se utilizabasicamente de duas estratégias: Streaming; Long polling;
  • 12.
    Streaming O navegadorabre uma única conexão persistente para o servidor. Quando o servidor envia algum evento a conexão não é fechada.
  • 13.
    2. Long pollingO navegador faz um pedido para o servidor, que é mantido em aberto até que o servidor tenha novos dados a ser enviado. Após enviar um evento, o servidor encerra a conexão e imediatamente o navegador abre uma nova.
  • 14.
    Seja qual fora técnica, o servidor é capaz de enviar novas informações com baixa latência; Streaming é considerado de melhor desempenho comparado ao Long Polling;
  • 15.
    Opa, a suamulher acabou de efetuar uma compra com o seu cartão ! Vítima receba essa atualização.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    O DWR éo Framework Ajax para JAVA mais robusto, simples e confiável que existe no mercado atualmente. Ele possui integração com os principais frameworks do mercado: JSF, EJB2, EJB3, Struts 1x, Struts 2.x, Webwork, Hibernate, Hibernate 2, Hibernate 3, Spring dentre outros.
  • 21.
  • 22.
  • 23.
    Site Oficial: http://directwebremoting.org/dwr Artigos, Vídeo Aulas: http://www.handersonfrota.com.br/artigos-tutoriais/dwr/
  • 24.
  • 25.
    Por padrão oDWR começa com o Reverse Ajax(Comet) desligado, permitindo apenas a transferência via Piggyback. O Reverse Ajax do DWR possui dois modos: Ativo e Passivo. O Modo Ativo possui ainda mais 3 modos.
  • 26.
  • 27.
    Full Streaming(Comet -Streaming) Early Closing (Comet - Long Polling) Polling
  • 28.
  • 29.
  • 30.
    1. Basta acrescentaro trecho de código no seu web.xml. Com isso você ativa o Reverse Ajax.
  • 31.
    2. Depois deativado no web.xml, agora no segundo passo você vai definir qual a página que vai se utilizar do Reverse Ajax. Basta acrescentar na sua página a seguinte linha de código: Você poderá adicionar no onload da página ou no início de um arquivo JS, ou apenas como Script na página.
  • 32.
  • 33.
  • 34.
    Este é omodo padrão quando o Reverse Ajax é ativado para as versões 2.0.3 e anteriores. A partir da versão 2.0.4 o padrão é a Early Closing. Ele tem como características respostas mais rápidas, porque ele fecha a conexão apenas uma vez a cada 60 segundos, ou verifica se o browser ainda está ativo.
  • 35.
    Para ativar omodo Full Streaming na versão DWR 2.0.4 em diante, basta seguir as configurações: No web.xml ative o uso de Reverse Ajax.
  • 36.
    Ainda no web.xmladicione o seguinte trecho. Depois basta acrescentar na sua página a seguinte linha de código:
  • 37.
    No modo EarlyClosing ele irá manter a conexão aberta assim como na Full Streaming, no entanto ele ocupa apenas a conexão durante 60 segundos, se não houver uma saída para o navegador. Esse modo nas versões DWR 2.0.4 e superiores, não se faz necessária nenhuma configuração adicional. Para as versões 2.0.3 para baixo é preciso adicionar o seguinte trecho.
  • 38.
    Neste caso oDWR irá manter a conexão aberta por mais de 500 milissegundos após a primeira saída, depois ele fecha e já solicita o a sua reabertura. Ele faz isso antes de forçar um flush.
  • 39.
    Caso este modoesteja sendo utilizado em aplicações com um elevada taxa de transferência de dados(servidor-cliente) se faz necessário em alguns casos aumentar a o tempo de conexão aberta com o servidor. Bastando alterar o valor no maxWaitAfterWrite = 1000 ou Mais, dependendo da sua necessidade.
  • 40.
  • 41.
    Se por algummotivo você deseje utilizar essa técnica, também é bem simples configurar. Além da configuração padrão: web.xml(activeReverseAjaxEnabled=true) é preciso adicionar dois init-params, veja a seguir:
  • 42.
    Você deve definiro PollingServerLoadMonitor. No modo Polling o default é de 5 segundos, mas é recomendado que você altere esse valor, pelo menos para 60 segundos. Isso para as versões DWR 2.0.3 em diante.
  • 43.
  • 44.
    Como vimos oDWR tem um excelente suporte a Reverse Ajax(Comet) em geral. Bem simples de se utilizar, fácil de configurar e robusto. O DWR 3.0 promete muito mais, com novas features, suporte a Rest, melhor integração com Spring, suporte ao Google Gears e Dojo Offline,Aptana Jaxer, OpenAjax, PubSub, Bayeux etc.
  • 45.