/ / Session cookie não é enviado de volta pelo cliente usando URLConnection nas janelas com o JRE 1.7 - java, windows, cookies de sessão, java-web-start, urlconnection

Cookie de sessão não é enviado de volta pelo cliente usando URLConnection nas janelas com o JRE 1.7 - java, windows, cookies de sessão, java-web-start, urlconnection

Nós temos um aplicativo que é deploied usandoJava Web Start. Ele se comunica com um servlet usando URLConnection e gerenciando a sessão por Cookies (JSESSIONID). Funcionou bem com o Java 1.5 e o 1.6. Com o Java 1.7 in janelas Não funciona mais: o cookie JSESSIONID não é enviado de volta para o servidor (vi isso usando o HTTPMonitor do eixo apache). O que está errado?

Lançar o mesmo aplicativo com o Java Web Start a partir de uma caixa linux funciona conforme o esperado.

A versão é: JRE 1.7.0_04 com o Java Web Start 10.4.0.22_04

Respostas:

2 para resposta № 1

Nós estávamos ficando incrivelmente frustrados com oO fato de nosso aplicativo ter funcionado bem quando iniciado a partir do Eclipse, mas não conseguiu se comunicar com nossos terminais REST autenticados, quando executado via Web Start, devido à falta do JSESSIONID, conforme o problema descrito na pergunta. Estamos executando o Java 1.7.

Depois de muita depuração remota, descobrimos que, intencionalmente ou não (eu só consigo encontrar pouca documentação sobre isso, por exemplo, uma única linha aqui: http://docs.oracle.com/javase/tutorial/networking/cookies/cookiehandler.html), um aplicativo Java Web Start define um CookieHandler padrão, geralmente uma instância de com.sun.deploy.net.cookie.DeployCookieSelector, mas o que quer que isso seja, isso estraga o tratamento do cookie JSESSIONID. Redefinir o manipulador de cookie padrão para nulo java.net.CookieHandler.setDefault(null) e voila, as solicitações HTTP de saída têm o cookie JSESSIONID preservado!

BTW Windows e Linux exibiram esse comportamento.