1 / 22

Treinamento no GRADEp

Treinamento no GRADEp. Serviço OXManager OXManagerDemo. Autoria. Autor Fábio Reis Cecin Versão V1, Junho de 2005. Sumário da apresentação. 1 Visão geral – serviço OXManager 2 Exemplo: OXManagerDemo 3 OXManager : outras APIs. Visão geral. A abstração OX (Objeto eXehda)

majed
Télécharger la présentation

Treinamento no GRADEp

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Treinamento no GRADEp Serviço OXManager OXManagerDemo

  2. Autoria • Autor • Fábio Reis Cecin • Versão • V1, Junho de 2005

  3. Sumário da apresentação 1 Visão geral – serviço OXManager 2 Exemplo: OXManagerDemo 3 OXManager: outras APIs

  4. Visão geral • A abstração OX (Objeto eXehda) • Instância de objeto criada por intermédio do serviço Executor; • À qual pode ser associada meta-informação em tempo de execução. • Meta-informação no OX é uma lista de atributos: • Lista: pares no formato <Nome, Valor>; • Nome: cadeia de caracteres ASCII que descreve o atributo; • Valor: qualquer valor, inclusive binário.

  5. Visão geral • Serviço OXManager: • Armazena a meta-informação associada aos OXes; • Permite que os atributos de um OX sejam consultados e alterados a partir de qualquer nodo da grade. • OXHandle: • O suporte à meta-informação de OXes é implementado pelos OXHandles; • O OXManager possui métodos para criação, manipulação e remoção de OXHandles; • Quando criado, um OXHandle é associado a algum OX; • Através do OXHandle é possível manipular os meta-atributos do OX.

  6. Visão geral • Tipos de OXHandle (transparente à aplicação): • MasterOXHandle (1/3) • Armazena a cópia-mestre dos meta-atributos de um OX (lista completa); • Tipicamente criado ao mesmo tempo que o seu OX associado, no mesmo nodo; • Em geral, acompanha o OX quando este migra para outro nodo, mas pode ser separado do OX (caso o hospedeiro atual do OX tenha pouca memória, etc); • O MasterOXHandle guarda no atributo location o local atual do OX na grade.

  7. Visão geral • Tipos de OXHandle (transparente à aplicação): • HomeOXHandle (2/3) • Permanece fixo na “célula-home” do OX (célula onde o OX foi primeiramente instanciado); • Observação: a informação da “célula-home” de um OX está contida no seu ObjectID; • O HomeOXHandle pode ser consultado para se descobrir onde está o MasterOXHandle do OX, atualmente; • Isto é especificado no atributo owner (“dono”) do HomeOXHandle • Mantém um “cache” dos meta-atributos não-mutáveis do OX, por exemplo: • ObjectID: ID do OX; • ApplicationId: ID da aplicação à qual o OX está associado.

  8. Visão geral • Tipos de OXHandle (transparente à aplicação): • ProxyOXHandle (3/3) • Objeto “procurador” que pode ser utilizado para acessar o MasterOXHandle ou o HomeOXHandle; • Armazena, no mínimo, o ObjectID do OX. “Consulta meta-atributos do OX associado ao handle” OXHandle OXHandle MasterOXHandle oid = xxx ApplicationId = 22 Meta-atributos = local atual = yyy ... OXHandle OX HomeOXHandle oid = xxx ApplicationId = 22 Owner = Hospedeiro 2 ProxyOXHandle oid = xxx Hospedeiro 1 “Célula home” Hospedeiro 2 Hospedeiro 3

  9. Sumário da apresentação 1 Visão geral – serviço OXManager 2 Exemplo: OXManagerDemo 3 OXManager: outras APIs

  10. OXManagerDemo • Exemplo: Aplicação OXManagerDemo • Demonstra o uso de meta-atributos de um OX • Local: /isam/isam-apps/oxmanagerdemo/ • Arquivos: • OXManagerDemo.java • Fonte da aplicação. • oxmanagerdemo.isam • Descritor de disparo da aplicação em formato XML do ISAM.

  11. OXManagerDemo – imports OXManagerDemo.java: (trechos selecionados) // Importa ObjectId (identificador de OX), ObjectSeed (para // criação do OX), OXManager e OXHandle import org.isam.exehda.Exehda; import org.isam.exehda.ObjectId; import org.isam.exehda.services.ObjectSeed; import org.isam.exehda.services.OXManager; import org.isam.exehda.services.OXManager.OXHandle;

  12. OXManagerDemo – Construtor public class OXManagerDemo { // construtor apenas imprime criação do objeto public OXManagerDemo() { System.out.println("<init>()"); } // idem, porém com parâmetro opcional public OXManagerDemo( String msg ) { System.out.println("<init>(msg=\""+msg+"\")"); }

  13. OXManagerDemo – main() (1/3) // ponto de entrada da aplicação public static void main( String[] args ) { // obtém serviço ObjectSeed ObjectSeed objectSeed = (ObjectSeed) Exehda.getService(ObjectSeed.SERVICE_NAME); // cria um OX (e obtém oxID do mesmo) a partir // da instanciação da classe OXManagerDemo ObjectId oxID = objectSeed.newInstance(OXManagerDemo.class, null, null);

  14. OXManagerDemo – main() (2/3) // obtém referência para o serviço OXManager OXManager oxman= (OXManager) Exehda.getService( OXManager.SERVICE_NAME ); // cria um OXHandle para o ID do OX que foi criado acima OXHandle oxh= oxman.createHandle( oxID ); // imprime OX e meta-atributos do OX (oid, owner, location) System.out.println(" key="+oxh.getKey()); System.out.println("After createHandle()"); System.out.println(oxh); System.out.println(" id="+oxh.getId() ); // ID do OX System.out.println(" key="+oxh.getKey()); System.out.println(" owner="+oxh.getOwner() ); // “dono” do MasterOXHandle System.out.println(" key="+oxh.getKey()); System.out.println("location="+oxh.getLocation() ); // local atual do OX System.out.println(" key="+oxh.getKey()); Próximo slide...

  15. OXManager.createHandle() • O método createHandle() da interface OXManager cria um OXHandle apropriado para acessar meta-atributos de um OX: • Recebe como argumento o ObjectId do OX; • Retorna um OXHandle para o OX; • Tipos de OXHandle criados: • MasterOXHandle é criado se o nodo local é o “home” do OX e ainda não existe um MasterOXHandle para o OX; • HomeOXHandle é criado se o nodo local é o nodo “home” da célula e ainda não existe um HomeOXHandle para o OX; • Caso contrário, é criado um ProxyOXHandle. public interface OXManager { public OXManager.OXHandle createHandle(ObjectId oid); API

  16. OXManagerDemo – main() (3/3) // ... voltando ao método “main()” da demo ... // libera a posse do OXManager local sobre o OXMasterHandle do OX oxman.grantOwnership( oxh ); // imprime novamente o OX e os valores atuais dos meta-atributos do // OX (ID, owner, location) ... System.out.println("After grantOwnership()"); System.out.println(oxh); System.out.println(" id="+oxh.getId() ); System.out.println(" owner="+oxh.getOwner() ); System.out.println("location="+oxh.getLocation() ); } // fim do main() e do demo Próximo slide...

  17. OXManager.grantOwnership() • O método grantOwnership() da interface OXManager notifica o OXManager local de que o MasterOXHandle poderá ser movido: • Recebe como argumento um OXHandle (válido) para o OX em questão; • Pode ser um proxy, mestre, home, ... • Esta chamada é propagada até o HomeOXHandle do OX; • No HomeOXHandle fica indicado que o MasterOXHandle está livre para ser migrado • A migração do MasterOXHandle é solicitada pelo método requestOwnership() Próximo slide... public interface OXManager { public OXManager.OXHandle grantOwnership(OXManager.OXHandle h); API

  18. OXManager.requestOwnership() • O método requestOwnership() da interface OXManager solicita que um MasterOXHandle de um OX migre para o nodo local: • Recebe como argumento um OXHandle (válido) para o OX em questão; • Esta chamada é propagada até o HomeOXHandle do OX; • No HomeOXHandle é verificado se o MasterOXHandle foi liberado por uma chamada prévia a grantOwnership(); • Em caso de permissão OK, o GRADEp irá migrar o MasterOXHandle para o nodo local. public interface OXManager { public OXManager.OXHandle requestOwnership(OXManager.OXHandle h); API

  19. Sumário da apresentação 1 Visão geral – serviço OXManager 2 Exemplo: OXManagerDemo 3 OXManager: outras APIs

  20. OXManager.updateAttributes() • O método updateAttributes() permite consultar e atualizar vários atributos de um OX (simultaneamente): • Parâmetros: • OXHandle: handle para o OX; • String[]: lista dos atributos; • Byte[]: operações para serem efetuadas sobre os respectivos atributos; • OXAttributeOps.READ: ler o atributo • OXAttributeOps.WRITE: escrever sobre o atributo • Retorna um OXHandle potencialmente atualizado com os novos atributos. public interface OXManager { public OXManager.OXHandlereleaseHandle( OXManager.OXHandle h, String[] a, Byte[] o); API

  21. OXManager.releaseHandle() • O método releaseHandle() notifica o OXManager de que um OXHandle não é mais necessário: • Recebe o OXHandle em questão como parâmetro; • A semântica de se liberar um MasterOXHandle é a de que o OX deixa de existir (isto é, os meta-atributos); • É específico de uma implementação do GRADEp se a aplicação poderá liberar diretamente um MasterOXHandle ou se algum mecanismo automático é utilizado (exemplo: contagem de referências inter-nodo); • A liberação de um ProxyOXHandle deve resultar em uma propagação até o seu HomeOXHandle, de forma que o MasterOXHandle possa ser melhor posicionado. public interface OXManager { public voidreleaseHandle(OXHandle h); API

  22. Treinamento no GRADEp Serviço OXManager OXManagerDemo

More Related