04 janeiro 2012

Applets e Id da Sessão

Recentemente, onde eu trabalho, tivemos problemas com uma exceção macabra:
java.io.StreamCorruptedException: 
    invalid stream header: 0D0A0D0A

Isso se dava ao fato de a applet não conseguir se comunicar com a servlet, devido ao filtro de segurança. Entretanto, debugando o filtro de segurança, notamos que em todas as conexões realizadas pela applet, a sessão de usuário era perdida.
Depois de muito bater cabeça, um colega de trabalho chamado Luciano Duarte D. Andrade (merecidos créditos), alertou para a necessidade de se passar o jsessionid na URL da servlet chamada pela applet. No final das contas, o HTML da applet deveria conter código semelhante ao abaixo
<param name="url_servlet" 
value="http://servidor:porta/contexto/endereco-da-servlet;
jsessionid=xxxxxyyyyyyyzzzzzzzzwwwwwwwww" />
para obter o valor do jsessionid, deve-se executar o seguinte código (java):
String jsessionid = request.getSession(false).getId();
O "false" do trecho de codigio acima evita que sejam criadas novas sessoes.

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.
Comentários
0 Comentários

0 comments:

Postar um comentário

Regras são chatas, mas...

- Seu comentário precisa ter relação com o assunto do post;
- Em hipótese alguma faça propaganda de outros blogs ou sites;
- Não inclua links desnecessários no conteúdo do seu comentário;
- Se quiser deixar sua URL, comente usando a opção OpenID;
- CAIXA ALTA, miguxês ou erros de ortografia não serão tolerados;
- Ofensas pessoais, ameaças e xingamentos não são permitidos;