SlideShare une entreprise Scribd logo
1  sur  25
SISTEMAS
DISTRIBUÍDOS
OBJETOS DISTRIBUÍDOS E
INVOCAÇÃO REMOTA
ARTHUR EMANUEL DE OLIVEIRA
CAROSIA
1
INTRODUÇÃO
RPC:
• chamada de procedimento remoto;
• programas clientes chamarem procedimentos de programas
servidores.
RMI:
• invocação de método remoto;
• objetos de diferentes processos se comunicam;
• objeto que está em um processo pode invocar métodos de
um objeto que está em outro processo.
2
INTRODUÇÃO
Middleware
Software que fornece um modelo de programação acima dos
blocos de construção básicos de processos e passagem de
mensagens.
Fornece: invocações a métodos remotos, transparência da
localização e independência dos detalhes dos protocolos de
comunicação, sistemas operacionais e hardware.
3
INTERFACES EM
SISTEMAS DISTRIBUÍDOS
4
INTERFACES EM
SISTEMAS DISTRIBUÍDOS
Para controlar as interações entre módulos em sistemas
distribuídos, são definidas interfaces para cada módulo.
5
INTERFACES EM
SISTEMAS DISTRIBUÍDOS
Interfaces de serviço:
• Cada servidor fornece um conjunto de procedimentos que
estão disponíveis para uso dos clientes.
Interfaces remotas:
• Especifica os métodos de um objeto que estão
disponíveis para invocação por parte dos objetos de outros
processos.
• Podem passar objetos com argumentos e resultados dos
métodos.
6
COMUNICAÇÃO ENTRE
PROCESSOS
DISTRIBUÍDOS
7
COMUNICAÇÃO ENTRE
PROCESSOS
DISTRIBUÍDOS
8
O MODELO DE
OBJETO DISTRIBUÍDO
Cada processo contém um conjunto de objetos, dos quais alguns
podem receber invocações a métodos locais e remotos e outros
somente locais.
Objetos podem invocar métodos de um objeto remoto se tiverem
acesso á sua referência de objeto remoto.
Todo objeto remoto tem uma interface remota especificando quais
métodos podem ser invocados de forma remota.
9
INTERFACES
REMOTAS
A classe de um objeto remoto implementa os métodos de sua
interface remota.
Objetos em outros processos somente invocam métodos
pertencentes à interface remota.
10
IMPLEMENTAÇÃO DE
RMI
11
IMPLEMENTAÇÃO DE
RMI
Software RMI: camada de software – middleware – entre os
objetos do aplicativo e os módulos de comunicação e de
referência remota.
12
IMPLEMENTAÇÃO DE
RMI
• Proxy: torna a invocação do método remoto transparente ao
cliente, comportando-se como um objeto local para o
invocador; mas, em vez de executar uma invocação local, ele
a encaminha em uma mensagem para um objeto remoto.
Existe um proxy para cada objeto remoto que um processo
faz referência.
13
IMPLEMENTAÇÃO DE
RMI
• Despachante: um servidor tem um despachante e um
esqueleto para cada classe que representa o objeto remoto.
O despachante recebe uma mensagem de requisição do
módulo de comunicação e seleciona o método apropriado no
esqueleto, despachando a mensagem de requisição.
14
IMPLEMENTAÇÃO DE
RMI
• Esqueleto: desempacota os argumentos na mensagem de
requisição e invoca o método correspondente no
servente. Depois, espera que a requisição termine e
empacota o resultado em uma mensagem de resposta que é
enviada ao método do proxy que fez a requisição.
15
JAVA RMI
Extensão do modelo de objeto Java para dar suporte para
objetos distribuídos em Java.
Permite que objetos invoquem métodos em objetos remotos
usando a mesma sintaxe de invocações locais.
Mais simples construir aplicações RMI do que aplicações
com RPC ou CORBA.
16
JAVA RMI
Necessita de tratar a exceção Remote Exception e
implementar a interface Remote.
Exige suporte a TCP/IP e um serviço de nomes de objetos
(rmiregistry), que acompanha o JAVA JDK/SDK.
• O serviço de nomes RMI Registry oferece informações sobre
a localização dos objetos remotos.
• Traduz uma tabela de nomes textuais na forma
//nomeComputador:porta/nomeObjeto em objetos remotos
contidos no computador.
17
JAVA RMI
Geração de classes proxies, despachantes e esqueletos: são geradas
automaticamente por um compilador de interface.
O conjunto de métodos oferecidos por um objeto remoto é definido como
uma interface Java implementada do objeto remoto.
O compilador para Java RMI gera as classes de proxy, despachante e
esqueleto a partir da classe do objeto remoto.
18
INTERFACES REMOTAS
NO JAVA RMI
As interfaces remotas são definidas pela ampliação de uma
interface chamada Remote, do pacote java.rmi.
Os métodos disparam a exceção RemoteException, além das
possíveis exceções do aplicativo.
19
INTERFACE REMOTA -
CALCULADORA
20
IMPLEMENTAÇÃO DA INTERFACE –
CALCULADORAIMPL
21
SERVIDOR
22
CLIENTE
23
RODANDO EXEMPLO
Javac *.java
Rmic CalculatorImpl (cria o Stub)
Rmiregistry (levanta o servidor de nomes RMI)
Java CalculatorServer
Java CalculatorClient
24
SISTEMAS
DISTRIBUÍDOS
OBJETOS DISTRIBUÍDOS E INVOCAÇÃO
REMOTA
ARTHUR EMANUEL DE OLIVEIRA
CAROSIA
25

