socket x rmi.ppt

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

Upload: jox

Post on 11-Feb-2016

17 views

Category:

Documents


1 download

DESCRIPTION

Info

TRANSCRIPT

Page 1: Socket x RMI.ppt

Socket x RMIAula de Monitoria:Bruno Pereira - bpe

Davi Pires - dprGuilherme Barros – gbs2Thiago Cavalcanti - trc

Page 2: Socket x RMI.ppt

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

Page 3: Socket x RMI.ppt

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.ppt

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.ppt

Descrição do fluxo (sockets)

Page 6: Socket x RMI.ppt

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.ppt

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

Nomes

Page 8: Socket x RMI.ppt

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.ppt

Descrição do fluxo (RMI)

Page 10: Socket x RMI.ppt

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.ppt

Vejamos na Prática

JVM 1 JVM 2

Cliente Servidor

a1(A)

B1_Stub(B Stub) B Skel b1

(B)

A BB Stub

(1) (2) (3)

(4)(5)(6)

Page 12: Socket x RMI.ppt

ComparaçõesSocket RMI

Transporte UDP / TCP JRMPDescrição do Serviço Não existe Java InterfaceLocalização Conhece endereço RMI Naming ServiceLook Up matching Não existe Exact String MatchRemote reference Socket Proxy objectSynchronicity Synchronous SynchronousGarbage Collection Não existe Não existeLanguage paradigm Streams Method call

Page 13: Socket x RMI.ppt

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,1222 0,350 0,520 1,021 0,982 1,111 1,101 1,512 1,101 0,931 1,1113 0,351 0,511 1,021 1,022 1,051 1,081 1,142 1,082 0,931 1,1524 0,370 0,520 1,061 1,011 1,382 1,031 1,513 1,152 0,931 1,1525 0,351 0,551 1,312 1,011 1,101 1,122 1,181 1,102 0,941 1,1526 0,351 0,530 1,332 1,022 1,382 1,112 1,061 1,071 0,931 1,1017 0,350 0,510 1,212 1,001 1,102 1,142 1,462 1,202 0,921 1,1328 0,371 0,521 1,182 1,021 1,042 1,081 1,162 1,102 0,931 1,1029 0,351 0,531 1,082 1,061 1,052 1,161 1,132 1,072 0,932 1,15110 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,128max 0,371 0,551 1,332 1,061 1,382 1,161 1,513 1,202 0,941 1,152min 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 serviceCorbaSII(**) = Corba static invocation using the standard Naming service

Comparando a Velocidade

Page 14: Socket x RMI.ppt

Implementação

Page 15: Socket x RMI.ppt

Exemplo: Envio de mensagens para um servidor Interface: ServidorInt.java Servidor:

Servidor.java Cliente:

Cliente.java

Page 16: Socket x RMI.ppt

ServidorInt.javaimport java.rmi.*;

public interface ServidorInt extends Remote{

void imprimeMensagem(String mensagem) throws RemoteException;

}

Page 17: Socket x RMI.ppt

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.ppt

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.ppt

DicasTutorial 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.ppt

Processo de Criação da AplicaçãoCompilar os arquivosGerar o stub/skeletonAtivação do serviço de nomesAtivação as aplicações

Page 21: Socket x RMI.ppt

Exercício

Page 22: Socket x RMI.ppt

ExercícioMini-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.ppt

ExercícioExemplo: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.ppt

ExercícioObservaçõ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.ppt

Entrega 20/07/2005

Page 26: Socket x RMI.ppt

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