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

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

Java – Remote Method Invocation (RMI)

Apresentações semelhantes


Apresentação em tema: "Java – Remote Method Invocation (RMI)"— Transcrição da apresentação:

1 Java – Remote Method Invocation (RMI)
São Paulo, 2011 Universidade Paulista (UNIP) Java – Remote Method Invocation (RMI) Prof. MSc. Vladimir Camelo 16/04/2017

2 Introdução Sistemas distribuídos:
Neste tipo de sistema existe uma necessidade de comunicação entre sistemas em máquinas distintas. Sockets como solução? Não oferecem um modelo de programação transparente e flexível tanto para o usuário quanto para o desenvolvedor respectivamente. 16/04/2017

3 Introdução O principal objetivo em sistemas distribuídos é:
Utilizar objetos ou componentes que estão localizados em outras máquinas sem se preocupar com a camada de transporte, ou seja, como será realizada essa comunicação entre as máquinas. 16/04/2017

4 Programação com sockets em Java
Sistemas modernos: Comunicam-se entre máquinas e algumas vezes entre processos na mesma máquina, por meio do uso de sockets. O que é socket? É um canal de comunicação por meio do qual uma aplicação se comunica com outra. É referenciado por um número de porta, de maneira que a camada TCP possa identificar a aplicação de destino, ou seja, a aplicação que realizou esta chamada. 16/04/2017

5 Programação com sockets em Java
Comunicação mais simples entre aplicativos localizados em máquinas diferentes, porém pela simplicidade não é bem aplicado na manipulação de tipos de dados ou de aplicações muito complexas, principalmente quando o componente da aplicação está em máquinas diferentes. 16/04/2017

6 Programação com sockets em Java
Existem três tipos de sockets: Datagram sockets: Envia o pacote sem a confirmação de que o servidor recebeu; esta interface é implementada pelo protocolo User Datagram Protocol (UDP). Stream sockets: Envia o pacote com o cuidado de que o servidor receba e que a conexão deva estar ativa no momento da comunicação; esta interface é implementada pelo protocolo Transfer Control Protocol (TCP). 16/04/2017

7 Programação com sockets em Java
Existem três tipos de sockets: Raw sockets: Envia o pacote sem utilizar as camadas de transporte, sendo utilizada a camada de rede Internet Protocol (IP) e no Internet Control Message Protocol (ICMP). 16/04/2017

8 Programação com sockets em Java
A biblioteca para sockets: ServerSocket: esta classe possibilita criar um servidor de sockets, sendo deste a obrigação de atender a uma demanda de conexão via a rede. Socket: esta classe possibilita criar um cliente socket que é um ponto final para a comunicação entre dois nós da rede (computadores). 16/04/2017

9 Programação com sockets em Java (Exemplo)
16/04/2017

10 Programação com sockets em Java (Exemplo)
16/04/2017

11 Programação com sockets em Java (Exemplo)
16/04/2017

12 Programação com sockets em Java (Exemplo)
16/04/2017

13 Java para sistemas distribuídos
Banco de dados: JDBC, SQLJ, JDO; Objetos distribuídos: Java RMI, RMI-IIOP, Java IDL, Enterprise Java Beans (EJB); Serviços distribuídos: JTA, JTS, JAAS, DGC, JNDI; Eventos distribuídos: JMS; Web e Web Services: JAXP, JAXB, JAXM, JAXR, JAX-RPC; JavaMail; 16/04/2017

14 Objetos remotos com Java RMI
Java RMI (Remote Method Invocation) pode ser implementado usando protocolos e infra-estrutura do ambiente de desenvolvimento Java (JRMP e RMI Registry) ou usando IIOP e ORBs (especificações do ambiente CORBA). 16/04/2017

15 Objetos remotos com Java RMI
JRMP - Java Remote Method Protocol: Pacote java.rmi - RMI básico; Ideal para aplicações 100% Java. 16/04/2017

16 Objetos remotos com Java RMI
IIOP - Internet Inter-ORB Protocol: Pacote javax.rmi - RMI sobre IIOP; Ideal para ambientes heterogêneos. 16/04/2017

17 Objetos remotos com Java RMI
A forma de desenvolvimento é similar: Há poucas diferenças para a geração da infra-estrutura (Ex.: proxies) e para o registro dos objetos remotos alocados no servidor; RMI sobre IIOP possibilita programação Java RMI e comunicação em ambiente CORBA, viabilizando integração entre o Java e outras linguagens de programação sem a necessidade de aprender os conceitos de implementação do OMG IDL 16/04/2017

18 Interface de programação
Interface de comunicação em rede 16/04/2017

19 Java Remote Method Invocation
Possibilita a criação de aplicações Java para ambientes distribuídos; Com a obtenção da referência de um objeto remoto, sua utilização é igual a de um objeto local; O RMI encapsula a interface com o protocolo de rede (socket); 16/04/2017

20 Java Remote Method Invocation
Complexidade de programação e ambiente: É muito simples construir aplicações RMI, comparando-se com aplicações que utilizam tecnologia RPC e CORBA; Ambiente: Exige somente suporte TCP/IP e um serviço de nomes de objetos (rmiregistry), disponibilizado gratuitamente com o JDK/SDK. 16/04/2017

