interface java -windows

Propaganda
3. Objetos Distribuídos e Invocação Remota
3.1 Comunicação entre Objetos Distribuídos
O modelo de objetos
 Objetos possuem conjuntos de dados e conjuntos de métodos;
 Interagem entre si por invocação de métodos;
 Um objeto acessa outros através de uma referência;
 Interface define métodos, argumentos, retorno e exceções;
o Objeto implementa os métodos da interface;
o Uma interface pode ser implementada por vários objetos;
o Interfaces não possuem construtores;
 Ações:
o É iniciada pela invocação de um método;
o Destino executa e retorna resultado;
o Ação pode alterar o estado do destino;
o Invocação pode gerar outras invocações;
o Ação é uma série de invocações encadeadas;
 Exceções:
o Programa pode gerar condições não esperadas;
o Erro Socket, arquivo, etc;
o Métodos geram exceções;
o Melhora identificação dos erros;
o Pode ser tratada ou passada para outro método;
 Coleta de Lixo: é necessário liberar espaço ocupado pelos objetos;
o Java: detecta objetos não referenciados;
o Se não detecta, usuário deve fazer;
Objetos distribuídos
 Os objetos de um sistema estão separados;
o Diferentes processos ou computadores;
 Objetos clientes invocam métodos de objetos servidores;
 Se comunicam por RMI;
 Objetos servidores podem ser clientes de outros objetos;
o Arquitetura de três camadas;
 Outras arquiteturas: replicação, mobilidade;
 Objetos somente são acessados por métodos;
o Controle de segurança;
o Controle de concorrência;
o Suporte a heterogeneidade;
O modelo de objetos distribuídos
 Objetos remotos aceitam chamadas remotas;
 Para realizar uma invocação é necessária uma referência ao objeto
remoto;
local
C
local E
invocation
invocation
remote
invocation
B
A
local
invocation
remote
invocation
F
D
 Um objeto remoto possui uma interface remota;
o Especifica os métodos remotos;
 Referência a Objetos Remotos:
o São passadas como parâmetro em RMI;
o Identificam o objeto no sistema distribuído;
32 bits
32 bits
Internet address
port number
32 bits
time
32 bits
object number
interface of
remote object
 Interface Remota:
