java rmi joão gabriel (jggxm). rpc (remote procedure call) tecnologia (protocolo) de comunicação...

24
Java RMI Java RMI João Gabriel (jggxm) João Gabriel (jggxm)

Upload: internet

Post on 22-Apr-2015

114 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Java RMIJava RMI

João Gabriel (jggxm)João Gabriel (jggxm)

Page 2: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

RPC (Remote Procedure Call)RPC (Remote Procedure Call)

Tecnologia (Protocolo) de comunicação Tecnologia (Protocolo) de comunicação entre processos entre processos

Permite que um processo invoque um Permite que um processo invoque um método de outro processo que esteja em método de outro processo que esteja em seu espaço de endereçamento, mesmo seu espaço de endereçamento, mesmo que este esteja em outro host na redeque este esteja em outro host na rede

Torna mais fácil a implementação de Torna mais fácil a implementação de aplicações distribuídas, pois abstrai o aplicações distribuídas, pois abstrai o código referente à parte de comunicaçãocódigo referente à parte de comunicação

Page 3: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

RMI (Remote Method Invocation)RMI (Remote Method Invocation)

Permite a Permite a chamada de métodos em chamada de métodos em objetosobjetos que estão em outra máquina que estão em outra máquina virtual (geralmente em outro host) com a virtual (geralmente em outro host) com a mesma sintaxe da invocação localmesma sintaxe da invocação local Implementação do RPC para JavaImplementação do RPC para Java

É exclusivo para aplicações em Java.É exclusivo para aplicações em Java.

É tipicamente cliente-servidor.É tipicamente cliente-servidor.

Page 4: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

ConceitosConceitos

Objeto Remoto:Objeto Remoto: É um objeto que pode É um objeto que pode receber invocações remotas.receber invocações remotas.

Referência a objeto remoto: Referência a objeto remoto: Para que um Para que um objeto possa invocar métodos de um objeto possa invocar métodos de um objeto remoto, ele deve ter acesso à objeto remoto, ele deve ter acesso à referência do mesmo.referência do mesmo.

Page 5: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Conceitos (Continuação)Conceitos (Continuação)

Interface Remota:Interface Remota: Todo objeto remoto Todo objeto remoto possui uma interface que especifica quais possui uma interface que especifica quais dos métodos podem ser invocados dos métodos podem ser invocados remotamente. remotamente.

Exceções:Exceções: Podem ocorrer por problemas Podem ocorrer por problemas decorrentes da distribuição ou na decorrentes da distribuição ou na execução do método.execução do método.

Page 6: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

ConsideraçõesConsiderações

As chamadas remotas têm um tempo de As chamadas remotas têm um tempo de resposta maior do que as chamadas resposta maior do que as chamadas locais.locais.

As chamadas remotas são mais As chamadas remotas são mais vulneráveis e possuem falhas mais vulneráveis e possuem falhas mais complexas.complexas.

Page 7: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

ArquiteturaArquitetura

Stub:Stub: É uma classe gerada pelo compilador É uma classe gerada pelo compilador rmic rmic

no lado do cliente e implementa a mesma no lado do cliente e implementa a mesma interface remota do lado do servidor. interface remota do lado do servidor.

Não implementa os métodos diretamente Não implementa os métodos diretamente e sim traduz a invocação dos métodos e sim traduz a invocação dos métodos para o servidor. para o servidor.

Page 8: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Arquitetura(Continuação)Arquitetura(Continuação)

Stub(Continuação):Stub(Continuação): Inicia a conexão com a JVM remota.Inicia a conexão com a JVM remota. Serializa os parâmetros para a JVM Serializa os parâmetros para a JVM

remota (Marshaling).remota (Marshaling). Desserializa os resultados ou exceções Desserializa os resultados ou exceções

de retorno.de retorno. Entrega ao cliente o resultado ou exceção.Entrega ao cliente o resultado ou exceção.

Page 9: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Arquitetura(Continuação)Arquitetura(Continuação)

Skeleton:Skeleton: É gerado pelo compilador É gerado pelo compilador rmic rmic e fica do e fica do

lado do servidor.lado do servidor. Implementa a interface remota.Implementa a interface remota. Desserializa(Unmarshaling) os parâmetros Desserializa(Unmarshaling) os parâmetros

para o método remoto.para o método remoto. Invoca o método no objeto remoto.Invoca o método no objeto remoto. Serializa o valor de retorno ou exceção e Serializa o valor de retorno ou exceção e

envia para o cliente. envia para o cliente.

Page 10: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Arquitetura(Continuação)Arquitetura(Continuação)

Page 11: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Arquitetura(Continuação)Arquitetura(Continuação)

Seria impraticável se para cada invocação Seria impraticável se para cada invocação de método remoto fosse necessário incluir de método remoto fosse necessário incluir a máquina e a porta de destino.a máquina e a porta de destino.

O RMI oferece um serviço de nomes (RMI O RMI oferece um serviço de nomes (RMI Registry) que fornece informações sobre a Registry) que fornece informações sobre a localização de objetos remotos.localização de objetos remotos.

Page 12: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Arquitetura(Continuação)Arquitetura(Continuação)

Page 13: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

ImplementaçãoImplementação

Inicialmente defina a interface remota.Inicialmente defina a interface remota. Escreva o código do servidor que Escreva o código do servidor que

