A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Concorrência e Java RMI João Gabriel(jggxm) Lucas Aranha(lab3)"— Transcrição da apresentação:

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

2 RPC(Remote Procedure Call ) Consiste em chamadas remotas a procedimentos como se fossem locais.Consiste em chamadas remotas a procedimentos como se fossem locais. Torna mais fácil a implementação de aplicações distribuídas, pois abstrai o código referente à parte de comunicaçãoTorna mais fácil a implementação de aplicações distribuídas, pois abstrai o código referente à parte de comunicação

3 RMI(Remote Method Invocation) Permite a chamada de métodos em objetos que estão em outra máquina virtual (geralmente em outro host) com a mesma sintaxe da invocação local.Permite a chamada de métodos em objetos que estão em outra máquina virtual (geralmente em outro host) com a mesma sintaxe da invocação local. É exclusivo para aplicações em Java.É exclusivo para aplicações em Java. É tipicamente cliente-servidor.É tipicamente cliente-servidor.

4 Conceitos Objeto Remoto: É um objeto que pode receber invocações remotas.Objeto Remoto: É um objeto que pode receber invocações remotas. Referência a objeto remoto: Para que um objeto possa invocar métodos de um objeto remoto, ele deve ter acesso à referência do mesmo.Referência a objeto remoto: Para que um objeto possa invocar métodos de um objeto remoto, ele deve ter acesso à referência do mesmo.

5 Conceitos(Continuação) Interface Remota: Todo objeto remoto possui uma interface que especifica quais dos métodos podem ser invocados remotamente.Interface Remota: Todo objeto remoto possui uma interface que especifica quais dos métodos podem ser invocados remotamente. Exceções: Podem ocorrer por problemas decorrentes da distribuição ou na execução do método.Exceções: Podem ocorrer por problemas decorrentes da distribuição ou na execução do método.

6 Considerações As chamadas remotas têm um tempo de resposta maior do que as chamadas locais.As chamadas remotas têm um tempo de resposta maior do que as chamadas locais. As chamadas remotas são mais vulneráveis e possuem falhas mais complexas.As chamadas remotas são mais vulneráveis e possuem falhas mais complexas.

7 Arquitetura Stub: É uma classe gerada pelo compilador rmic no lado do cliente e implementa a mesma interface remota do lado do servidor.É uma classe gerada pelo compilador rmic no lado do cliente e implementa a mesma interface remota do lado do servidor. Não implementa os métodos diretamente e sim traduz a invocação dos métodos para o servidor.Não implementa os métodos diretamente e sim traduz a invocação dos métodos para o servidor.

8 Arquitetura(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 remota (Marshaling).Serializa os parâmetros para a JVM remota (Marshaling). Desserializa os resultados ou exceções de retorno.Desserializa os resultados ou exceções de retorno. Entrega ao cliente o resultado ou exceção.Entrega ao cliente o resultado ou exceção.

9 Arquitetura(Continuação) Skeleton: É gerado pelo compilador rmic e fica do lado do servidor.É gerado pelo compilador rmic e fica do lado do servidor. Implementa a interface remota.Implementa a interface remota. Desserializa(Unmarshaling) os parâmetros para o método remoto.Desserializa(Unmarshaling) os 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 exceção e envia para o cliente.Serializa o valor de retorno ou exceção e envia para o cliente.

10 Arquitetura(Continuação)

11 Arquitetura(Continuação) Seria impraticável se para cada invocação de método remoto fosse necessário incluir a máquina e a porta de destino.Seria impraticável se para cada invocação de método remoto fosse necessário incluir a máquina e a porta de destino. O RMI oferece um serviço de nomes (RMI Registry) que fornece informações sobre a localização de objetos remotos.O RMI oferece um serviço de nomes (RMI Registry) que fornece informações sobre a localização de objetos remotos.

12 Arquitetura(Continuação)

13 Implementação Inicialmente defina a interface remota.Inicialmente defina a interface remota. Escreva o código do servidor que implementa a interface.Escreva o código do servidor que implementa a interface. Escreva o código do cliente.Escreva o código do cliente. Execute o servidorExecute o servidor Execute o(s) cliente(s).Execute o(s) cliente(s).

14 Exemplo Peguem o exemplo emPeguem o exemplo em e/ e/

15 Exercício Crie um programa que permite imprimir uma mensagem na tela de um computador remoto utilizando RMI

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

17 Concorrência(Continuação) Basta colocarmos o modificador synchronized em cada método da classe do objeto remoto onde pode haver a geração de inconsistência.Basta colocarmos o modificador synchronized em cada método da classe do objeto remoto onde pode haver a geração de inconsistência. 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.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.

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

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

20 RMI x CORBA (Vantagens) RMI é similar a CORBA, porém mais simples pois não precisa lidar com diferentes linguagens de programação.RMI é similar a CORBA, porém mais simples pois não precisa lidar com diferentes linguagens de programação. Como tudo é implementado em Java, não necessita de IDL, pois as interfaces são definidas usando as próprias interfaces de Java.Como tudo é implementado em Java, não necessita de IDL, pois as interfaces são definidas usando as próprias interfaces de Java.

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

22 RMI x CORBA (Desvantagens) RMI é limitado a Java.RMI é limitado a Java. Muitas vezes é necessário implementar partes do sistema em C++ por questões de eficiência e a integração com java não é simples.Muitas vezes é necessário implementar partes do sistema em C++ por questões de eficiência e a integração com java não é simples.

23 RMI x CORBA (Desvantagens) Desempenho de RMI é menor em alguns casos.Desempenho de RMI é menor em alguns casos. A arquitetura de CORBA como um todo é mais abrangente.A arquitetura de CORBA como um todo é mais abrangente.

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


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

Apresentações semelhantes


Anúncios Google