Title: Socket x RMI
1Socket x RMI
- Aula de Monitoria
- Bruno Pereira - bpe
- Davi Pires - dpr
- Guilherme Barros gbs2
- Thiago Cavalcanti - trc
2Roteiro
- Conceitos de Sockets
- Conceitos de RMI
- Comparação
- Exemplo de Implementação
- Exercício (NOTA)
3Conceitos 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
4Conceitos 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)
5Descrição do fluxo (sockets)
6Conceitos de RMI
- Remote Method Invocation
- Orientado à objetos
- Comunicação remota
- Componentes
- Interface Remota
- Classe remota que implementa a interface
- Rmiregistry
- Stubs e Skeletons
7Observações Importantes(1/2)
- Tratar exceções
- Servidor de Nomes
8Observaçõ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
9Descrição do fluxo (RMI)
10Como 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
11Vejamos na Prática
Cliente
Servidor
(1)
(2)
(3)
a1 (A)
B1_Stub (B Stub)
B Skel
b1 (B)
(4)
(5)
(6)
JVM 1
JVM 2
12Comparaçõ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
13Comparando a Velocidade
14Implementação
15Exemplo Envio de mensagens para um servidor
- Interface
- ServidorInt.java
- Servidor
- Servidor.java
- Cliente
- Cliente.java
16ServidorInt.java
- import java.rmi.
- public interface ServidorInt extends Remote
- void imprimeMensagem(String mensagem) throws
RemoteException
17Servidor.java
- import 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()
18Cliente.java
- import 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()
-
-
19Dicas
- 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 projeto - 2. Selecionar Propriedades
- 3. Em Build
- Dentro de RMI Compiler Settings
- Marque Generate RMI stub/skeleton
20Processo de Criação da Aplicação
- Compilar os arquivos
- Gerar o stub/skeleton
- Ativação do serviço de nomes
- Ativação as aplicações
21Exercício
22Exercí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) -
23Exercí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.
24Exercí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 GUIs
25Entrega 20/07/2005
26Referências
- http//www-asc.di.fct.unl.pt/rc/aulas-praticas/aul
as/aula1/docs/ProgSocketsTCPJava.pdf - http//www.inf.unisinos.br/cac/java/material/aula
12pr.pdf - http//asc.di.fct.unl.pt/sd1/aulas-praticas/materi
ais/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-0
2/4 - http//www-ece.engr.ucf.edu/jza/publications/muno
z.doc - http//www.huihoo.com/middleware/compare.html