Problemas com objetos de sessão

15 respostas
ELIAS

Meu sistema roda no tomcat 5.0.28, e é acessado através de um menu de um sistema que já existia em php(que roda em apache em outro servidor), quando rodo o sistema fora do menu(php) o sistema funciona corretamente, por dentro ele as vezes não enxerga objetos que foram gravados em sessão.

Tipo : ${controle}

O mais interessante é quando acesso algumas telas que são pop-up os objetos passam a ser enxergados normalmente.

Mistério!!!

15 Respostas

N

Hmmmmm, isso me parece Struts na parte Java.

Talvez você esteja direcionando no PHP páginas JSP diretamente (sem objetos em sessão), em vez de acessar um Servlet (Action Struts) que faz alguma lógica e popula seus objetos de sessão e depois faz “forward” para seu JSP.

É isso ? Tem Servlet/Struts no meio do seu request ?

:roll:

ELIAS

Não é struts!!!

Meu código dentro do servlet

String aprovar = request.getParameter(aprovar);

if (aprovar != null){

oportunidade = leOportunidade(request);

ngc.AprovaOportunidade(oportunidade);

request.setAttribute(id, request.getParameter(idOpor));

return /mailerAprovacaoOpr.jsp;

}

request.getRequestDispatcher(jsp).forward(request, response);

ELIAS

(…) lá na mailerAprovacaoOpr.jsp não consigo ver o atributo id…

${id}

N

Você garante que sempre o seu request tem o “aprovar” ? Caso contrário vai acontecer algo parecido com o que você está relatando !

O que você quer dizer com o servlet retornando uma String com o nome do seu JSP ? :stuck_out_tongue: Acho que tem um erro aqui, certo ?

...
return "/mailerAprovacaoOpr.jsp"; 
...

Faz um debug e exibe se no caso de erro, o “aprovar” está lá no seu request.

:shock:

ELIAS

Descupe cara, esta é um método SALVAR que retorna uma string informando qual página deve ser direcionada, está funcionando corretamente, meu problema não é esse, é o fato de não enxergar alguns objetos que gravo na sessão!

louds

Hmmm, o php não tem como acessar as variaveis de sessão do java.
Se não for isso verifique se o cookie/jsession estão chegando corretamente ao tomcat.

ELIAS

Descobri o problema amigo, é realmente o q vc disse no começo, onde está dando problema é em uma jsp que anexa arquivos onde o request é para ela mesma, quando acesso pela primeira vez o objeto é lido, quando faço o request ai o objeto some, o formulário é do tipo “MultipartFormDataRequest”. é por isso?

ELIAS

como eu verifico cookie/jsession? hehehe…

N

Dependendo do que você está usando para manipular seu multipart-formdata formulário, seu atributo não deveria desaparecer.

De fato ele desaparece com algumas ferramentas que manipulam esses formulários, deve ser o seu caso.

Se não me engano, cookie e sessionId são atributos do seu HttpServletRequest. Dá uma olhada em na API do HttpServletRequest, estou com problemas acessando o site da SUN.

:slight_smile:

ELIAS

Cara quando eu clico no botão direito e uso outra janela, funciona normalmente pois está fora do menu, porem o menu q foi feito em php para abrir as páginas contem frames fixos, se eu acessar por dentro do menu some os objetos quando eu faço o request da jsp que anexa arquivos pra ela mesma, pode ser que o mesmo esteja criando uma nova sessão quando eu faço o request ?

N

Se você já tem uma sessão aberta, ela só será encerrada se você mandar encerrar no seu código explicitamente, ou se você fechar o seu browser.

Em uma situação como a sua, eu analisaria o Request que está chegando no seu servlet.

Com certeza você está fazendo Request’s diferentes, gerando resultados diferentes. O seu código está Ok, mas a forma que o seu HTML está fazendo POST/GET está dando pau.

Olha só, se você está fazendo upload de arquivo, fazendo submit de multipart-formdata, então pode ser que o Objeto que lê o seu request esteja ignorando seus atributos, eu acho que é isso que está ocorrendo. Não conheço bem os produtos disponíveis para isso, mas sei que nem todos fazem o parsing correto do seu POST. Procura um outro produto para Upload, talvez do Struts ou do Jakarta Commons.

ELIAS

Cara achei o problema, isso q vc falou realmente aconteceu quando ainda nem não possuia esse menu e já resolvi, seguinte, o sistema é acessado como falei por outro site que já estava pronto e foi feito em PHP usando o apache em um servidor diferente, o problema só acontece dentro dele, se eu acessar localhost:8080/XXXX não dar pau! agora é pq esse tal menu em PHP usa frames e não sei porque toda vez que muda de página é gerada uma nova sessão, não só na pagina de upload mas em todas as páginas, então quando eu dava um request na mesma página era criada uma nova sessão e por isso não achava os objetos. Fiz uma gambiarra ao acessar qualquer página é gerado um popup que “segura” a sessão não sei pq. Se vc souber o pq disso ou se eu puder evitar usar o popup seria ótimo.

N

Olha só.

O que “segura” a sessão no lado cliente, leia-se browser web, é o cookie.

Se o seu browser tiver cookie desabilitado, então você deveria utilizar um esquema de urlEncoding, aí vai ficar complicado, mas funciona.

Você teria que ter sempre entre requests o jSessionid como atributo do seu request. Ou seja, teria que ficar passando ele em cada href, submit, etc.

Não é uma boa solução, melhor é você permitir cookie no browser (se é esse o problema).

Vai tentando, uma hora funciona :slight_smile:

ELIAS

O esquema do popUp funcionou, por enquanto não vou quebrar a cabeça com isso, só vai ficar aparecendo uns “fantasminhas” (as janelinhas) aparecendo rapidamente, mas tudo bem cara, não tinha conseguido sem vc!

Valeu cara…

ELIAS

Ok foi só habilitar os cookies no browser, então o popup forçava uma criação de um cookie… Não presciso mais do popup. Agora como ativo o cookie do browser do meu cliente caso esteja desabilitado? Tem como?

problema resolvido.

Criado 28 de março de 2005
Ultima resposta 30 de mar. de 2005
Respostas 15
Participantes 3