Modelo de Uso para Utilizar ActivitySessions com Sessões HTTP

Este tópico descreve como um aplicativo da Web que é executado no contêiner de Web do WebSphere pode participar de um contexto ActivitySession.

Se o aplicativo da Web tiver sido projetado de forma que várias chamadas de servlet ocorram como parte do mesmo aplicativo lógico, os servlets poderão usar HttpSession para preservar estado entre as chamadas de servlet. O contexto do ActivitySession é um estado que pode ser suspenso no HttpSession e retomado em uma futura chamada de um servlet que acesse HttpSession.

Um ActivitySession é associado automaticamente a um HttpSession, de forma que possa ser utilizado para estender o acesso ao ActivitySession por várias chamadas HTTP, pela inclusão ou redirecionamento de servlets e para suportar períodos de ativação de EJB (Enterprise JavaBeans) que podem ser determinados pelo ciclo de vida do cliente HTTP da Web. Um contexto ActivitySession armazenado em um HttpSession também pode ser utilizado para relacionar o trabalho do ActivitySession novamente a um cliente HTTP da Web específico.

O contêiner da Web gerencia os ActivitySessions baseados nos atributos do descritor de implementação associados aos servlets no módulo do aplicativo da Web. Os dois módulos de uso são:
  • O contêiner da Web inicia e finaliza as ActivitySessions.
    O aplicativo da Web chama um servlet que foi configurado para o controle do contêiner da ActivitySessions.
    • Se um HttpSession existir, então, terá um ActivitySession associado.
    • Se um HttpSession não existir, o servlet poderá iniciar um HttpSession, que faz com que um ActivitySession seja iniciado automaticamente e associado ao HttpSession.

    Um servlet não pode iniciar um novo HttpSession até que um HttpSession existente tenha sido finalizado. Em um HttpSession, o aplicativo da Web pode chamar outros servlets que podem usar o contexto do ActivitySession associado. Quando o aplicativo da Web chama um servlet que finaliza o HttpSession, o ActivitySession é finalizado automaticamente. Isso é mostrado no diagrama a seguir:

    Figura 1. Controle do Contêiner da Web de ActivitySessions. Esta figura está descrita no texto circundante.Controle de Contêineres da Web de ActivitySessions, Descrito no Texto que Acompanha Esta Figura
  • O aplicativo da Web inicia e finaliza ActivitySessions.
    O aplicativo da Web chama um servlet que foi configurado para o controle do aplicativo de ActivitySessions.
    • Se um HttpSession existir e tiver um ActivitySession associado, o servlet poderá usar ou finalizar o contexto do ActivitySession.
    • Se um HttpSession não existir, o servlet poderá iniciar um HttpSession, mas isso não iniciará um ActivitySession automaticamente.
    • Se um HttpSession existir, mas não tiver um ActivitySession associado, o servlet poderá iniciar um novo ActivitySession. Isso associa automaticamente o ActivitySession ao HttpSession. O ActivitySession permanece ativo até o ActivitySession ser especificamente finalizado ou até o HttpSession ser finalizado.

    O servlet não pode iniciar um novo ActivitySession até que um ActivitySession existente tenha sido finalizado. O servlet não pode iniciar um novo HttpSession até que um HttpSession existente tenha sido finalizado.

    Em um HttpSession, o aplicativo da Web pode chamar outros servlets que podem usar ou finalizar um contexto do ActivitySession existente ou, se nenhum ActivitySession existir, iniciar um novo ActivitySession. Quando o aplicativo da Web chama um servlet que finaliza o HttpSession, o ActivitySession é finalizado automaticamente. Isso é mostrado no diagrama a seguir:

    Figura 2. Controle do aplicativo da web de ActivitySessions,. Esta figura está descrita no texto circundante.Controle de Aplicativos da Web dos ActivitySessions, Descrito no Texto que Acompanha Esta Figura

Um aplicativo da Web pode chamar servlets configurados para um dos modelos de uso.

Os pontos a seguir aplicam-se aos dois modelos de uso:

  • Para finalizar um HttpSession (e qualquer ActivitySession associado), o aplicativo da Web deve invalidar a sessão. Isso faz com que o ActivitySession seja verificado.
  • Todos os enterprise beans de recebimento de dados ativados no contexto de um ActivitySession podem ser mantidos na memória, em vez de serem passivados entre chamadas de servlet, porque o cliente torna-se efetivamente o cliente HTTP da Web.
  • Os aplicativos da Web podem ser compostos por muitos servlets e cada servlet do aplicativo da Web pode ser configurado com um valor para ActivitySessionControl. ActivitySessionControl determina se o servlet ou seu contêiner inicia algum ActivitySessions.
  • Um contexto do ActivitySession que engloba um contexto de transação ativo não pode ser associado a um HttpSession, porque uma transação pode conter travas de banco de dados e deve ser projetada para uma vida curta. Se um aplicativo mover uma transação ativa para um HttpSession, a transação será revertida e o ActivitySession será suspenso no HttpSession. Em geral, você deve projetar aplicativos para usar ActivitySessions ou outras construções como entidades de vida longa e transações ACID como entidades de curta duração dentro deles.
  • Somente um ActivitySession pode ser associado a um HttpSession a qualquer momento para a duração do ActivitySession. Um ActivitySession associado a um HttpSession permanece associado para a duração do ActivitySession e não pode ser substituído por outro até que a primeira ActivitySession seja concluída. O ActivitySession pode ser acessado por muitos servlets se eles tiverem acesso compartilhado ao HttpSession.
  • ActivitySessions não são persistentes. Se um HttpSession persistente existir por mais tempo do que o servidor que o hospeda, todas as ActivitySessions armazenadas em cache serão finalizadas quando o servidor de hospedagem for finalizado.
  • Se exceder o tempo limite de HttpSession antes do encerramento da ActivitySession associada, ActivitySession será reconfigurada. 1. Isto reverte os recursos de ActivitySession para o último ponto de consistência:
    • Se o aplicativo da Web tiver chamado um servlet que tenha sido configurado para o controle de contêiner de ActivitySessions, os recursos de ActivitySession serão totalmente revertidos.
    • Se o aplicativo da Web tiver chamado um servlet que tenha sido configurado para o controle de aplicativo de ActivitySessions, os recursos de ActivitySession serão revertidos para o último ponto de verificação utilizado pelo servlet ou totalmente, se nenhum ponto de verificação tiver sido utilizado.
  • Se exceder o tempo limite de ActivitySession, ela será reconfigurada para o último ponto de consistência (consulte o item anterior) e HttpSession será encerrada.
1 A reconfiguração de uma ActivitySession faz com que todos os recursos envolvidos na ActivitySession atual sejam revertidos para o último ponto de consistência, mas permite trabalho adicional na ActivitySession. Quando a reconfiguração for concluída, o encadeamento será associado ao mesmo ActivitySession que estava antes da reconfiguração ser chamada. Os recursos de ActivitySession permanecem associados à ActivitySession embora não possam participar mais da ActivitySession

Ícone que indica o tipo de tópico Tópico de Referência



Í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=ras_ohttp
Nome do arquivo: ras_ohttp.html