implementa a interface.implementa a interface. Escreva o código do cliente.Escreva o código do cliente. Execute o servidor Execute o servidor Execute o(s) cliente(s).Execute o(s) cliente(s).

Page 14: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

ExemploExemplo

Peguem o exemplo clicando no linkPeguem o exemplo clicando no link http://www.cin.ufpe.br/~jggxm/infra-software/http://www.cin.ufpe.br/~jggxm/infra-software/

Page 15: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

ExercícioExercício

Crie um programa que permite imprimir Crie um programa que permite imprimir uma mensagem na tela de um uma mensagem na tela de um computador remoto utilizando RMIcomputador remoto utilizando RMI

Page 16: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

ConcorrênciaConcorrência

No nosso exemplo podemos perceber que No nosso exemplo podemos perceber que caso dois clientes estejam acessando o caso dois clientes estejam acessando o mesmo objeto Produto, se um resolver mesmo objeto Produto, se um resolver alterar seu preço enquanto outro remove o alterar seu preço enquanto outro remove o mesmo poderá haver uma inconsistência.mesmo poderá haver uma inconsistência.

Como resolver?Como resolver?

Page 17: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Concorrência(Continuação)Concorrência(Continuação)

Basta colocarmos o modificador Basta colocarmos o modificador synchronized synchronized em cada método da classe do objeto remoto em cada método da classe do objeto remoto onde pode haver a geração de inconsistência.onde pode haver a geração de inconsistência.

Esse modificador faz com que um objeto que Esse modificador faz com que um objeto que está sendo acessado só possa ser acessado está sendo acessado só possa ser acessado novamente quando a tarefa que está sendo novamente quando a tarefa que está sendo realizada sobre ele seja concluida.realizada sobre ele seja concluida.

Page 18: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Vantagens do RMIVantagens do RMI

Modelagem fácil e natural de sistemas distribuídos, abstraindo a parte de rede

Sintaxe da chamada de método local é igual à sintaxe da chamada de método remoto

Rápida difusão com a plataforma Java.

Page 19: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

Desvantagens do RMIDesvantagens do RMI

Para cada máquina onde estão os objetos remotos deve haver um servidor de nomes para os mesmos serem registrados.

Como RMI usa comunicação síncrona, o cliente não pode fazer outra tarefa enquanto espera a resposta do servidor.

São necessárias configurações adicionais no firewall, causando restrições de acesso e desempenho.

Page 20: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

RMI x CORBA (Vantagens)RMI x CORBA (Vantagens)

RMI é similar a CORBA, porém mais RMI é similar a CORBA, porém mais simples pois não precisa lidar com simples pois não precisa lidar com diferentes linguagens de programação. diferentes linguagens de programação.

Como tudo é implementado em Java, não Como tudo é implementado em Java, não necessita de IDL, pois as interfaces são necessita de IDL, pois as interfaces são definidas usando as próprias interfaces de definidas usando as próprias interfaces de Java. Java.

Page 21: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

RMI x CORBA (Vantagens)RMI x CORBA (Vantagens)

RMI permite que objetos possam ser RMI permite que objetos possam ser passados por valor facilmente. passados por valor facilmente.

Com RMI objetos podem ser transferidos Com RMI objetos podem ser transferidos de servidores remotos para o cliente em de servidores remotos para o cliente em tempo de execução de forma segura. tempo de execução de forma segura.

Page 22: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

RMI x CORBA (Desvantagens)RMI x CORBA (Desvantagens)

RMI é limitado a Java. RMI é limitado a Java.

Muitas vezes é necessário implementar Muitas vezes é necessário implementar partes do sistema em C++ por questões partes do sistema em C++ por questões de eficiência e a integração com Java não de eficiência e a integração com Java não é simples. é simples.

Page 23: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

RMI x CORBA (Desvantagens)RMI x CORBA (Desvantagens)

Desempenho de RMI é menor em alguns Desempenho de RMI é menor em alguns casos. casos.

A arquitetura de CORBA como um todo é A arquitetura de CORBA como um todo é mais abrangente. mais abrangente.

Page 24: Java RMI João Gabriel (jggxm). RPC (Remote Procedure Call)  Tecnologia (Protocolo) de comunicação entre processos  Permite que um processo invoque um

ReferênciasReferências

http://www.ucb.br/prg/professores/fgoulart/http://www.ucb.br/prg/professores/fgoulart/gsi_rmi.pdfgsi_rmi.pdf

http://www.dimap.ufrn.br/~thais/SD20071/RPC-http://www.dimap.ufrn.br/~thais/SD20071/RPC-RMI.pdfRMI.pdf

http://www.inf.pucrs.br/~celso/http://www.inf.pucrs.br/~celso/SistemasDistribuidos/JavaRMI/RMI.pdfSistemasDistribuidos/JavaRMI/RMI.pdf

https://dspace.ist.utl.pt/bitstream/https://dspace.ist.utl.pt/bitstream/2295/54860/1/04_-_RMI.pdf#search=%22invoke2295/54860/1/04_-_RMI.pdf#search=%22invoke%20rmi%22%20rmi%22

http://www.inf.ufsc.br/~mario/ine6502ch2.pdfhttp://www.inf.ufsc.br/~mario/ine6502ch2.pdf