Contenu connexe

Tendances

Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketAdriano Teixeira de Souza
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introduçãoelliando dias
 
ACII - SL07 - Introducao aos sistemas distribuidos
ACII - SL07 - Introducao aos sistemas distribuidosACII - SL07 - Introducao aos sistemas distribuidos
ACII - SL07 - Introducao aos sistemas distribuidosUFPB
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
Ferramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeFerramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeHelder Lopes
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJavaParadigma Digital
 
Ciclo de vida del desarrollo de software
Ciclo de vida del desarrollo de softwareCiclo de vida del desarrollo de software
Ciclo de vida del desarrollo de softwareDiana Ortiz
 
12.9.2 Lab - Configure IPv6 Addresses on Network Devices - ILM.docx
12.9.2 Lab - Configure IPv6 Addresses on Network Devices - ILM.docx12.9.2 Lab - Configure IPv6 Addresses on Network Devices - ILM.docx
12.9.2 Lab - Configure IPv6 Addresses on Network Devices - ILM.docxfernando241073
 
Tema N° 5 Ingeniería de Requisitos y los Requisitos del Software
Tema N° 5 Ingeniería de Requisitos y los Requisitos del SoftwareTema N° 5 Ingeniería de Requisitos y los Requisitos del Software
Tema N° 5 Ingeniería de Requisitos y los Requisitos del SoftwareSaraEAlcntaraR
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosMessias Batista
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Plano Diretor de Tecnologia da Informação
Plano Diretor de Tecnologia da InformaçãoPlano Diretor de Tecnologia da Informação
Plano Diretor de Tecnologia da InformaçãoHelio Rebouças
 
Capitulo 8 la tabla de enrutamiento
Capitulo 8 la tabla de enrutamientoCapitulo 8 la tabla de enrutamiento
Capitulo 8 la tabla de enrutamientoTeleredUSM
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 

Tendances (20)

Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introdução
 
ACII - SL07 - Introducao aos sistemas distribuidos
ACII - SL07 - Introducao aos sistemas distribuidosACII - SL07 - Introducao aos sistemas distribuidos
ACII - SL07 - Introducao aos sistemas distribuidos
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Ferramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeFerramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de Rede
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
 
Ciclo de vida del desarrollo de software
Ciclo de vida del desarrollo de softwareCiclo de vida del desarrollo de software
Ciclo de vida del desarrollo de software
 
DSDM
DSDMDSDM
DSDM
 
12.9.2 Lab - Configure IPv6 Addresses on Network Devices - ILM.docx
12.9.2 Lab - Configure IPv6 Addresses on Network Devices - ILM.docx12.9.2 Lab - Configure IPv6 Addresses on Network Devices - ILM.docx
12.9.2 Lab - Configure IPv6 Addresses on Network Devices - ILM.docx
 
Tema N° 5 Ingeniería de Requisitos y los Requisitos del Software
Tema N° 5 Ingeniería de Requisitos y los Requisitos del SoftwareTema N° 5 Ingeniería de Requisitos y los Requisitos del Software
Tema N° 5 Ingeniería de Requisitos y los Requisitos del Software
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - Processos
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Plano Diretor de Tecnologia da Informação
Plano Diretor de Tecnologia da InformaçãoPlano Diretor de Tecnologia da Informação
Plano Diretor de Tecnologia da Informação
 
Capitulo 8 la tabla de enrutamiento
Capitulo 8 la tabla de enrutamientoCapitulo 8 la tabla de enrutamiento
Capitulo 8 la tabla de enrutamiento
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Comandos CMD
Comandos CMDComandos CMD
Comandos CMD
 

Similaire à Sistemas Distribuídos - Aula 06

Similaire à Sistemas Distribuídos - Aula 06 (20)

RMI (Remote Method Invocation)
RMI (Remote Method Invocation) RMI (Remote Method Invocation)
RMI (Remote Method Invocation)
 