21 Java Remote Method Invocation
O Java RMI é uma interface que possibilita a intercomunicação entre objetos Java localizados em diferentes hosts; Cada objeto remoto implementa uma interface remota que especifica quais de seus métodos podem ser invocados remotamente pelos clientes; Os clientes invocam tais métodos exatamente como invocam métodos locais. 16/04/2017

22 Arquitetura Java RMI Uma aplicação distribuída com RMI tem acesso transparente ao objeto remoto por meio de sua Interface remota: A "Interface remota" é uma interface que estende os métodos e propriedades da API java.rmi.Remote; A partir da Interface remota e implementação do objeto remoto o sistema gera objetos (proxies) que realizam todas as tarefas necessárias para viabilizar a comunicação em rede 16/04/2017

23 Arquitetura Java RMI 16/04/2017

24 Camada de referência remota
Arquitetura Java RMI JVM “A” JVM “B” Gerados pelo desenvolvedor Aplicação Objeto remoto Stub Skeleton Gerados automaticamente Camada de referência remota Classes que Implementam o RMI (Java.rmi.*) Camada de transporte 16/04/2017

25 Arquitetura Java RMI 16/04/2017

26 Arquitetura Java RMI 16/04/2017

27 Arquitetura Java RMI 16/04/2017

28 Arquitetura Java RMI 16/04/2017

29 Arquitetura Java RMI 16/04/2017

30 Arquitetura Java RMI 16/04/2017

31 Arquitetura Java RMI 16/04/2017

32 Arquitetura Java RMI 16/04/2017

33 Proxy A implementação RMI é um exemplo do padrão de projeto chamado Proxy; Proxy é uma solução para situações onde o objeto de interesse está inacessível diretamente, mas o cliente precisa operar em uma interface idêntica para ter acesso a esse objeto; A solução via Proxy: criar uma classe que tenha a mesma interface que o objeto de interesse e que implemente, em seus métodos, a lógica de comunicação com o objeto inacessível; Em RMI, o proxy é o Stub são gerados automaticamente pelo ambiente de desenvolvimento (rmic). 16/04/2017

34 Proxy Stub Análogo ao RPC
Stub é a representação local do objeto remoto localizado no cliente; É gerado automaticamente por meio do rmic Ex.: rmic Hello_Time Hello_Time_Stub.class 16/04/2017

35 Stub Camada de referência remota (RRL):
Responsável pela parte semântica da ativação remota; Uma chamada do Stub é repassada a essa camada que faz uso da camada de transporte; 16/04/2017

36 Stub Camada de referência remota (RRL):
Tratamento dos diferentes tipos de referência remota: Unicast: apenas um objeto Multicast: existe um conjunto de objetos e a RRL é quem faz as chamadas necessárias a todos eles por meio da camada de transporte. Implementa as estratégias para reconectar: Caso o objeto remoto torna-se inacessível. 16/04/2017

37 Stub Camada de transporte: Trata da criação / manutenção das conexões;
Efetua os envios / recebimentos de dados entre a máquina cliente e servidora; 16/04/2017

38 Stub Camada de transporte:
Padrão é utilizar sockets (java.net.Socket e ServerSocket) que são obtidos de uma fábrica (java.RMISocketFactory) através do métodos: CreateSocket; CreatServerSocket; Oferece também um mecanismo via HTTP para solucionar problemas com firewalls. 16/04/2017

39 Stub O cliente, quando invoca remotamente um método, não conversa diretamente com o objeto remoto, mas com uma implementação da interface remota chamada stub, que é enviada ao cliente. O stub, por sua vez, passa a invocação para a camada de referência remota. 16/04/2017

40 Execução no servidor O primeiro passo antes de executar o servidor é ativar uma espécie de servidor de nomes de servidores que atendem solicitações de métodos remotos. Isto é feito chamando-se o programa rmiregistry. Este programa pode estar ouvindo portas específicas, como por exemplo: % rmiregistry 2048 & e outras; Uma vez que este programa está executando, pode-se chamar o interpretador java para o arquivo servidor.class . 16/04/2017

41 Esquema da chamada cliente Stub “Oi cliente” unip.br Registry
lookup(.../Servidor) cliente Registry Servidor está aqui Solicitação de stub Servidor_Stub.class Stub Stub sayHello() “Oi cliente” Servidor..class 16/04/2017

42 Como usar RMI em 10 passos O objetivo deste módulo é oferecer apenas uma introdução básica a Java RMI. Isto será feito através de um exemplo simples: Definir a interface Implementar os objetos remotos Implementar um servidor para os objetos Compilar os objetos remotos Gerar stubs com rmic Escrever, compilar e instalar o(s) cliente(s) Instalar o stub no(s) cliente(s) Iniciar o RMI Registry no servidor Iniciar o servidor de objetos Iniciar os clientes informando o endereço do servidor. 16/04/2017

43 Java – Remote Method Invocation (RMI)
São Paulo, 2011 Universidade Paulista (UNIP) Java – Remote Method Invocation (RMI) Prof. MSc. Vladimir Camelo 16/04/2017


Carregar ppt "Java – Remote Method Invocation (RMI)"

Apresentações semelhantes


Anúncios Google