slide 1 rede nacional de ensino e pesquisa treinamento em gradep - junho 2005 serviço oxmanager...
TRANSCRIPT
Slide 1
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Treinamento no Treinamento no GRADEpGRADEp
Serviço OXManager
OXManagerDemo
Slide 2
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
AutoriaAutoria
• Autor Fábio Reis Cecin
• Versão V1, Junho de 2005
Slide 3
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Sumário da apresentaçãoSumário da apresentação
1 Visão geral – serviço OXManager
2 Exemplo: OXManagerDemo
3 OXManager: outras APIs
Slide 4
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Visão geralVisã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.
Slide 5
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Visão geralVisã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.
Slide 6
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Visão geralVisã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.
Slide 7
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Visão geralVisã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.
Slide 8
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXHandle
OXHandle
Visão geralVisã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.
ProxyOXHandleoid = xxx
“Consulta meta-atributos do OX associado ao handle”
Hospedeiro 1
OXHandle
HomeOXHandleoid = xxxApplicationId = 22Owner = Hospedeiro 2
“Célula home”
MasterOXHandleoid = xxxApplicationId = 22Meta-atributos = local atual = yyy ...
OX
Hospedeiro 2 Hospedeiro 3
Slide 9
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Sumário da apresentaçãoSumário da apresentação
1 Visão geral – serviço OXManager
2 Exemplo: OXManagerDemo
3 OXManager: outras APIs
Slide 10
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManagerDemoOXManagerDemo
• 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.
Slide 11
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManagerDemo – importsOXManagerDemo – 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;
Slide 12
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManagerDemo – ConstrutorOXManagerDemo – 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+"\")");
}
Slide 13
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManagerDemo – main() (1/3)OXManagerDemo – main() (1/3)
// ponto de entrada da aplicaçãopublic 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);
Slide 14
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManagerDemo – main() (2/3)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...
Slide 15
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManager.createHandle()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
Slide 16
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManagerDemo – main() (3/3)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...
Slide 17
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManager.grantOwnership()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()
public interface OXManager { public OXManager.OXHandle grantOwnership(OXManager.OXHandle h);
API
Próximo slide...
Slide 18
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManager.requestOwnership()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
Slide 19
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Sumário da apresentaçãoSumário da apresentação
1 Visão geral – serviço OXManager
2 Exemplo: OXManagerDemo
3 OXManager: outras APIs
Slide 20
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManager.updateAttributes()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.OXHandle releaseHandle(
OXManager.OXHandle h, String[] a, Byte[] o);
API
Slide 21
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
OXManager.releaseHandle()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 void releaseHandle(OXHandle h);
API
Slide 22
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço OXManager
Treinamento no Treinamento no GRADEpGRADEp
Serviço OXManager
OXManagerDemo