são paulo, 2011 universidade paulista (unip) java – remote method invocation (rmi)

43
Sistemas Distribuído Sistemas Distribuído Introdução a Sistemas Distribuídos Introdução a Sistemas Distribuídos 10/06/22 vladimir.professor@gmail. com 1 São Paulo, 2011 São Paulo, 2011 Universidade Paulista (UNIP) Universidade Paulista (UNIP) Java – Remote Method Invocation Java – Remote Method Invocation (RMI) (RMI) Prof. MSc. Vladimir Camelo Prof. MSc. Vladimir Camelo [email protected]

Upload: charity-carlson

Post on 03-Jan-2016

128 views

Category:

Documents


4 download

DESCRIPTION

São Paulo, 2011 Universidade Paulista (UNIP) Java – Remote Method Invocation (RMI) Prof. MSc . Vladimir Camelo [email protected]. Introdução. Sistemas distribuídos : Neste tipo de sistema existe uma necessidade de comunicação entre sistemas em máquinas distintas. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 1

São Paulo, 2011São Paulo, 2011

Universidade Paulista (UNIP)Universidade Paulista (UNIP)

Java – Remote Method Invocation (RMI)Java – Remote Method Invocation (RMI)

Prof. MSc. Vladimir CameloProf. MSc. Vladimir [email protected]

Page 2: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 2

Sistemas distribuídosSistemas distribuídos::

Neste tipo de sistema existe uma necessidade de comunicação Neste tipo de sistema existe uma necessidade de comunicação

entre sistemas em máquinas distintas.entre sistemas em máquinas distintas.

Sockets como solução?Sockets como solução?

Não oferecem um modelo de programação transparente e flexível Não oferecem um modelo de programação transparente e flexível

tanto para o usuário quanto para o desenvolvedor tanto para o usuário quanto para o desenvolvedor

respectivamente.respectivamente.

IntroduçãoIntrodução

Page 3: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 3

O principal objetivo em sistemas distribuídos é:O principal objetivo em sistemas distribuídos é:

Utilizar objetos ou componentes que estão localizados em outras Utilizar objetos ou componentes que estão localizados em outras

máquinas sem se preocupar com a camada de transporte, ou seja, máquinas sem se preocupar com a camada de transporte, ou seja,

como será realizada essa comunicação entre as máquinas.como será realizada essa comunicação entre as máquinas.

IntroduçãoIntrodução

Page 4: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 4

Sistemas modernos:Sistemas modernos:

Comunicam-se entre máquinas e algumas vezes entre processos Comunicam-se entre máquinas e algumas vezes entre processos

na mesma máquina, por meio do uso de sockets.na mesma máquina, por meio do uso de sockets.

O que é socket?O que é socket?

É um canal de comunicação por meio do qual uma aplicação se É um canal de comunicação por meio do qual uma aplicação se

comunica com outra.comunica com outra.

É referenciado por um número de porta, de maneira que a camada É 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 TCP possa identificar a aplicação de destino, ou seja, a aplicação

que realizou esta chamada.que realizou esta chamada.

Programação com sockets em JavaProgramação com sockets em Java

Page 5: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 5

Comunicação mais simples entre aplicativos localizados em máquinas Comunicação mais simples entre aplicativos localizados em máquinas

diferentes, porém pela simplicidade não é bem aplicado na diferentes, porém pela simplicidade não é bem aplicado na

manipulação de tipos de dados ou de aplicações muito complexas, manipulação de tipos de dados ou de aplicações muito complexas,

principalmente quando o componente da aplicação está em máquinas principalmente quando o componente da aplicação está em máquinas

diferentes.diferentes.

Programação com sockets em JavaProgramação com sockets em Java

Page 6: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 6

Existem três tipos de sockets:Existem três tipos de sockets:

Datagram sockets: Envia o pacote sem a confirmação de que o Datagram sockets: Envia o pacote sem a confirmação de que o

servidor recebeu; esta interface é implementada pelo protocolo servidor recebeu; esta interface é implementada pelo protocolo

