concorrência e java rmi joão gabriel(jggxm) lucas aranha(lab3)

24
Concorrência e Concorrência e Java RMI Java RMI João Gabriel(jggxm) João Gabriel(jggxm) Lucas Aranha(lab3) Lucas Aranha(lab3)

Upload: internet

Post on 19-Apr-2015

109 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

Concorrência e Concorrência e Java RMIJava RMI

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

Lucas Aranha(lab3)Lucas Aranha(lab3)

Page 2: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

• Consiste em chamadas remotas a Consiste em chamadas remotas a procedimentos como se fossem procedimentos como se fossem locais.locais.

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

Page 3: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

RMI(Remote Method RMI(Remote Method Invocation)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) virtual (geralmente em outro host) com a mesma sintaxe da invocação com a mesma sintaxe da invocação local.local.

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

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

Page 4: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

ConceitosConceitos

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

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

Page 5: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

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

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

Page 6: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

ConsideraçõesConsiderações

• As chamadas remotas têm um tempo As chamadas remotas têm um tempo de resposta maior do que as de resposta maior do que as chamadas locais.chamadas 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: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

ArquiteturaArquitetura

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

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

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

Page 8: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

Arquitetura(ContinuaçãoArquitetura(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 Desserializa os resultados ou

exceções de retorno.exceções de retorno.• Entrega ao cliente o resultado ou Entrega ao cliente o resultado ou

exceção.exceção.

Page 9: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

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

do lado do servidor.do lado do servidor.• Implementa a interface remota.Implementa a interface remota.• Desserializa(Unmarshaling) os Desserializa(Unmarshaling) os

parâmetros para o método remoto.parâmetros 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 Serializa o valor de retorno ou

exceção e envia para o cliente. exceção e envia para o cliente.

Page 10: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

Page 11: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

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

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

Page 12: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

Page 13: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

ImplementaçãoImplementação

• Inicialmente defina a interface Inicialmente defina a interface remota.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: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

ExemploExemplo

• Peguem o exemplo em Peguem o exemplo em

www.cin.ufpe.br/~jggxm/infrawww.cin.ufpe.br/~jggxm/infra%20de%20software/%20de%20software/

Page 15: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

ExercícioExercício

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

Page 16: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

ConcorrênciaConcorrência

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

• Como resolver?Como resolver?

Page 17: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

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

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

Page 18: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

RMI x CORBA RMI x CORBA (Vantagens)(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 diferentes linguagens de programação. programação.

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

Page 21: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

RMI x CORBA RMI x CORBA (Vantagens)(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 Com RMI objetos podem ser transferidos de servidores remotos transferidos de servidores remotos para o cliente em tempo de execução para o cliente em tempo de execução de forma segura. de forma segura.

Page 22: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

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

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

Page 23: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

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

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

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

Page 24: Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)

ReferênciasReferências

• As referências para RMI podem ser As referências para RMI podem ser encontradas no seguinte endereço:encontradas no seguinte endereço:

www.cin.ufpe.br/~lab3/LinksRMI.txtwww.cin.ufpe.br/~lab3/LinksRMI.txt