Dwr + annotation = instabilidade

1 resposta
C

Meus cumprimentos “javista” a todos…
Caros colegas to como um prob aki de atualizaçao de tabela dinamica (ajax frame dwr + annotation).

Dah seguinte forma:

tenho uma janela (mostrada abaixo) que de tempos em tempos (20000 msegundos ) suas duas tabelas sao atualizas buscando dados nao banco no servidor da aplicacao.

O codigo tah meu instavel, ora funciona ora nao. As vezes aparece empenho e ligacao corretos (ultimas inserçoes no banco) outra vez aparece empenho correto e ligacao erradas e vice versa.

Li algo ai na net sobre atualiazar via servidor mais nao entendi muito nem funcionou aki. Vi sobre polling, Comet e outros metodos apresantado mais nao obtive sucesso (referencia: http://directwebremoting.org/dwr).
O q parece eh que o dwr armazena lixo nas consultas e nao consegue exibir os dados corretos. Com o passar do tempo que a aplicaçao estah rodando o probabilidade de erro aumenta e os problemas começam a aparecer. Serah q existe uma metodo do dwr q limpa todos as referencia aos objetos da pagina?? sei lah!!!

Alguem tem um help ai ou alguma ideia do q poderia estar causando essa instabidade… ahhh se alguem souber de um exemplo ai de atualizar via server bem simples passa o link, please…

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
      <!--<meta http-equiv="refresh" content="40">-->
      --<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title><bean:message key="janela.principal.title"></bean:message></title>
      <script type='text/javascript' src='/not/dwr/interface/Empenho.js'></script>
      <script type='text/javascript' src='/not/dwr/interface/Ligacao.js'></script>
      <script type='text/javascript' src='/not/dwr/engine.js'></script>
      <script type='text/javascript' src='/not/dwr/util.js'></script>
      <script type="text/javascript" >
         setTimeout("montaGrids",20000);
         function montaGrids()
         {
             DWRUtil.useLoadingMessage();
             carregaListEmpenho();
             carregaListLigacao();
             
         }
         function carregaListEmpenho()
         {
            Empenho.consultarTodos('EmpenhoForm',montaGridEmpenho);
         }
         function carregaListLigacao()
         {
            Ligacao.consultarTodos('LigacaoForm',montaGridLigacao);
         }
         function montaGridLigacao(list)
         {
            DWRUtil.removeAllRows('gridLigacao');
            var cellFuncs =
            [
             
              function(data)
              {
                 return data.hora_fato
              },
              function(data)
              {
                 return data.hora_ligacao;
              },
              function(data)
              {
                  return '<input id="inputLigacao" type="button" style="color:#FF0000" value="' + data.codigo + ' " onclick="chamaLigacao(this);"/>';
              },
              function(data)
              {
                 return '<input type="checkbox" name="cxNaoGeraBmo" value="GerarBmo" />';
              }
             
            ];
            DWRUtil.addRows('gridLigacao',list,cellFuncs,{ escapeHtml:false } );
              
         }  
         function montaGridEmpenho(list)
         {
            DWRUtil.removeAllRows('gridEmpenho');
            var cellFuncs =
            [
              function(data)
              {
                 return data.nomeAgente;
              },
              function(data)
              {
                 return data.numViatura;
              },
              function(data)
              {
                 return '<input id="inputEmpenho" type="button" value="'+ data.num_bmo + '" onclick="chamaEmpenho(this);"/>';
              }
            ];
            DWRUtil.addRows('gridEmpenho',list, cellFuncs, { escapeHtml:false } );
         }
         function fone(e)
         {
              var input = e.srcElement || e.target;
              value = input.value;
              value = value.replace(/\D/g,'').split('');
              var vL = value.length;
              for(var i=0;i < vL;i++)
              {
                      if(i == 0)
                      {
                       value[i] = '(' + value[i];
                       //value = abre + value;
                      } 
                      if(i == 2) 
                      {
                        //value = fecha + value;
                           value[i] = ')' + value[i];
                      }  
                      if (i ==5)
                      {    
                        //value = value + separador;
                        value[i] += '-';
                      }
               }
               input.value = value.join('');
         }
         function chamaEmpenho(input)  
         { 
             var empenho = input.value;
             var form = document.forms[0];
             form.action = 'MostraEmpenho.do?input=' + empenho + ''; 
             form.submit(); 
         } 
         function chamaLigacao(input)  
         { 
             var ligacao = input.value;
             var form = document.forms[0];
             if(form.cxNaoGeraBmo.checked)
             {
                form.action = '.do?input=' + ligacao + ''; 
             }
             else
             {
                form.action = 'MostraLigacao.do?input=' + ligacao + ''; 
             }   
             form.submit(); 
         }
         function chamaBusca()
         {
             var form = document.forms[1];
             var value = form.txtBusca.value;
             Empenho.consultarEmpenho(value,submeterBusca);
         }
         function submeterBusca(empenho)
         {
             if(empenho == null)
               alert('Empenho não existe.');
             else
             {
                var form = document.forms[1];
                var value = form.txtBusca.value;
                form.txtBusca.value = '';
                form.action = 'BuscaEmpenho.do?input=' + value + ''; 
                form.submit();
             } 
         }
         function chamaAltera()
         {
             var form = document.forms[1];
             var value = form.txtAltera.value;
             Empenho.consultarEmpenho(value,submeterAltera);
             
         }
         function submeterAltera(empenho)
         {
             if(empenho == null)
               alert('Empenho não existe.');
             else
             {
                var form = document.forms[1];
                var value = form.txtAltera.value;
                form.txtAltera.value='';
                form.action = 'AlterarBmo.do?input=' + value + ''; 
                form.submit();
             }
         }
         function Mascara(e)
          {
                 
                    var input = e.srcElement || e.target;
                    value = input.value;
                   
                    value = value.replace(/\D/g,'').split('');
                    vL = value.length;
                   
                    input.value = value.join('');
                   
          }
         
         function getDate()
           {
              
                Todays = new Date();
                TheDate = Todays.getDate() +"/"+ (Todays.getMonth()+1) + "/" +  Todays.getFullYear();
                 DWRUtil.setValue('txtData',TheDate);
           }
           function formatTime(e)
           {
           
            // pega elemento do evento
            var input = e.srcElement || e.target;
            // pega valor
               value = input.value;
           
            // tira os caracters invalidos e quebra string em partes N:1
            value = value.replace(/\D/g,'').split('');
           
            // pega tamanho
            vL = value.length;
            for(var i = 0; i < vL; i++)
            {
               // se for 1
                 if(i==1)
                 {
                    value[i] += ':';
                 }
              }
           
              // junta tudo e coloca como valor
              input.value = value.join('');
           }
           function getHora()
           {
                var hoje = new Date();
                var hora = hoje.getHours();
                var minuto = hoje.getMinutes();
                var HoraTrans = ""+ hora +":" + minuto;
                DWRUtil.setValue('txtHoraTrans',HoraTrans);
               
           }
           
          
          
     </script>
    </head>
    <body onload="montaGrids();" bgcolor="#6699FF">
     <OBJECT ID="Player" widht="300" height="250" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
       <PARAM name="URL" value="phone.wma">
       <PARAM name="uiMode" value="invisible">
     </OBJECT>
     <table border="0" align="center">
       <thead>
          <tr>
               <form name="formPrincipal" action="" method="POST" target="_blank">
               <th>
                    <fieldset style="width: 20%;" >
                         &lt;legend align="center"&gt;<b>&lt;bean:message key="janela.principal.empenho"&gt;&lt;/bean:message&gt;</b>&lt;/legend&gt;
                         &lt;table border="1" align="center"&gt;
                              &lt;tr&gt;
                                   &lt;td&gt;<b>  Agente  </b>&lt;/td&gt;
                                   &lt;td&gt;<b>  Viatura </b>&lt;/td&gt;
                                   &lt;td&gt;<b>    Bmo   </b>&lt;/td&gt;
                              &lt;/tr&gt;
                              &lt;tbody id="gridEmpenho"&gt; &lt;/tbody&gt;
                         &lt;/table&gt;
                    &lt;/fieldset&gt;
               &lt;/th&gt;
               &lt;th&gt;
                   &lt;fieldset style="width: 20%;"&gt;
                        &lt;legend align="center"&gt;<b>&lt;bean:message key="janela.principal.ligacao"&gt;&lt;/bean:message&gt;</b>&lt;/legend&gt;
                        &lt;table border="1" align="center"&gt;
                             &lt;tr&gt;
                                  &lt;td&gt;<b>  Hora Fato   </b>&lt;/td&gt;
                                  &lt;td&gt;<b> Hora Ligação </b>&lt;/td&gt;
                                  &lt;td&gt;<b>   Ligação    </b>&lt;/td&gt;
                                  &lt;td&gt;<b>   Gerar Bmo    </b>&lt;/td&gt;
                             &lt;/tr&gt;
                             &lt;tbody id="gridLigacao"&gt;&lt;/tbody&gt;
                        &lt;/table&gt;
                   &lt;/fieldset&gt;
               &lt;/th&gt;
            &lt;/form&gt;  
          &lt;/tr&gt;
       &lt;/thead&gt;
    &lt;/table&gt;
    &lt;form name="formBusca" action="" method="POST" target="_blank"&gt;
        &lt;table border="0" align="center"&gt;
            &lt;tbody&gt;
                    &lt;tr&gt;
                        &lt;td&gt;<b>&lt;bean:message key="janela.principal.busca"&gt;&lt;/bean:message&gt;</b>&lt;/td&gt;
                        &lt;td&gt;&lt;input type="text" name="txtBusca" value="" onkeyup="Mascara(event);" maxlength="5" size="10" /&gt;&lt;/td&gt;
                        &lt;td&gt;&lt;input type="button" value="Ok" onclick="chamaBusca();"name="bntBuscar" /&gt;&lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                       &lt;td&gt;<b>&lt;bean:message key="janela.principal.altera"&gt;&lt;/bean:message&gt;</b>&lt;/td&gt;
                       &lt;td&gt;&lt;input type="text" name="txtAltera" value="" maxlength="5" onkeyup="Mascara(event);" size="10" /&gt;&lt;/td&gt;
                        &lt;td&gt;&lt;input type="button"  value="Ok" onclick="chamaAltera();"name="bntAlterar" /&gt;&lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                         &lt;td&gt;
                             &lt;input type="button" value="Empenhar" onclick="window.open('pages/EmpenharViaRadio.jsp','Radio')" name="bntEmpenhar" /&gt; 
                         &lt;/td&gt;
                    &lt;/tr&gt;
            &lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/form&gt;
  &lt;/body&gt;
&lt;/html&gt;

Agradecido …
Ateh
Carlos Martins

1 Resposta

C

vixiiiiii ninguem …

mais uma questao??? esse problema de atualizaçao nao pode ser a instancia do banco que ainda nao mudou apos a inserçao?? Se for, quando os dados for buscado a aplicaçao nao enxergarah a nova instancia (com a nova inserçao) ?? o q acham ?? se for alguem tem uma ideia como posso contornar isso ??

help me please !"!!

Criado 24 de agosto de 2008
Ultima resposta 26 de ago. de 2008
Respostas 1
Participantes 1