Utilizando o Suporte de Gerenciamento de Sessões HTTP para Aplicativos JAX-WS
O gerenciamento de sessões HTTP é executado na camada de transporte HTTP, utilizando os cookies ou regravação de URL. Ao fornecer várias opções para o acompanhamento de uma série de pedidos, o gerenciamento de sessões HTTP permite que aplicativos Java™ API for XML-Based Web Services (JAX-WS) pareçam dinâmicos para usuários de aplicativos.
Antes de Iniciar
Desenvolva um proxy dinâmico JAX-WS ou cliente Dispatch. Para aprender mais sobre o desenvolvimento de clientes JAX-WS, leia sobre o desenvolvimento de um cliente JAX-WS a partir de um arquivo WSDL (Web Services Description Language) ou desenvolvendo um cliente dinâmico utilizando as JAX-WS APIs.
Sobre Esta Tarefa
É possível utilizar o gerenciamento de sessões HTTP para manter as informações do estado do usuário no servidor, enquanto transmite as informações mínimas de volta para o usuário para rastrear a sessão. É possível implementar o gerenciamento de sessões HTTP no servidor de aplicativos utilizando os cookies de sessão ou a regravação de URL.
A interação entre o navegador, o servidor de aplicativos e o aplicativo é transparente para o usuário e para o programa aplicativo. O aplicativo e o usuário geralmente não estão cientes do identificador de sessão fornecido pelo servidor.
Cookies de sessão
O recurso de sessão de manutenção do HTTP utiliza um único cookie, JSESSIONID, e esse cookie contém o identificador de sessão. Este cookie é utilizado para associar o pedido às informações armazenadas no servidor para essa sessão. Em pedidos subsequentes do aplicativo JAX-WS, o ID de sessão é transmitido como parte do cabeçalho de pedido, que permite ao aplicativo associar cada pedido para um determinado ID de sessão com os pedidos anteriores desse usuário. Os aplicativos clientes JAX-WS recuperam o ID de sessão dos cabeçalhos de resposta HTTP e, em seguida, utilizam esses IDs nos pedidos subsequentes, configurando o ID de sessão nos cabeçalhos do pedido HTTP.
Regravação de URL
A regravação de URL funciona como uma URL redirecionada conforme armazena o identificador de sessão na URL. O identificador de sessão é codificado como um parâmetro em qualquer link ou formulário que seja enviado de uma página da Web. Esta URL codificada é utilizada para pedidos subsequentes para o mesmo servidor.
Procedimento
Resultados
Exemplo
<!-- This is the PolicyType for HTTP transport -->
<wsp:ExactlyOne>
<wsp:All>
<wshttp:readTimeout>300</wshttp:readTimeout>
<wshttp:writeTimeout>300</wshttp:writeTimeout>
<wshttp:connectTimeout>180</wshttp:connectTimeout>
<wshttp:persistConnection>yes</wshttp:persistConnection>
<wshttp:messageResendOnce>no</wshttp:messageResendOnce>
<wshttp:chunkTransferEnc>no</wshttp:chunkTransferEnc>
<wshttp:acceptRedirectedURL>no</wshttp:acceptRedirectedURL>
<wshttp:sendExpectHeader>no</wshttp:sendExpectHeader>
<wshttp:maintainSession>yes</wshttp:maintainSession>
<wshttp:compressRequest>
<wshttp:compressType name="none"></wshttp:compressType>
</wshttp:compressRequest>
<wshttp:compressResponse>
<wshttp:compressType name="none"></wshttp:compressType>
</wshttp:compressResponse>
<wshttp:protocolVersion>HTTP/1.1</wshttp:protocolVersion>
</wsp:All>
</wsp:ExactlyOne>
Map<String, Object> rc = ((BindingProvider) port).getRequestContext();
...
...
rc.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
...
...