User Datagram Protocol (UDP).User Datagram Protocol (UDP).

Stream sockets: Envia o pacote com o cuidado de que o servidor Stream sockets: Envia o pacote com o cuidado de que o servidor

receba e que a conexão deva estar ativa no momento da receba e que a conexão deva estar ativa no momento da

comunicação; esta interface é implementada pelo protocolo comunicação; esta interface é implementada pelo protocolo

Transfer Control Protocol (TCP).Transfer Control Protocol (TCP).

Programação com sockets em JavaProgramação com sockets em Java

Page 7: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 7

Existem três tipos de sockets:Existem três tipos de sockets:

Raw sockets: Envia o pacote sem utilizar as camadas de Raw sockets: Envia o pacote sem utilizar as camadas de

transporte, sendo utilizada a camada de rede Internet Protocol (IP) transporte, sendo utilizada a camada de rede Internet Protocol (IP)

e no Internet Control Message Protocol (ICMP).e no Internet Control Message Protocol (ICMP).

Programação com sockets em JavaProgramação com sockets em Java

Page 8: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 8

A biblioteca para sockets:A biblioteca para sockets:

ServerSocket: esta classe possibilita criar um servidor de sockets, ServerSocket: esta classe possibilita criar um servidor de sockets,

sendo deste a obrigação de atender a uma demanda de conexão sendo deste a obrigação de atender a uma demanda de conexão

via a rede.via a rede.

Socket: esta classe possibilita criar um cliente socket que é um Socket: esta classe possibilita criar um cliente socket que é um

ponto final para a comunicação entre dois nós da rede ponto final para a comunicação entre dois nós da rede

(computadores).(computadores).

Programação com sockets em JavaProgramação com sockets em Java

Page 9: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 9

Programação com sockets em Java (Exemplo)Programação com sockets em Java (Exemplo)

Page 10: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 10

Programação com sockets em Java (Exemplo)Programação com sockets em Java (Exemplo)

Page 11: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 11

Programação com sockets em Java (Exemplo)Programação com sockets em Java (Exemplo)

Page 12: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 12

Programação com sockets em Java (Exemplo)Programação com sockets em Java (Exemplo)

Page 13: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 13

Banco de dados: JDBC, SQLJ, JDO;Banco de dados: JDBC, SQLJ, JDO;

Objetos distribuídos: Java RMI, RMI-IIOP, Java IDL, Objetos distribuídos: Java RMI, RMI-IIOP, Java IDL, EnterpriseEnterprise Java Java

Beans (EJB);Beans (EJB);

Serviços distribuídos: JTA, JTS, JAAS, DGC, JNDI;Serviços distribuídos: JTA, JTS, JAAS, DGC, JNDI;

Eventos distribuídos: JMS;Eventos distribuídos: JMS;

Web e Web Services: JAXP, JAXB, JAXM, JAXR, JAX-RPC;Web e Web Services: JAXP, JAXB, JAXM, JAXR, JAX-RPC;

E-mail: JavaMail;E-mail: JavaMail;

Java para sistemas distribuídosJava para sistemas distribuídos

Page 14: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 14

Java RMI (Remote Method Invocation) pode ser implementado usando Java RMI (Remote Method Invocation) pode ser implementado usando

protocolos e infra-estrutura do ambiente de desenvolvimento Java protocolos e infra-estrutura do ambiente de desenvolvimento Java

(JRMP e RMI Registry) ou usando IIOP e ORBs (especificações do (JRMP e RMI Registry) ou usando IIOP e ORBs (especificações do

ambiente CORBA).ambiente CORBA).

Objetos remotos com Java RMIObjetos remotos com Java RMI

Page 15: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 15

JRMP - Java Remote Method Protocol:JRMP - Java Remote Method Protocol:

Pacote Pacote java.rmi java.rmi - RMI básico;- RMI básico;

Ideal para aplicações 100% Java.Ideal para aplicações 100% Java.

