socket x rmi

26
Socket x RMI Aula de Monitoria: Bruno Pereira - bpe Davi Pires - dpr Guilherme Barros – gbs2 Thiago Cavalcanti - trc

Upload: shaw

Post on 05-Jan-2016

34 views

Category:

Documents


5 download

DESCRIPTION

Socket x RMI. Aula de Monitoria: Bruno Pereira - bpe Davi Pires - dpr Guilherme Barros – gbs2 Thiago Cavalcanti - trc. Roteiro. Conceitos de Sockets Conceitos de RMI Comparação Exemplo de Implementação Exercício (NOTA). Conceitos de Sockets. Relembrando ... - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Socket x RMI

Socket x RMI

Aula de Monitoria:Bruno Pereira - bpe

Davi Pires - dprGuilherme Barros – gbs2Thiago Cavalcanti - trc

Page 2: Socket x RMI

Roteiro

Conceitos de Sockets Conceitos de RMI Comparação Exemplo de Implementação Exercício (NOTA)

Page 3: Socket x RMI

Conceitos de Sockets

Relembrando ... Uma porta de um canal de

comunicação que permite a um processo executando num computador enviar/receber mensagens para/de outro processo.

Usado para representar uma conexão entre um cliente e um servidor

Page 4: Socket x RMI

Conceitos de Sockets

Interface entre o processo da aplicação e a camada de transporte

Cada processo é identificado por uma porta e um ip

Principais tipos de Sockets: stream sockets (UDP) datagram sockets (TCP)

Page 5: Socket x RMI

Descrição do fluxo (sockets)

Page 6: Socket x RMI

Conceitos de RMI Remote Method Invocation Orientado à objetos Comunicação remota Componentes

Interface Remota Classe remota que implementa a

interface Rmiregistry Stubs e Skeletons

Page 7: Socket x RMI

Observações Importantes(1/2) Tratar exceções Servidor de

Nomes

Page 8: Socket x RMI

Observações Importantes(2/2)

Os métodos remotos podem receber e retornar objetos

Estes objetos devem implementar a interface Serializable

Tipos primitivos são passados por valor e objetos por referência nas chamadas dos métodos

Page 9: Socket x RMI

Descrição do fluxo (RMI)

Page 10: Socket x RMI

Como funciona RMI

O cliente chama o método remoto usando um Stub

O Stub então envia uma mensagem para o Skeleton na máquina remota, contento os argumentos da chamada ao método remoto

O Skeleton empacota a resposta e envia ela de volta para o stub na máquina do cliente

Page 11: Socket x RMI

Vejamos na Prática

JVM 1 JVM 2

Cliente Servidor

a1(A)

B1_Stub(B Stub)

B Skelb1(B)

A BB Stub

(1) (2) (3)

(4)(5)(6)

Page 12: Socket x RMI

Comparações

Socket RMI

Transporte UDP / TCP JRMP

Descrição do Serviço Não existe Java Interface

Localização Conhece endereço RMI Naming Service

Look Up matching Não existe Exact String Match

Remote reference Socket Proxy object

Synchronicity Synchronous Synchronous

Garbage Collection Não existe Não existe

Language paradigm Streams Method call

Page 13: Socket x RMI

Execution Local Remote Local Remote Local Remote Local Remote Local Remote

No Sockets Sockets CorbaSII(*)CorbaSII(*)CorbaSII(**)CorbaSII(**)CorbaDII CorbaDII RMI RMI

1 0,340 0,521 1,021 1,031 1,022 1,071 1,061 1,071 0,941 1,122

2 0,350 0,520 1,021 0,982 1,111 1,101 1,512 1,101 0,931 1,111

3 0,351 0,511 1,021 1,022 1,051 1,081 1,142 1,082 0,931 1,152

4 0,370 0,520 1,061 1,011 1,382 1,031 1,513 1,152 0,931 1,152

5 0,351 0,551 1,312 1,011 1,101 1,122 1,181 1,102 0,941 1,152

6 0,351 0,530 1,332 1,022 1,382 1,112 1,061 1,071 0,931 1,101

7 0,350 0,510 1,212 1,001 1,102 1,142 1,462 1,202 0,921 1,132

8 0,371 0,521 1,182 1,021 1,042 1,081 1,162 1,102 0,931 1,102

9 0,351 0,531 1,082 1,061 1,052 1,161 1,132 1,072 0,932 1,151

10 0,350 0,541 1,062 1,021 1,382 1,141 1,131 1,152 0,941 1,102

Local Remote Local Remote Local Remote Local Remote Local Remote

Stadistics Sockets Sockets CorbaSII(*)CorbaSII(*)CorbaSII(**)CorbaSII(**)CorbaDII CorbaDII RMI RMI

average 0,354 0,526 1,131 1,018 1,163 1,104 1,236 1,111 0,933 1,128

