COMEÇOU A SER IMPLEMENTADO POR INSTRUÇÕES DE BAIXO NÍVEL
SOCKETS
PASSOU-SE À UTILIZAÇÃO DO MODELO RPC
O SUCESSO DAS LINGUAGENS OO
OBJETOS DISTRIBUÍDOS
RMI
IMPLEMENTAÇÃO
MÓDULO DE COMUNICAÇÃO
IMPLEMENTA O PROTOCOLO PEDIDO-RESPOSTA
MÓDULO DE REFERÊNCIA REMOTA
MANTEM UMA TABELA DE REFERENCIAS REMOTAS, QUE CONTÉM CORRESPONDÊNCIAS LOCAIS E REMOTAS
TABELA DO SERVIDOR = ENTRADA PARA O OBJETO B
TABELA DO CLIENTE = ENTRADA PARA O PROXY DE B
SOFTWARE RMI
CAMADA DE SOFTWARE ENTRE APLICAÇÃO E MÓDULOS DE COMUNICAÇÃO E REFERÊNCIA
PROXY
TORNA TRANSPARENTE A INVOCAÇÃO DO MÉTODO
RECEBE A INVOCAÇÃO, SERIALIZA OS ARGUMENTOS E ENVIA A INVOCAÇÃO ATRAVÉS DO MÓDULO DE COMUNICAÇÃO
DISPATCHER
RECEBE O PEDIDO DO MÓDULO DE COMUNICAÇÃO E ENCAMINHA PARA SKELETON
SKELETON
DESSERIALIZA OS ARGUMENTOS
INVOCA MÉTODO NO OBJETO LOCAL
RECEBE O RESULTADO
ENCAMINHA-O NO SENTIDO REVERSO
OBJETOS LOCAIS VS OBJETOS REMOTOS
OBJETOS SÃO ACESSADOS PELA REFERÊNCIA
PODEM SER ATRIBUÍDAS A VARIÁVEIS, PASSADAS COMO ARGUMENTOS E DEVOLVIDAS COMO RESULTADOS DE MÉTODOS
REFERÊNCIA REMOTA
IDÊNTICA A REFERÊNCIA LOCAL NOS ASPECTOS:
O objeto que recebe a invocação do método é especificado como o objeto local
Referências remotas podem ser passadas como argumentos e ser retornadas como invocação de métodos remotos
OBJETOS REMOTOS
PASSADOS POR REFERÊNCIA
FUNCIONA COMO UM "PROXY"
Nota:
Na passagem de um objeto remoto, é passado um proxy que é guardado na máquina receptora, e para o qual serão passadas as futuras invocações ao objeto
OBJETOS LOCAIS
IMPLEMENTAM A INTERFACE: java.io.Serializable
SÃO PASSADOS POR CÓPIA
Nota:
Do lado do receptor, é criado um novo objeto que pode ser acessado localmente
INTERFACE REMOTA
CADA OBJETO REMOTO TEM UMA INTERFACE REMOTA
ESPECIFICA QUAIS DE SEUS MÉTODOS PODEM SER INVOCADOS REMOTAMENTE
MÉTODOS
LOCAIS
EXECUÇÃO DO CÓDIGO CORRESPONDENTE DO OBJETO
FINAL DO FLUXO DE EXECUÇÃO, RETORNA AO OBJETO INVOCADOR
O ESTADO DO OBJETO É ALTERADO
OUTRAS INVOCAÇÕES A OUTROS OBJETOS
REMOTOS
PODE RESULTAR NA INVOCAÇÃO DE OUTROS OBJETOS
EVENTUALMENTE PODEM ESTAR EM MAQUINAS DIFERENTES
QUANDO UMA INVOCAÇÃO ULTRAPASSA A BARREIRA DE UM PROCESSO OU COMPUTADOR, TEM LUGAR UMA INVOCAÇÃO DE MÉTODO REMOTO (RMI)
PARA INVOCAR MÉTODO REMOTO, DEVE POSSUIR REFERÊNCIA AO OBJETO REMOTO
EXCEÇÕES
LOCAIS
QUANDO OCORRE UMA SITUAÇÃO DE ERRO
É POSSÍVEL CAPTURAR UMA EXCEÇÃO E TRANSFERIR A EXECUÇÃO PARA O BLOCO DE CÓDIGO QUE IRÁ TRATAR A CONDIÇÃO DE ERRO
REMOTAS
PODE GERAR EXCEÇÕES DEVIDO A:
ERRO NA TRANSMISSÃO DOS ARGUMENTOS
O PROCESSO QUE CONTÉM O OBJETO REMOTO "FALHOU"
CRASH
NÃO RESPONDE
O RESULTADO DA INVOCAÇÃO SE PERDEU
INVOCAÇÃO REMOTA DE OBJETOS
MIDDLEWARES
CORBA
DCOM
RPC
RMI
SOAP
MEDIDA DE TOLERÂNCIA A FALHAS
TALVEZ
Nota:
O invocador não sabe se o método foi ou não executado
PELO MENOS UMA VEZ
Nota:
O invocador ou recebe uma resposta e, nesse caso, o método foi executado pelo menos uma vez ou...
◦ Recebe uma Exceção informando que não foi recebido resultado e, neste caso, o servidor pode ter falhado.
◦ Em qualquer dos casos, execuções repetidas podem
ter originado valores errados
NO MAXIMO UMA VEZ
Nota:
O invocador recebe uma resposta e, nesse caso, sabe que o método foi executado uma única vez, ou recebe uma Exceção, o que significa que o método ou foi executado uma vez ou não foi executado