Recentemente, onde eu trabalho, tivemos problemas com uma exceção macabra:
java.io.StreamCorruptedException: invalid stream header: 0D0A0D0AIsso 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.