max 0,371 0,551 1,332 1,061 1,382 1,161 1,513 1,202 0,941 1,152

min 0,340 0,510 1,021 0,982 1,022 1,031 1,061 1,071 0,921 1,101

stdev 0,010 0,013 0,121 0,020 0,154 0,039 0,184 0,044 0,006 0,023

Notes:

CorbaSII(*) = Corba static invocation using the Visigenic osagent location service

CorbaSII(**) = Corba static invocation using the standard Naming service

Comparando a Velocidade

Page 14: Socket x RMI

Implementação

Page 15: Socket x RMI

Exemplo: Envio de mensagens para um servidor

Interface: ServidorInt.java Servidor:

Servidor.java Cliente:

Cliente.java

Page 16: Socket x RMI

ServidorInt.java

import java.rmi.*;

public interface ServidorInt extends Remote{

void imprimeMensagem(String mensagem) throws RemoteException;

}

Page 17: Socket x RMI

Servidor.javaimport java.rmi.*; import java.rmi.server.*; import sun.rmi.registry.RegistryImpl;

public class Servidor extends UnicastRemoteObject implements ServidorInt {

public Servidor() throws RemoteException {

super();

RegistryImpl impl = new RegistryImpl(1099);

}

public void imprimeMensagem(String mensagem) {

System.out.println("A mensagem enviada foi : " + mensagem);

}

public static void main(String args[]) {

try {

Servidor s = new Servidor();

Naming.rebind("servidor", s);

System.out.println("Servidor Registrado");

}

catch (Exception e) {

System.out.println("Erro : Mensagem : " + e.getMessage());

e.printStackTrace();

}

}

}

Page 18: Socket x RMI

Cliente.javaimport java.rmi.*;import java.io.*;

public class Cliente implements Serializable {

public static void main(String args[]) { try { ServidorInt s = (ServidorInt) Naming.lookup("servidor"); s.imprimeMensagem(“Hello CIn!"); } catch (Exception e) { System.out.println("Erro: Mensagem: " + e.getMessage()); e.printStackTrace(); } }}

Page 19: Socket x RMI

Dicas

Tutorial de como Gerar Stub/Skeleton do Servidor.java

Passo-a-Passo:1. No JBuilder, clicar com o botão direito no

arquivo Servidor.java, na janela do projeto2. Selecionar Propriedades3. Em Build

Dentro de RMI Compiler SettingsMarque Generate RMI stub/skeleton

Page 20: Socket x RMI

Processo de Criação da Aplicação

Compilar os arquivosGerar o stub/skeletonAtivação do serviço de nomesAtivação as aplicações

Page 21: Socket x RMI

Exercício

Page 22: Socket x RMI

Exercício

Mini-Projeto:Solução para uma rede de locadoras usando RMI.Descrição: Cada filial tem as informações (número, nome e

débito) de seus clientes. O cliente pode locar filmes em qualquer

locadora. As locadoras possuem ligação com um servidor

central, o qual tem uma lista da localização (em qual filial) de todos os clientes cadastrados

Existirão 4 locadoras, 1 servidor central e 8 clientes (dois em cada locadora)

Page 23: Socket x RMI

Exercício

Exemplo:O cliente 1, chega na locadora A e pede

para locar um DVD. O cliente 1 foi, anteriormente, cadastrado na locadora B, logo, a locadora A, vai requisitar as informações do cliente 1 para o servidor central. O servidor central localizará o cliente e solicitará as informações do mesmo à sua locadora de cadastro. Com as informações em mãos, o funcionário decidirá se o cliente pode ou não locar o DVD.

Page 24: Socket x RMI

Exercício

Observações: É necessário apenas o nome do cliente e

saber o valor do débito. Logo, se ele estiver devendo, não será possível locar outro DVD.

As operações realizadas pela locadora serão: Consultar débito Atualizar débito Adicionar Cliente Remover Cliente

Não é necessário ter GUI´s

Page 25: Socket x RMI

Entrega 20/07/2005

Page 26: Socket x RMI

Referências http://www-asc.di.fct.unl.pt/rc/aulas-praticas/aulas/

aula1/docs/ProgSocketsTCPJava.pdf http://www.inf.unisinos.br/~cac/java/material/

aula12pr.pdf http://asc.di.fct.unl.pt/sd1/aulas-praticas/materiais/

aula3/docs/Aula3-RMI.pdf http://atlas.ucpel.tche.br/~dubois/progavancada/05-

RMI.pdf http://twiki.im.ufba.br/pub/MAT570/Material/mat570-

rmi-6pp.pdf http://ltodi.est.ips.pt/nribeiro/Lecturing/SD_01-02/4 http://www-ece.engr.ucf.edu/~jza/publications/

munoz.doc http://www.huihoo.com/middleware/compare.html