socket x rmi
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 PresentationTRANSCRIPT
![Page 1: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/1.jpg)
Socket x RMI
Aula de Monitoria:Bruno Pereira - bpe
Davi Pires - dprGuilherme Barros – gbs2Thiago Cavalcanti - trc
![Page 2: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/2.jpg)
Roteiro
Conceitos de Sockets Conceitos de RMI Comparação Exemplo de Implementação Exercício (NOTA)
![Page 3: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/5.jpg)
Descrição do fluxo (sockets)
![Page 6: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/7.jpg)
Observações Importantes(1/2) Tratar exceções Servidor de
Nomes
![Page 8: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/9.jpg)
Descrição do fluxo (RMI)
![Page 10: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/14.jpg)
Implementação
![Page 15: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/15.jpg)
Exemplo: Envio de mensagens para um servidor
Interface: ServidorInt.java Servidor:
Servidor.java Cliente:
Cliente.java
![Page 16: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/16.jpg)
ServidorInt.java
import java.rmi.*;
public interface ServidorInt extends Remote{
void imprimeMensagem(String mensagem) throws RemoteException;
}
![Page 17: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/21.jpg)
Exercício
![Page 22: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/25.jpg)
Entrega 20/07/2005
![Page 26: Socket x RMI](https://reader035.vdocuments.site/reader035/viewer/2022062517/56813aba550346895da2c238/html5/thumbnails/26.jpg)
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