next up previous contents index
Next: Heterogeneidade Up: Persistência Previous: Localização e Carregamento

Término de um Contexto

Quando um contexto termina os seus objectos persistentes devem ser enviados para o repositório. Se nenhum dos objectos persistentes tiver sido exportado, i.e., se não existirem referências remotas a objectos persistentes, a morte do contexto não necessita de cuidados especiais relativamente às possíveis interacções entre contextos. O gestor de persistência limita-se a executar a operação de escrita descrita acima e a enviar o bloco para o repositório, onde ele é colocado sob a identificação providenciada pelo contexto. Durante a operação de salvaguarda, o objecto não está acessível para ser carregado.

Quando um contexto tem dependentes, i.e., quando existem contextos que importam objectos persistentes por ele criados ou carregados, o processo de salvaguarda tem que garantir a coerência dos dados. Como apenas o servidor possui informação sobre o estado do objecto enquanto os clientes apenas possuem o ponto de comunicação do servidor, o problema reduz-se a impedir acessos ao servidor durante a salvaguarda e garantir que um dos outros contextos consegue posteriormente assumir a função de servidor e ser reconhecido pelos outros como tal.

O primeiro passo é o contacto de todos os dependentes pelo gestor pertencente ao contexto que está em vias de terminar a execução. Cada um dos gestores dependentes deve impedir a utilização de referências remotas durante o processo de salvaguarda. Como a utilização se resume à invocação de operações, o controlo é delegado no envelope. Estes sendo sensíveis ao estado do gestor impedem as invocações e aguardam a mudança de estado daquele. A mudança de estado, que indica o fim da morte do antigo contexto servidor, vai traduzir-se no desencadeamento de uma ``corrida ao objecto'' por parte de todos os dependentes. O servidor do repositório assegura que apenas o primeiro consegue o objecto, enquanto que os outros recebem o identificador de distribuição do gestor que teve sucesso.

O resto das operações de recuperação dizem respeito ao fecho das antigas ligações remotas e ao estabelecimento de novas, para cada uma das referências para objectos persistentes anteriormente importados.



next up previous contents index
Next: Heterogeneidade Up: Persistência Previous: Localização e Carregamento



David M. M. de Matos
Thu Jun 29 14:58:09 MET DST 1995