Funmentos de Objetos Remotos
Funmentos de Objetos RemotosFunmentos de Objetos Remotos
Funmentos de Objetos Remotos
 
Fundamentos de Objetos Remotos
Fundamentos de Objetos RemotosFundamentos de Objetos Remotos
Fundamentos de Objetos Remotos
 
Sistemas distribuídos com RMI
Sistemas distribuídos com RMISistemas distribuídos com RMI
Sistemas distribuídos com RMI
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5
 
Java RMI
Java RMIJava RMI
Java RMI
 
Computacao distribuida com rmi
Computacao distribuida com rmiComputacao distribuida com rmi
Computacao distribuida com rmi
 
Rmi (remote method invocation)
Rmi (remote method invocation)Rmi (remote method invocation)
Rmi (remote method invocation)
 
6-RMI.pdf
6-RMI.pdf6-RMI.pdf
6-RMI.pdf
 
Sistemas Operacionais em redes
Sistemas Operacionais em redesSistemas Operacionais em redes
Sistemas Operacionais em redes
 
Sistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBASistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBA
 
Sistemas Distribuidos, Middleware e RPC
Sistemas Distribuidos, Middleware e RPCSistemas Distribuidos, Middleware e RPC
Sistemas Distribuidos, Middleware e RPC
 
Sistemas Distribuidos, Middleware e RPC
Sistemas Distribuidos, Middleware e RPCSistemas Distribuidos, Middleware e RPC
Sistemas Distribuidos, Middleware e RPC
 
J530 4 rmi
J530 4 rmiJ530 4 rmi
J530 4 rmi
 
Trabalho
TrabalhoTrabalho
Trabalho
 
Middleware Reflexivo
Middleware ReflexivoMiddleware Reflexivo
Middleware Reflexivo
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
Modelo osi mpcomp
Modelo osi mpcompModelo osi mpcomp
Modelo osi mpcomp
 
Aula06 - postfix
Aula06 -  postfixAula06 -  postfix
Aula06 - postfix
 
Aula06 - postfix
Aula06 -  postfixAula06 -  postfix
Aula06 - postfix
 

Plus de Arthur Emanuel

Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningApresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningArthur Emanuel
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosArthur Emanuel
 
Android - Integração com Facebook
Android - Integração com FacebookAndroid - Integração com Facebook
Android - Integração com FacebookArthur Emanuel
 
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaDesenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaArthur Emanuel
 
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuAula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuArthur Emanuel
 
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomAula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomArthur Emanuel
 
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoAula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoArthur Emanuel
 
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosAula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosArthur Emanuel
 
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoAula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoArthur Emanuel
 
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoAula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoArthur Emanuel
 
Desenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioDesenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioArthur Emanuel
 
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
HTML -  Listas, Estilos, Tabelas, Div, Span, FormulárioHTML -  Listas, Estilos, Tabelas, Div, Span, Formulário
HTML - Listas, Estilos, Tabelas, Div, Span, FormulárioArthur Emanuel
 
Android - Acelerometro e GPS
Android - Acelerometro e GPSAndroid - Acelerometro e GPS
Android - Acelerometro e GPSArthur Emanuel
 
Android - Consumindo Webservices
Android - Consumindo WebservicesAndroid - Consumindo Webservices
Android - Consumindo WebservicesArthur Emanuel
 

Plus de Arthur Emanuel (20)

Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningApresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - Exercícios
 
Android - Integração com Facebook
Android - Integração com FacebookAndroid - Integração com Facebook
Android - Integração com Facebook
 
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaDesenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
 
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuAula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
 
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomAula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
 
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoAula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
 
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosAula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
 
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoAula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
 
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoAula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
 
Desenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioDesenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - Exercício
 
CSS 3
CSS 3CSS 3
CSS 3
 
CSS
CSSCSS
CSS
 
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
HTML -  Listas, Estilos, Tabelas, Div, Span, FormulárioHTML -  Listas, Estilos, Tabelas, Div, Span, Formulário
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
 
HTML - Introducao
HTML - Introducao HTML - Introducao
HTML - Introducao
 
Android - Google Maps
Android - Google MapsAndroid - Google Maps
Android - Google Maps
 
Android - Bluetooth
Android - BluetoothAndroid - Bluetooth
Android - Bluetooth
 
Android - Acelerometro e GPS
Android - Acelerometro e GPSAndroid - Acelerometro e GPS
Android - Acelerometro e GPS
 
Android - Consumindo Webservices
Android - Consumindo WebservicesAndroid - Consumindo Webservices
Android - Consumindo Webservices
 