Objetos remotos com Java RMIObjetos remotos com Java RMI

Page 16: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 16

IIOP - Internet Inter-ORB Protocol:IIOP - Internet Inter-ORB Protocol:

Pacote Pacote javax.rmi javax.rmi - RMI sobre IIOP;- RMI sobre IIOP;

Ideal para ambientes heterogêneos.Ideal para ambientes heterogêneos.

Objetos remotos com Java RMIObjetos remotos com Java RMI

Page 17: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 17

A forma de desenvolvimento é similar:A forma de desenvolvimento é similar:

Há poucas diferenças para a geração da infra-estrutura (Ex.: Há poucas diferenças para a geração da infra-estrutura (Ex.:

proxies) e para o registro dos objetos remotos alocados no proxies) e para o registro dos objetos remotos alocados no

servidor;servidor;

RMI sobre IIOP possibilita programação Java RMI e comunicação em RMI sobre IIOP possibilita programação Java RMI e comunicação em

ambiente CORBA, viabilizando integração entre o Java e outras ambiente CORBA, viabilizando integração entre o Java e outras

linguagens de programação sem a necessidade de aprender os linguagens de programação sem a necessidade de aprender os

conceitos de implementação do OMG IDLconceitos de implementação do OMG IDL

Objetos remotos com Java RMIObjetos remotos com Java RMI

Page 18: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 18

Interface de programaçãoInterface de programação

Interface de comunicação em redeInterface de comunicação em rede

Page 19: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 19

Possibilita a criação de aplicações Java para ambientes distribuídos;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 é Com a obtenção da referência de um objeto remoto, sua utilização é

igual a de um objeto local;igual a de um objeto local;

O RMI encapsula a interface com o protocolo de rede (socket);O RMI encapsula a interface com o protocolo de rede (socket);

Java Remote Method InvocationJava Remote Method Invocation

Page 20: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 20

Complexidade de programação e ambiente:Complexidade de programação e ambiente:

É muito simples construir aplicações RMI, comparando-se com É muito simples construir aplicações RMI, comparando-se com

aplicações que utilizam tecnologia RPC e CORBA;aplicações que utilizam tecnologia RPC e CORBA;

Ambiente:Ambiente:

Exige somente suporte TCP/IP e um serviço de nomes de objetos Exige somente suporte TCP/IP e um serviço de nomes de objetos

(rmiregistry), disponibilizado gratuitamente com o JDK/SDK.(rmiregistry), disponibilizado gratuitamente com o JDK/SDK.

Java Remote Method InvocationJava Remote Method Invocation

Page 21: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 21

O Java RMI é uma interface que possibilita a intercomunicação entre O Java RMI é uma interface que possibilita a intercomunicação entre

objetos Java localizados em diferentes hosts;objetos Java localizados em diferentes hosts;

Cada objeto remoto implementa uma interface remota que especifica Cada objeto remoto implementa uma interface remota que especifica

quais de seus métodos podem ser invocados remotamente pelos quais de seus métodos podem ser invocados remotamente pelos

clientes;clientes;

Os clientes invocam tais métodos exatamente como invocam métodos Os clientes invocam tais métodos exatamente como invocam métodos

locais.locais.

Java Remote Method InvocationJava Remote Method Invocation

Page 22: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 22

Uma aplicação distribuída com RMI tem acesso transparente ao objeto Uma aplicação distribuída com RMI tem acesso transparente ao objeto

remoto por meio de sua Interface remota:remoto por meio de sua Interface remota:

A "Interface remota" é uma interface que estende os métodos e A "Interface remota" é uma interface que estende os métodos e

propriedades da API java.rmi.Remote;propriedades da API java.rmi.Remote;

A partir da Interface remota e implementação do objeto remoto o A partir da Interface remota e implementação do objeto remoto o

sistema gera objetos (proxies) que realizam todas as tarefas sistema gera objetos (proxies) que realizam todas as tarefas

