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

Post on 19-Apr-2015

109 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Concorrência e Concorrência e Java RMIJava RMI

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

Lucas Aranha(lab3)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

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.

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.

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.

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.

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.

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.

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.

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

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.

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

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

ExemploExemplo

• Peguem o exemplo em Peguem o exemplo em

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

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

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?

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.

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

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.

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.

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.

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

top related