Uma aplicação acessa objetos compartilhados através de referências. Uma referência é usada da mesma forma que o objeto inicial, isto é, chamando métodos. De modo geral, os métodos que uma referência possui são os mesmos que a interface usada para criá-la possui.
Durante uma chamada de método, a referência encarrega-se de chamar o método correspondente na cópia local. Quando o estado da cópia muda, o SharedSpace precisa replicar a alteração em todos as outras referências ao objeto - nesta e nas outras máquinas.
Como garantir que apenas uma alteração é executada de cada vez? SharedObjects utiliza-se de um mecanismo de replicação que prevê a existência de um objeto original, isto é, uma versão do objeto que é considerada válida o tempo todo e cujo estado deve ser replicado para cada aplicação.
|
![]() |
Por simplicidade, assumiremos por enquanto que um sistema distribuído utiliza apenas um Global Space. Além disso, o sistema roda com uma JVM em cada máquina, e cada JVM utiliza um único SharedSpace para se comunicar ao espaço global. Desta forma, termos como "dono" podem ser aplicados tanto a uma máquina quanto a um SharedSpace.
Quando um objeto é compartilhado pela primeira vez, a aplicação perde o controle daquele objeto e ele passa a pertencer ao Global Space. No tutorial, temos o seguinte trecho de código:
17: //cria uma Offer
18: Offer offer = new OfferImpl("potato", 10.0, null);
19:
20: //compartilha a Offer
21: shob.share("offer1", offer, "auction.core.OfferReference");
|
Neste momento, a instância de SharedSpace shob passa a controlar a versão original do objeto e por isso é chamada dono do objeto. A aplicação, embora rode na mesma máquina, tem os mesmos direitos sobre ele que uma aplicação remota.
Como isso é feito? Cada instância de SharedSpace tem um conjunto de objetos próprios, dos quais ela é dona. Além disso, ela tem um conjunto de cópias de todos os objetos que foram requisitados a ela, a que chamamos cache. Operações chamadas nas referências são executadas sempre nas cópias do cache, mesmo que a SharedSpace seja a dona do objeto em questão.
|
|
||||||
| Visão Aprofundada | |||||||
|---|---|---|---|---|---|---|---|