necessárias para viabilizar a comunicação em redenecessárias para viabilizar a comunicação em rede

Arquitetura Java RMIArquitetura Java RMI

Page 23: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 23

Arquitetura Java RMIArquitetura Java RMI

Page 24: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 24

Camada de transporte

Stub Skeleton

Aplicação Objeto remoto

Camada de referência remota

JVM “A” JVM “B”

Gerados pelodesenvolvedor

Geradosautomaticamente

Classes que Implementam o RMI(Java.rmi.*)

Arquitetura Java RMIArquitetura Java RMI

Page 25: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 25

Arquitetura Java RMIArquitetura Java RMI

Page 26: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 26

Arquitetura Java RMIArquitetura Java RMI

Page 27: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 27

Arquitetura Java RMIArquitetura Java RMI

Page 28: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 28

Arquitetura Java RMIArquitetura Java RMI

Page 29: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 29

Arquitetura Java RMIArquitetura Java RMI

Page 30: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 30

Arquitetura Java RMIArquitetura Java RMI

Page 31: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 31

Arquitetura Java RMIArquitetura Java RMI

Page 32: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 32

Arquitetura Java RMIArquitetura Java RMI

Page 33: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 33

A implementação RMI é um exemplo do padrão de projeto chamado A implementação RMI é um exemplo do padrão de projeto chamado

Proxy;Proxy;

Proxy é uma solução para situações onde o objeto de interesse está Proxy é uma solução para situações onde o objeto de interesse está

inacessível diretamente, mas o cliente precisa operar em uma inacessível diretamente, mas o cliente precisa operar em uma

interface idêntica para ter acesso a esse objeto;interface idêntica para ter acesso a esse objeto;

A solução via Proxy: criar uma classe que tenha a mesma interface 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 que o objeto de interesse e que implemente, em seus métodos, a

lógica de comunicação com o objeto inacessível;lógica de comunicação com o objeto inacessível;

Em RMI, o proxy é o Stub são gerados automaticamente pelo Em RMI, o proxy é o Stub são gerados automaticamente pelo

ambiente de desenvolvimento (rmic).ambiente de desenvolvimento (rmic).

ProxyProxy

Page 34: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 34

StubStub

Análogo ao RPCAnálogo ao RPC

Stub é a representação local do objeto remoto localizado no Stub é a representação local do objeto remoto localizado no

cliente;cliente;

É gerado automaticamente por meio do rmicÉ gerado automaticamente por meio do rmic

Ex.: rmic Hello_TimeEx.: rmic Hello_Time

Hello_Time_Stub.classHello_Time_Stub.class

ProxyProxy

Page 35: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 35

Camada de referência remota (RRL):Camada de referência remota (RRL):

Responsável pela parte semântica da ativação remota;Responsável pela parte semântica da ativação remota;

Uma chamada do Stub é repassada a essa camada que faz uso da Uma chamada do Stub é repassada a essa camada que faz uso da

camada de transporte;camada de transporte;

StubStub

Page 36: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 36

Camada de referência remota (RRL):Camada de referência remota (RRL):

Tratamento dos diferentes tipos de referência remota:Tratamento dos diferentes tipos de referência remota:

Unicast: apenas um objetoUnicast: apenas um objeto

Multicast: existe um conjunto de objetos e a RRL é quem faz as Multicast: existe um conjunto de objetos e a RRL é quem faz as

chamadas necessárias a todos eles por meio da camada de chamadas necessárias a todos eles por meio da camada de

transporte.transporte.

Implementa as estratégias para reconectar:Implementa as estratégias para reconectar:

Caso o objeto remoto torna-se inacessível.Caso o objeto remoto torna-se inacessível.

StubStub

Page 37: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 37

Camada de transporte:Camada de transporte:

Trata da criação / manutenção das conexões;Trata da criação / manutenção das conexões;

Efetua os envios / recebimentos de dados entre a máquina cliente Efetua os envios / recebimentos de dados entre a máquina cliente

e servidora;e servidora;

StubStub

