Escolar Documentos
Profissional Documentos
Cultura Documentos
PR
1. Conceitos Bsicos
COMUNICAO INTER-PROCESSOS
JAVA RMI e RPC
2. Implementaes de RMI/RPC
a.
b.
c.
d.
e.
11
CORBA
JRMI
Referncia a objeto remoto
Formato da mensagem de REQUEST-REPLY
Protocolo REQUEST-REPLY
22
Sumrio
Sumrio
1a
CONCEITOS BSICOS
33
44
MIDDLEWARE
RMI (JRMI), RPC, CORBA
funo
odo
ou mt
Processo
Processo
APLICAO
APLICAODISTRIBUDA
DISTRIBUDA
sockets
MIDDLEWARE
MIDDLEWARE
Processo
PROTOCOLOS
PROTOCOLOS
SIST.
SIST.OPER.
OPER.
PROTOCOLOS
PROTOCOLOS
SIST.
SIST.OPER.
OPER.
HARDWARE
HARDWARE
HARDWARE
HARDWARE
RMI
RPC
CORBA
PLATAFORMA
55
66
Sumrio
1b
Opes de tratamento
Re-executar ou
retransmitir
resp.
Exceo
OK
UM TIRO
NO
--x--
--x--
0 ou 1
PELO -1
SIM
NO
RE-EXECUTAR
0 ou +
1 ou +
MX 1
SIM
SIM
RETRANSMITIR
0 ou 1
pular
77
88
UM TIRO
Ao receber uma resposta, o invocador tem certeza que o mtodo
remoto foi executado somente uma vez
Ao receber exceo (resposta no chegou, logo timeout), o
invocador no saber se o mtodo foi executado ou no, pois:
Falha do servidor
Request chega, mas servidor cai antes ou durante a execuo do
mtodo (0)
Request chega, servidor executa o mtodo e falha em seguida (1)
Falha do servidor
Request chega, mas servidor cai antes ou durante a execuo do mtodo,
retransmisses do request, ..., exceo! (0)
Request chega, servidor executa o mtodo e falha em seguida, retransmisses do
request, ..., exceo! (1)
99
10
10
Sumrio
NO MXIMO UMA (0 ou 1)
Ao receber uma resposta, o invocador sabe que o mtodo foi executado
uma s vez, pois:
1c
11
11
12
12
INTERFACE REMOTA
Objeto
remoto
objeto
local
Invocao
remota
B
C
local E
remote
local
dados
Invocao
remota
mtodos
mtodos
c ia
n
er
m
re
dados
dados
aa
ot
Mtodo 1
Mtodo 2
Mtodo 3
Interface remota de B
14
14
IDL (CORBA)
c-like
module banco {
enum TipoConta{
CORRENTE,
POUPANCA
};
struct Conta {
string id;
string senha;
TipoConta tc;
};
Mtodo 1
Mtodo 2
Mtodo 3
interface Operacao {
long getSaldo(in Conta conta);
void retirar(in Conta conta, in long valor);
void depositar(in Conta conta, in long valor);
void transferir(in Conta orig, in Conta dest, in long valor);
};
Interface remota de B
};
15
15
16
16
TRANSPARNCIA
TRANSPARNCIA DA API
Semntica:
Da invocao local: exatamente uma vez
Da invocao remota: vrias possibilidades
17
17
18
18
Sumrio
Sumrio
2a
IMPLEMENTAES DE RMI/RPC
CORBA
19
19
CORBA
CORBA
20
20
CORBA
Invocaes remotas
Heterogeneidade
Programas escritos em linguagens e/ou paradigmas diferentes
orientado a objetos ou procedurais
C, Java, C++
21
21
FUNCIONAMENTO CORBA
Interface IDL
<<realizes>>
Sumrio
2b
<<realizes>>
<<realizes>>
CLIENTE
22
22
SERVIDOR
JRMI
STUB
SKELETON
IIOP
ORB
request
(un)marshall
ORB
(un)marshall
23
23
24
24
JRMI
Servios de runtime
Ferramentas
JRMI: Primeira apario: JDK 1.1
At JDK 1.4: compilador rmic para gerar stubs
Aps: Stubs podem ser gerados automaticamente pela JVM (a partir
de JDK 1.5)
Porm...
H conscincia (da parte do programador) que a invocao de um
mtodo remoto, pois ele deve:
tratar RemoteExceptions
implementar a interface Remote
25
25
IMPLEMENTAO RMI
A: CLIENTE
dados
B1: SERV
A tem referncia de B1
26
26
MENSAGEM REQUEST-REPLY
Mensagem de invocao requer referncia ao objeto
remoto
B2: SERV
dados
mtodos
mtodos
return
return
invoca
Skeleton &
Dispatcher para
a classe de B
STUB B1
Invoca b1.met()
Stub monta request
(marshall)
request
Mdulo de
referncia
dados
mtodos
Interface
remota
da classe B
reply
request
reply
Mdulo de
comunicao
Mdulo de
comunicao
Request/reply
Hora e
data de
criao
Nmero
seqencial
28
28
No espao de nomes
No tempo (referncias antigas)
porta
Bytes (marshalled)
IP
Int ou mtodo
argumentos
Quando utilizada:
32 bits
Ver adiante
Id do mtodo
JRMP
27
27
32 bits
int
Mdulo de
referncia
Request/reply
32 bits
Mapeia ref.
remota<->local
32 bits
Tipo de mensagem
Id do request
Interface
29
29
30
30
BINDER
FUNCIONAMENTO TPICO
Cenrio
Objeto A necessita de um servio de B, mas no conhece a
referncia remota, somente o nome de B
O objeto A pergunta a quem?
m
bt
2. O
CLIENTE
re
ref.
REGISTRO
ta
mo
3. Comunica-se direto
com o obj. servidor
1. registra objetos
SERVIDOR
31
31
Funcionamento tpico
A:Cliente
rmiregistry:Binder
32
32
B:Servidor
Cria stub
locate rmiregistry
Locate rmiregistry
rebind(Alo, stub )
Lookup(Alo)
import java.rmi.Remote;
import java.rmi.RemoteException;
stub
stub.digaAlo()
Executa o
mtodo
"Alo, mundo!"
33
33
34
34
35
35
36
36
AloImpl: servidor
AloInt: interface remota
AloCli: cliente que utiliza o servio
37
37
Linux
echo $CLASSPATH (verifica classpath atual)
export CLASSPATH=$CLASSPATH:<home>/build/classes/
Windows
set classpath (verifica classpath atual)
set classpath=%classpath%;<home>/build/classes/
39
39
Observaes
PASSO 3: EXECUTAR
40
40
EXERCCIO 2: CALCULADORA
Utilizando o JRMIHello2 como exemplo faa um servio
remoto que implemente a seguinte interface:
retorna a + b
retorna a b
retorna a/b
retorn a*b
38
38
41
41
42
42
BAIXAR O CDIGO DE
http://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JRMI/JRMIQuadroBranco/
Dinamicidade
Mudar o cdigo do ObjetoGrfico e mostrar que funciona
43
43
EXERCCIO 3
Implementar uma interface grfica nos clientes do
quadro branco (vide slides anteriores) de maneira que
todos possam editar um desenho de forma cooperativa.
EXERCCIO 4
Implementar o avaliador de respostas de questionrios
(o mesmo feito em UDP e TCP) com JRMI
45
45
44
44
46
46
RESUMO DE RMI
RMI
Cada objeto do SD tem uma referncia remota e uma interface
remota que especifica quais operaes podem ser invocadas
remotamente.
RPC
47
47
48
48
RPC
Remote Procedure Call
IMPLEMENTAO RPC
A: CLIENTE
Procedure
1
Similar RMI
Permite cadeia de invocaes
return
return
STUB PROC 1.
STUP PROC 2
STUB PROC 1
DISPATCHER
request
reply
Mdulo de
comunicao
Request/reply
49
49
CONCLUSO
CORBA x JRMI
Use Corba se o sistema distribudo 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
invoca
SKELETON
PROXY
Invoca procedure 1
Talvez
Pelo menos uma
No mximo uma
Procedure
2
51
51
reply
request
Mdulo de
comunicao
Request/reply
50
50