Sistemas Distribuídos - Aula 06

  • 1. SISTEMAS DISTRIBUÍDOS OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA ARTHUR EMANUEL DE OLIVEIRA CAROSIA 1
  • 2. INTRODUÇÃO RPC: • chamada de procedimento remoto; • programas clientes chamarem procedimentos de programas servidores. RMI: • invocação de método remoto; • objetos de diferentes processos se comunicam; • objeto que está em um processo pode invocar métodos de um objeto que está em outro processo. 2
  • 3. INTRODUÇÃO Middleware Software que fornece um modelo de programação acima dos blocos de construção básicos de processos e passagem de mensagens. Fornece: invocações a métodos remotos, transparência da localização e independência dos detalhes dos protocolos de comunicação, sistemas operacionais e hardware. 3
  • 5. INTERFACES EM SISTEMAS DISTRIBUÍDOS Para controlar as interações entre módulos em sistemas distribuídos, são definidas interfaces para cada módulo. 5
  • 6. INTERFACES EM SISTEMAS DISTRIBUÍDOS Interfaces de serviço: • Cada servidor fornece um conjunto de procedimentos que estão disponíveis para uso dos clientes. Interfaces remotas: • Especifica os métodos de um objeto que estão disponíveis para invocação por parte dos objetos de outros processos. • Podem passar objetos com argumentos e resultados dos métodos. 6
  • 9. O MODELO DE OBJETO DISTRIBUÍDO Cada processo contém um conjunto de objetos, dos quais alguns podem receber invocações a métodos locais e remotos e outros somente locais. Objetos podem invocar métodos de um objeto remoto se tiverem acesso á sua referência de objeto remoto. Todo objeto remoto tem uma interface remota especificando quais métodos podem ser invocados de forma remota. 9
  • 10. INTERFACES REMOTAS A classe de um objeto remoto implementa os métodos de sua interface remota. Objetos em outros processos somente invocam métodos pertencentes à interface remota. 10
  • 12. IMPLEMENTAÇÃO DE RMI Software RMI: camada de software – middleware – entre os objetos do aplicativo e os módulos de comunicação e de referência remota. 12
  • 13. IMPLEMENTAÇÃO DE RMI • Proxy: torna a invocação do método remoto transparente ao cliente, comportando-se como um objeto local para o invocador; mas, em vez de executar uma invocação local, ele a encaminha em uma mensagem para um objeto remoto. Existe um proxy para cada objeto remoto que um processo faz referência. 13
  • 14. IMPLEMENTAÇÃO DE RMI • Despachante: um servidor tem um despachante e um esqueleto para cada classe que representa o objeto remoto. O despachante recebe uma mensagem de requisição do módulo de comunicação e seleciona o método apropriado no esqueleto, despachando a mensagem de requisição. 14
  • 15. IMPLEMENTAÇÃO DE RMI • Esqueleto: desempacota os argumentos na mensagem de requisição e invoca o método correspondente no servente. Depois, espera que a requisição termine e empacota o resultado em uma mensagem de resposta que é enviada ao método do proxy que fez a requisição. 15
  • 16. JAVA RMI Extensão do modelo de objeto Java para dar suporte para objetos distribuídos em Java. Permite que objetos invoquem métodos em objetos remotos usando a mesma sintaxe de invocações locais. Mais simples construir aplicações RMI do que aplicações com RPC ou CORBA. 16
  • 17. JAVA RMI Necessita de tratar a exceção Remote Exception e implementar a interface Remote. Exige suporte a TCP/IP e um serviço de nomes de objetos (rmiregistry), que acompanha o JAVA JDK/SDK. • O serviço de nomes RMI Registry oferece informações sobre a localização dos objetos remotos. • Traduz uma tabela de nomes textuais na forma //nomeComputador:porta/nomeObjeto em objetos remotos contidos no computador. 17
  • 18. JAVA RMI Geração de classes proxies, despachantes e esqueletos: são geradas automaticamente por um compilador de interface. O conjunto de métodos oferecidos por um objeto remoto é definido como uma interface Java implementada do objeto remoto. O compilador para Java RMI gera as classes de proxy, despachante e esqueleto a partir da classe do objeto remoto. 18
  • 19. INTERFACES REMOTAS NO JAVA RMI As interfaces remotas são definidas pela ampliação de uma interface chamada Remote, do pacote java.rmi. Os métodos disparam a exceção RemoteException, além das possíveis exceções do aplicativo. 19
  • 21. IMPLEMENTAÇÃO DA INTERFACE – CALCULADORAIMPL 21
  • 24. RODANDO EXEMPLO Javac *.java Rmic CalculatorImpl (cria o Stub) Rmiregistry (levanta o servidor de nomes RMI) Java CalculatorServer Java CalculatorClient 24
  • 25. SISTEMAS DISTRIBUÍDOS OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA ARTHUR EMANUEL DE OLIVEIRA CAROSIA 25