Page 38: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 38

Camada de transporte:Camada de transporte:

Padrão é utilizar sockets (java.net.Socket e ServerSocket) que são Padrão é utilizar sockets (java.net.Socket e ServerSocket) que são

obtidos de uma fábrica (java.RMISocketFactory) através do obtidos de uma fábrica (java.RMISocketFactory) através do

métodos:métodos:

CreateSocket;CreateSocket;

CreatServerSocket;CreatServerSocket;

Oferece também um mecanismo via HTTP para solucionar Oferece também um mecanismo via HTTP para solucionar

problemas com firewalls.problemas com firewalls.

StubStub

Page 39: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 39

O cliente, quando invoca remotamente um método, não conversa O cliente, quando invoca remotamente um método, não conversa

diretamente com o objeto remoto, mas com uma implementação da diretamente com o objeto remoto, mas com uma implementação da

interface remota chamada stub, que é enviada ao cliente.interface remota chamada stub, que é enviada ao cliente.

O stub, por sua vez, passa a invocação para a camada de referência O stub, por sua vez, passa a invocação para a camada de referência

remota.remota.

StubStub

Page 40: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 40

O primeiro passo antes de executar o servidor é ativar uma espécie de 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 servidor de nomes de servidores que atendem solicitações de métodos

remotos. Isto é feito chamando-se o programa rmiregistry. remotos. Isto é feito chamando-se o programa rmiregistry.

Este programa pode estar ouvindo portas específicas, como por Este programa pode estar ouvindo portas específicas, como por

exemplo: exemplo: % rmiregistry 2048 &% rmiregistry 2048 & e outras e outras;;

Uma vez que este programa está executando, pode-se chamar o Uma vez que este programa está executando, pode-se chamar o

interpretador java para o arquivo servidor.class .interpretador java para o arquivo servidor.class .

Execução no servidorExecução no servidor

Page 41: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 41

unip.br

Registry

Servidor_Stub.class

Servidor..class

cliente

Stub

lookup(.../Servidor)

Servidor está aqui

Solicitação de stub

Stub

sayHello()

“Oi cliente”

Esquema da chamadaEsquema da chamada

Page 42: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 42

O objetivo deste módulo é oferecer apenas uma introdução básica a Java O objetivo deste módulo é oferecer apenas uma introdução básica a Java

RMI. Isto será feito através de um exemplo simples:RMI. Isto será feito através de um exemplo simples:

1.1. Definir a interfaceDefinir a interface

2.2. Implementar os objetos remotosImplementar os objetos remotos

3.3. Implementar um servidor para os objetosImplementar um servidor para os objetos

4.4. Compilar os objetos remotosCompilar os objetos remotos

5.5. Gerar stubs com rmicGerar stubs com rmic

6.6. Escrever, compilar e instalar o(s) cliente(s)Escrever, compilar e instalar o(s) cliente(s)

7.7. Instalar o stub no(s) cliente(s)Instalar o stub no(s) cliente(s)

8.8. Iniciar o RMI Registry no servidorIniciar o RMI Registry no servidor

9.9. Iniciar o servidor de objetosIniciar o servidor de objetos

10.10. Iniciar os clientes informando o endereço do servidor.Iniciar os clientes informando o endereço do servidor.

Como usar RMI em 10 passosComo usar RMI em 10 passos

Page 43: São Paulo, 2011 Universidade Paulista (UNIP) Java –  Remote Method Invocation  (RMI)

Sistemas DistribuídosSistemas DistribuídosIn

trod

ução

a S

iste

mas

Dis

trib

uído

sIn

trod

ução

a S

iste

mas

Dis

trib

uído

s

20/04/23 [email protected] 43

São Paulo, 2011São Paulo, 2011

Universidade Paulista (UNIP)Universidade Paulista (UNIP)

Java – Remote Method Invocation (RMI)Java – Remote Method Invocation (RMI)

Prof. MSc. Vladimir CameloProf. MSc. Vladimir [email protected]