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

Post on 03-Jan-2016

128 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

São Paulo, 2011 Universidade Paulista (UNIP) Java – Remote Method Invocation (RMI) Prof. MSc . Vladimir Camelo vladimir.professor@gmail.com. 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

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 vladimir.professor@gmail.com 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 Camelovladimir.professor@gmail.com

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 9

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

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 vladimir.professor@gmail.com 10

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

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 vladimir.professor@gmail.com 11

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

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 vladimir.professor@gmail.com 12

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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 18

Interface de programaçãoInterface de programação

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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 23

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 25

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 26

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 27

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 28

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 29

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 30

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 31

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 32

Arquitetura Java RMIArquitetura Java 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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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

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 vladimir.professor@gmail.com 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 Camelovladimir.professor@gmail.com

top related