Ois de novo,
 
(Escrevi no dia 12, e depois no dia 14, mas n�o apareceu na lista, nem no
hist�rico.. Resolvi mandar de novo! Desculpem se aparecerem v�rios..)
 
 
 
muito obrigada a todos que responderam! :-)
 
bom, gostaria de comentar algumas das respostas:
 
Duas pessoas me falaram pra usar o dispatcher.forward ao inv�s do
sendRedirect. Mas eu preciso que o browser fique com a nova url, o que n�o
aconteceria com o dispatcher, certo? Como comentei, trabalho muito com
atualiza��o de dados, (atualiza��o que n�o � s� update, pode ser insert,
delete..), e o navegador estar com a nova url (que s� exibe uma tela) evita
que possam acontecer alguns probleminhas - e a necessidade do tratamento
deles - com o uso do back do browser, cache, etc, etc... 
Tem outra forma de enviar o conte�do de outra url, mas fazendo o navegador
ficar com a nova?
O sendRedirect � um m�todo que n�o deveria ser usado? Eu deveria investir no
forward fazendo os tratamentos que hoje nao preciso por causa do
sendRedirect?
 
Outra pessoa questionou se eu t� passando os par�metros corretos para a
segunda chamada.. t� sim, com certeza, j� imprimi as chamadas pra ver se tem
algo diferente, e com certeza n�o tem! A mesma chamada �s vezes d� certo, �s
vezes n�o.. aleatoriamente!
 
E outras duas comentaram sobre o out.println, que n�o deve ser usado antes
do redirect. Eu olhei aqui e existia um out.println de uma vari�vel sim,
ap�s o sendRedirect, antes do return. 
Mas esta vari�vel est� vazia quando ocorre o redirecionamento. 
De qualquer forma s� farei o out.println() se estiver em opera��es que
precisarem.
Mas.. Isto poderia estar gerando erros de redirecionamento s� de vez em
quando, como tem acontecido comigo?
 
 
Bom, pra ilustrar um pouco o que tenho aqui vai um pseudo-c�digo:
 
service()...
{
  switch operacao
  {
    case alteracaoForm..
    {
      alteracaoOk = alteraDados..
      if(alteracaoOk)
        sendRedirect(operacaoExibicaoTela); 
      else
        htmlResultante= msgErro....
    }
    case exibicaoTela..
    {
      ...
      htmlResultante= exibeTela...
    }
  }
  .. (finalizacoes do service)
  out.println(htmlResultante);
  return;
}
 
 
----- Original Message ----- 
From: Carolina Diniz [[EMAIL PROTECTED]] 
To: '[EMAIL PROTECTED]' 
Sent: Friday, March 08, 2002 11:26 AM
Subject: [java-list] sendRedirect() - por que �s vezes n�o funciona?


Ol�s,
 
Gostaria de saber se algu�m j� teve problemas com o sendRedirect..
O meu caso � o seguinte:
 
Tenho um servlet que executa v�rias a��es, dependendo da solicita��o. na
maior parte do tempo ele faz exibicao de telas (formularios) e atualiza��o
de dados.
O sendRedirect � usado neste servlet em alguns momentos, com um
redirecionamento para o pr�prio servlet, com o novo pedido.
Por exemplo: o servlet recebe um pedido de atualiza��o de dados, faz a
atualiza��o e redireciona para uma solicita��o de exibi��o de tela.
 
De vez em quando este redirecionamento n�o � completado, o c�digo da
primeira solicita��o acaba (como no exemplo citado, a atualiza��o dos dados
� completada), mas a segunda parte n�o � feita, a segunda solicita��o n�o
chega ao servlet, e o navegador exibe aquela p�gina de erro de 'a p�gina n�o
pode ser exibida..', o segundo perdido se perde totalmente, � terr�vel!!!
:-)
E pela minha an�lise feita at� agora isto � totalmente aleat�rio,  fa�o um
pedido, recebo mensagem de erro, fa�o o mesmo pedido logo em seguida, a
p�gina retorna.. ou 2, 3 retornam, 1 n�o..
Estive guardando alguns dados sobre as requisi��es -  como n�mero de acessos
no momento, navegador utilizado, etc.. - pra tentar achar alguma causa pra
este comportamento, mas at� agora n�o encontrei nada que desse alguma luz..
:-(
 
A �nica coisa que j� percebi � que dos v�rios lugares que uso o sendRedirect
� s� neste - atualiza��o de dados e exibi��o de tela - que este problema tem
acontecido. E o que tem de diferente neste caso? Bom, os dados que chegam na
primeira solicita��o (de atualiza��o de dados) costumam ser muitos.. e a
atualiza��o dos dados �s vezes demora um tempinho.. mas o estranho � que
quando acontece o erro a resposta vem at� relativamente r�pido,
diferentemente de quando a todo o processo � executado. lembrando aqui que
mesmo quando o erro acontece a atualiza��o � feita, a segunda requisi��o �
que se perde..

Bom.. fiquei pensando algumas coisas.. provavelmente nada a ver,  chute
total... se for muita bobagem desculpem, mas... a� vai..
 
se pode ser porque no sendredirect � usado get, e o get �s vezes est� sendo
perdido.. pode ser? (detalhe: a segunda solicita��o n�o ultrapassa o limite
de caracteres do get..), tem como usar post pra esta minha necessidade?
 
alguma configura��o no servidor?
no servidor em quest�o  o servlet est� rodando no jrun, com jre 1.3 da sun.
Isto est� acontecendo somente em uma empresa, o servlet roda em outras. O
acesso feito de uma m�quina l� de dentro n�o tem mostrando problema,
diferentemente de um acesso feito de fora..
 
alguma caracter�stica do cliente que est� acessando? 
se o cliente est� acessando por tr�s de alguma estrutura que atrapalhe este
processo.. 
vi que isto j� aconteceu usando linha discada, mas tamb�m de dentro da uma
outra empresa, com estrutura linha dedicada, proxy, etc..
 
N�o sei mais o que testar.. Se algu�m tiver alguma pista, por favor me
indique!! Estou desesperada!!! :-)
N�o gostaria de deixar de usar o redirecionamento pois isto no meu caso (de
atualiza��o de dados) pode causar uma s�rie de probleminhas com back do
browser, cache, etc, etc..
 
 
Aguardo qq ajuda!!!
 
Obrigada,
Carol.
 
 
 
 
 

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a