o Apenas métodos da interface remota podem ser acessados
remotamente;
remote object
remote
interface
{
Data
m1
m2
m3
implementation
of methods
m4
m5
m6
 CORBA: interface remota definida em CORBA IDL;
o Independente de linguagem;
 Java RMI: interface remota definida como interface Java;
o Objeto remoto deve implementar interface Remote;
o Um objeto pode implementar várias interfaces;
 Ações distribuídas:
o Irá envolver diferentes computadores;
o Referência remota precisa estar disponível;
 Coleta de lixo distribuída:
o É uma invocação de coleta local com invocações remotas;
 Exceções:
o Processo pode falhar durante uma invocação;
o Usa timeouts;
o CORBA IDL prove definição de exceções;
Aspectos de projeto para RMI
 Protocolo Request-Reply pode garantir funcionamento com:
o Retransmissão de request;
o Filtro de duplicatas;
o Retransmissão de resultados com histórico;
 A combinação destes mecanismos produz as semânticas RMI;
Fault tolerance measures
Retransmit request
message
Invocation
semantics
Re-execute procedure
or retransmit reply
No
Duplicate
filterin
g
Not applicable
Yes
No
Re-execute procedure
At-least-once
Yes
Yes
Retransmit reply
At-most-once
Not applicable
 Maybe:
o Não sabe se foi executado 1 ou 0 vezes;
o Falha pode ocorrer antes ou depois da execução;
Maybe
 At-least-once:
o Se receber resposta, o método foi executado ao menos uma vez;
o Retransmite requisições;
o O método pode ser executado mais de uma vez;
o Para operações idempotentes;
 At-most-once:
o Se receber resposta, o método foi executado exatamente uma vez;
o Se vier erro o método executou 0 ou 1 vez;
o Para operações não idempotentes;
 Semânticas:
o CORBA e Java RMI: at-most-once;
o CORBA: maybe;
o Sun RPC: at-least-once;
 Transparência:
o RPC original não faz distinção de chamada local e remota;
o Marshall e comunicação são escondidos da aplicação;
o Retransmissão transparente;
o Estas características estão no RMI;
o RPC e RMI enfrentam problemas de rede;
o Problemas de rede não são transparentes;
o Latência da rede também não é transparente;
Implementação RMI
 Cenário da invocação remota de métodos:
server
client
object A proxy for B
skeleton
& dispatcher
for B’s class
Request
remote
object B
Reply
Communication
Remote
reference module
module
Communication
module
Remote reference
module
 Módulo de Comunicação:
o Executa protocolo Request-Reply;
o
o
o
o
Usa message type, methodId e objectReference;
Define semântica;
Seleciona o dispatcher do Objeto;
Passa uma referência local a partir da remota;
 Módulo de Referência Remota:
o Cria os objetos remotos na primeira vez que são acessados;
o Contém uma tabela de referências remotas;
o Uma entrada para cada objeto remoto e cada Proxy;
o Converte referência do Request ou Reply em referência local a
um Proxy ou objeto remoto;
o É chamado pelo RMI durante o Marshall;
 RMI Proxy:
o Prove transparência ao cliente;
o Faz Marshall e unMarshall;
o Chama Send e Receive;
o Um para cada objeto remoto;
 RMI Dispatcher:
o Um para cada objeto remoto;
o Recebe a requisição do módulo de comunicação;
o MethodId escolhe o método correto;
o Chama método do Skeleton;
 RMI Skeleton:
o Faz unMarshall e chama o método do objeto remoto;
o Aguarda resultado da execução;
o Faz Marshall para o Reply;
o Send para o Proxy;
 Geração Proxy, Dispatcher e Skeleton:
o São gerados por um compilador de interface;
o Orbix compila CORBA IDL para C;
o Java RMI compila interface Java;
 Programa Servidor:
o Contém dispatcher, Skeleton e a implementação;
o Inicialização: rotina principal para criação dos primeiros objetos;
o Outros objetos são criados a partir dos iniciais;
o Inicialização é registrada no binder;
 Programa Cliente:
o Contém os proxies;
o Interfaces não têm construtores;
o Métodos Factory: método que cria objetos;
o
 Binder:
o Mapeia as referências dos objetos remotos;
o Cliente obtém referência a um objeto pelo binder;
o Objeto remoto registra seus serviços no binder;
o CORBA: NamingService;
o Java: RMIregistry;
 Ativação:
o Objetos remotos não precisam estar sempre na memória;
o Podem ser ativados sob demanda por outro processo;
o Objeto Ativo: pronto para receber invocação;
o Objeto Passivo: pronto para ser ativado;
 Ativador:
o Cria um objeto ativo a partir de um passivo;
o Cria instância e inicializa variáveis com valor armazenado;
o Registra objetos passivos;
o Ativa objetos sob demanda;
o Ativação é transparente;
 Persistência:
o Objeto que pode ser ativado é chamado de Persistente;
o Pode ser armazenado em um formato comum;
o São gerenciados por Objetos de Gerência de Persistência;
 Objeto é persistente quando:
o É referenciado por outro objeto persistente;
o Deriva de classe que implementa persistência;
 Localização de Objetos:
o Referência possui IP e Porta da localização do objeto;
o Desta forma o objeto não pode mudar de local;
o Um objeto pode estar em diferentes locais;
o Neste caso, a referência não pode conter o endereço do objeto;
o Cliente invoca com referência do objeto, porém outro endereço;
o O serviço de localização encontra o objeto;
o Contém uma tabela com a localização dos objetos;
o Usa cache e broadcast para localização;
Coleta de lixo distribuída
 Baseado em contagem de referência;
 Quando o proxy é criado uma referência é adicionada;
 Quando o proxy é fechado o servidor é avisado;
 Trabalha em conjunto com a coleta local;
o Ex: addRef(B) e removeRef(B);
 addRef e removeRef são idempotentes;
 Suporta falhas do cliente:
o Armazena referências por períodos de tempo;
o Cliente é responsável por pedir novo período;
o Tempo começa no addRef;
o Termina quando expirar ou no removeRef;
Download