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

Post on 22-Apr-2015

114 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Java RMIJava RMI

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

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

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.

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.

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.

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.

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.

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.

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.

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

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.

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

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).

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/

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

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?

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.

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.

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.

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.

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.

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.

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.

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

top related