Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PR
UNIVERS IDADE TECNOLÓGICA FEDERAL DO PARANÁ
1. Conceitos Básicos
a. Invocação remota (RPC/RMI)
b. Semântica de invocação remota
c. Invocação remota de métodos (RMI)
COMUNICAÇÃO INTER-PROCESSOS
JAVA RMI e RPC
2. Implementações de RMI/RPC
a. CORBA
Prof. Cesar Augusto Tacla b. JRMI
http://www.dainf.ct.utfpr.edu.br/~tacla c. Referência a objeto remoto
d. Formato da mensagem de REQUEST-REPLY
e. Protocolo REQUEST-REPLY
Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 11 Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 22
Sumário Sumário
1 1a
Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 33 Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 44
Modelos de invocação de operações remotas baseiam-se nos modelos locais: ◊ RMI (JRMI), RPC, CORBA
• Procedural: Chamada de funções ⇒ chamada remota de funções (RPC) provêm transparência de localização
• OO: Invocação de métodos ⇒ invocação remota de métodos (RMI)
◊ Invocação transparente de procedure/método
odo Processo
Transparente até certo ponto,
ou mét
r função semântica invocação remota ≠ local
Invoca
Processo APLICAÇÃO
APLICAÇÃODISTRIBUÍDA
DISTRIBUÍDA RMI
sockets MIDDLEWARE
MIDDLEWARE RPC
Invocar função ou método
PROTOCOLOS PROTOCOLOS
CORBA
Processo PROTOCOLOS PROTOCOLOS
Processo SIST.
SIST.OPER.
OPER. SIST.
SIST.OPER.
OPER. PLATAFORMA
HARDWARE
HARDWARE HARDWARE
HARDWARE
Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 55 Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 66
Sumário SEMÂNTICA DA INVOCAÇÃO REMOTA
1b ◊ Opções de tratamento
Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 77 Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 88
Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 99 Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 10
10
◊ NO MÁXIMO UMA (0 ou 1)
Ao receber uma resposta, o invocador sabe que o método foi executado
uma só vez, pois:
local C
Invocação
remota local E
F A B
B remote
A local
dados Invocação
D dados
dados
remota
métodos
métodos
(Coulouris et al., 2001)
Método 1
B
aa Método 2
◊ Invocação remota de métodos = RMI ot Método 3
m
re
◊ Objeto remoto: pode ser invocado a distância (ex. B) c ia
ên
f er
Re
Interface remota de B
◊ IDL (CORBA)
c-like
module banco { ◊ Limites de uma interface
enum TipoConta{ (em relação ao processamento local)
CORRENTE,
POUPANCA
};
Não permite acessar diretamente variáveis de outros módulos
2 2a
CORBA CORBA
Interface IDL
<<realizes>> 2b
<<realizes>> <<realizes>>
CLIENTE SERVIDOR
JRMI
STUB SKELETON
IIOP
ORB ORB
request
(un)marshall (un)marshall
A: CLIENTE
◊ Mensagem de invocação requer referência ao objeto
B1: SERV
dados B2: SERV remoto
A tem referência de B1
métodos dados
dados
métodos
Interface métodos Tipo de mensagem Int (0=request 1=reply)
remota
return Id do request int
da classe B
return invoca Referência ao obj. remoto Ver adiante
Id do método Int ou método
Skeleton &
STUB B1 argumentos
Invoca b1.met() Dispatcher para Bytes (marshalled)
a classe de B
Stub monta request
(marshall)
Mapeia ref.
request reply reply request remota<->local
Request/reply Request/reply
JRMP
Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 27
27 Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla 28
28
◊ Cenário
Objeto A necessita de um serviço de B, mas não conhece a
REGISTRO
referência remota, somente o nome de B ta
re mo
O objeto A pergunta a quem? m ref.
bté
2. O
1. registra objetos
3. Comunica-se direto
CLIENTE
com o obj. servidor
SERVIDOR
Locate rmiregistry
Cria stub DEFINIÇÃO DA INTERFACE DO SERVIÇO
locate rmiregistry
rebind(“Alo”, stub )
Lookup(“Alo”) import java.rmi.Remote;
import java.rmi.RemoteException;
stub
◊ Observações Windows
Isto é necessário, pois o rmiregistry precisa saber onde encontrar os set classpath (verifica classpath atual)
arquivos .class set classpath=%classpath%;<home>/build/classes/
RMI REGISTRY é um serviço TCP que aguarda solicitações na porta
bem conhecida 1099
EXERCÍCIO 3 EXERCÍCIO 4
◊ Implementar uma interface gráfica nos clientes do ◊ Implementar o avaliador de respostas de questionários
quadro branco (vide slides anteriores) de maneira que (o mesmo feito em UDP e TCP) com JRMI
todos possam editar um desenho de forma cooperativa.
RESUMO DE RMI
◊ RMI
Cada objeto do SD tem uma referência remota e uma interface
remota que especifica quais operações podem ser invocadas
remotamente.
return SKELETON
◊ Uma implementação de RPC também implementa uma PROXY
STUB PROC 1. STUP PROC 2
ou mais semânticas de invocação Invoca procedure 1 STUB PROC 1
Talvez DISPATCHER
Pelo menos uma
No máximo uma request reply reply request
CONCLUSÃO
◊ CORBA x JRMI
Use Corba se o sistema distribuído tiver programas escritos em
linguagens ou paradigmas diferentes
Use Corba se futuramente o sistema interoperar com outros
sistemas escritos em linguagens ou paradigmas diferentes
Se tudo for e será Java, use JRMI