Você está na página 1de 24

Java RMI

Joo Gabriel (jggxm)

RPC (Remote Procedure Call)


Tecnologia

(Protocolo)
de comunicao
entre processos
Permite que um processo invoque um
mtodo de outro processo que esteja em
seu espao de endereamento, mesmo que
este esteja em outro host na rede
Torna mais fcil a implementao de
aplicaes distribudas, pois abstrai o
cdigo referente parte de comunicao

RMI (Remote Method Invocation)


Permite

a chamada de mtodos em
objetos que esto em outra mquina
virtual (geralmente em outro host) com a
mesma sintaxe da invocao local

Implementao do RPC para Java

exclusivo para aplicaes

em Java.

tipicamente cliente-servidor.

Conceitos
Objeto

Remoto: um objeto que pode


receber invocaes remotas.

Referncia

a objeto remoto: Para que um


objeto possa invocar mtodos de um
objeto remoto, ele deve ter acesso
referncia do mesmo.

Conceitos (Continuao)
Interface

Remota: Todo objeto remoto


possui uma interface que especifica quais
dos mtodos podem ser invocados
remotamente.

Excees:

Podem ocorrer por problemas


decorrentes da distribuio ou na
execuo do mtodo.

Consideraes
As

chamadas remotas tm um tempo de


resposta maior do que as chamadas
locais.

As

chamadas remotas so
vulnerveis e possuem falhas
complexas.

mais
mais

Arquitetura
Stub:
uma classe gerada pelo compilador
rmic no lado do cliente e implementa a
mesma interface remota do lado do
servidor.
No implementa os mtodos diretamente
e sim traduz a invocao dos mtodos
para o servidor.

Arquitetura(Continuao)
Stub(Continuao):
Inicia a conexo com a JVM remota.
Serializa os parmetros para a JVM
remota (Marshaling).
Desserializa os resultados ou excees
de retorno.
Entrega ao cliente o resultado ou
exceo.

Arquitetura(Continuao)
Skeleton:
gerado pelo compilador rmic e fica do
lado do servidor.
Implementa a interface remota.
Desserializa(Unmarshaling) os parmetros
para o mtodo remoto.
Invoca o mtodo no objeto remoto.
Serializa o valor de retorno ou exceo e
envia para o cliente.

Arquitetura(Continuao)

Arquitetura(Continuao)
Seria

impraticvel se para cada invocao


de mtodo remoto fosse necessrio incluir
a mquina e a porta de destino.
O RMI oferece um servio de nomes (RMI
Registry) que fornece informaes sobre
a localizao de objetos remotos.

Arquitetura(Continuao)

Implementao
Inicialmente defina a interface remota.
Escreva o cdigo do servidor que

implementa a interface.
Escreva o cdigo do cliente.
Execute o servidor
Execute o(s) cliente(s).

Exemplo
Peguem o exemplo clicando no link

http://www.cin.ufpe.br/~jggxm/infra-software/

Exerccio
Crie

um programa que permite imprimir


uma mensagem na tela de um
computador remoto utilizando RMI

Concorrncia
No nosso exemplo podemos perceber que

caso dois clientes estejam acessando o


mesmo objeto Produto, se um resolver
alterar seu preo enquanto outro remove
o mesmo poder haver uma
inconsistncia.
Como resolver?

Concorrncia(Continuao)

Basta colocarmos o modificador synchronized


em cada mtodo da classe do objeto remoto
onde pode haver a gerao de inconsistncia.

Esse modificador faz com que um objeto que


est sendo acessado s possa ser acessado
novamente quando a tarefa que est sendo
realizada sobre ele seja concluida.

Vantagens do RMI
Modelagem

fcil e natural de sistemas


distribudos, abstraindo a parte de rede
Sintaxe da chamada de mtodo local
igual sintaxe da chamada de mtodo
remoto
Rpida difuso com a plataforma Java.

Desvantagens do RMI
Para

cada mquina onde esto os objetos


remotos deve haver um servidor de nomes
para os mesmos serem registrados.
Como RMI usa comunicao sncrona, o
cliente no pode fazer outra tarefa
enquanto espera a resposta do servidor.
So necessrias configuraes adicionais
no firewall, causando restries de acesso
e desempenho.

RMI x CORBA (Vantagens)


RMI

similar a CORBA, porm mais


simples pois no precisa lidar com
diferentes linguagens de programao.

Como

tudo implementado em Java, no


necessita de IDL, pois as interfaces so
definidas usando as prprias interfaces de
Java.

RMI x CORBA (Vantagens)


RMI

permite que objetos possam ser


passados por valor facilmente.

Com

RMI objetos podem ser transferidos


de servidores remotos para o cliente em
tempo de execuo de forma segura.

RMI x CORBA (Desvantagens)


RMI limitado a Java.
Muitas

vezes necessrio implementar


partes do sistema em C++ por questes
de eficincia e a integrao com Java no
simples.

RMI x CORBA (Desvantagens)


Desempenho

de RMI menor em alguns

casos.
A

arquitetura de CORBA como um todo


mais abrangente.

Referncias

http://www.ucb.br/prg/professores/fgoulart/gsi_r
mi.pdf
http://www.dimap.ufrn.br/~thais/SD20071/RPCRMI.pdf
http://www.inf.pucrs.br/~celso/SistemasDistribuid
os/JavaRMI/RMI.pdf
https://dspace.ist.utl.pt/bitstream/2295/54860/1/0
4_-_RMI.pdf#search=%22invoke%20rmi%22
http://www.inf.ufsc.br/~mario/ine6502ch2.pdf

Você também pode gostar