Carregar 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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.