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

  1. Configure o servidor para ativar o rastreio da sessão. Especifique os cookies da sessão ou a regravação de URL para o seu mecanismo de rastreio de sessão utilizando o console de administração. Leia sobre a configuração do rastreio de sessão para aprender a rastrear as sessões com os cookies ou com a regravação de URL.
  2. Ative o gerenciamento de sessões HTTP para o cliente JAX-WS. É possível configurar manualmente a propriedade maintainSession para true na ligação do conjunto de política.
    • Ative o gerenciamento de sessões no cliente utilizando um arquivo do conjunto de política de transporte HTTP. É possível configurar a política de transporte HTTP utilizando o console de administração. Na página de configuração de transporte HTTP, selecione a caixa de opções Ativação da Sessão para ativar uma sessão HTTP. Leia sobre a configuração da propriedade de transporte HTTP para aprender a configurar essa propriedade. Também é possível configurar manualmente a propriedade maintainSession para yes para ativar o gerenciamento de sessões HTTP.
    • Ative o gerenciamento de sessões no cliente, configurando a propriedade JAX-WS, javax.xml.ws.session.maintain, para true.

Resultados

Você ativou o gerenciamento de sessões HTTP para o seu aplicativo JAX-WS.

Exemplo

O seguinte exemplo é um fragmento de um conjunto de política de Transporte HTTP que demonstra como configurar a propriedade maintainSession:
<!-- 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>
O exemplo de código a seguir demonstra como ativar programaticamente o gerenciamento de sessões no cliente, configurando a propriedade javax.xml.ws.session.maintain no objeto JAX-WS correto.
Map<String, Object> rc = ((BindingProvider) port).getRequestContext();
...
...
rc.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
...
...


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_httpsessmgmt
Nome do arquivo: twbs_httpsessmgmt.html