RMI

Mario Jorge Pereira
mariojp@gmail.com
Objetos Remotos
Objetos remotos são objetos cujos métodos podem ser
chamados remotamente, como se fossem locais
Cliente pr...
Objetos Remotos
Para usar objetos remotos, é preciso ter uma
infraestrutura que cuide da geração das classes,
comunicação ...
Objetos Remotos

Página 4
RMI: funcionamento básico
Um objeto remoto previamente registrado é obtido,
através de servidor de nomes especial: RMI Reg...
Arquitetura RMI
Uma aplicação distribuída com RMI tem acesso transparente ao
objeto remoto através de sua Interface Remota...
Como usar RMI
1.
2.
3.
4.
5.
6.

Definir a interface
Implementar os objetos remotos
Escrever, compilar e instalar o(s) cli...
Interface Remota
Declare todos os métodos que serão acessíveis
remotamente em uma interface Java que estenda
java.rmi.Remo...
Classe que implementa a interface
remota
Cada objeto remoto é uma classe implementa a interface
remota criada no passo 1.
...
Iniciar o servidor
Crie uma instância do objeto a ser servido e
Registre-a (bind ou rebind) no serviço de nomes.
public st...
Clientes
Obtenha uma instância remota de cada objeto
Use o objeto, chamando seus métodos1
public static void main(String[]...
Upcoming SlideShare
Loading in …5
×

RMI (Remote Method Invocation)

1,109 views

Published on

O RMI (Remote Method Invocation) é uma interface de programação que permite a execução de chamadas remotas no estilo RPC em aplicações desenvolvidas em Java. É uma das abordagens da plataforma Java para prover as funcionalidades de uma plataforma de objetos distribuídos. Esse sistema de objetos distribuídos faz parte do núcleo básico de Java desde a versão JDK 1.1, com sua API sendo especificada através do pacote java.rmi e seus subpacotes

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,109
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

RMI (Remote Method Invocation)

  1. 1. RMI Mario Jorge Pereira mariojp@gmail.com
  2. 2. Objetos Remotos Objetos remotos são objetos cujos métodos podem ser chamados remotamente, como se fossem locais Cliente precisa, de alguma forma, localizar e obter uma instância do objeto remoto (geralmente através de um proxy intermediário gerado automaticamente) Depois que o cliente tem a referência, faz chamadas nos métodos do objeto remoto (através do proxy) usando a mesma sintaxe que usaria se o objeto fosse local Objetos remotos abstraem toda a complexidade da comunicação em rede Estende o paradigma OO além do domínio local Torna a rede transparente Página 2
  3. 3. Objetos Remotos Para usar objetos remotos, é preciso ter uma infraestrutura que cuide da geração das classes, comunicação e outros detalhes. Há duas soluções disponíveis para implementar objetos remotos em Java OMG CORBA: requer o uso, além de Java, da linguagem genérica OMG IDL, mas suporta integração com outras linguagens Java RMI: para soluções 100% Java As duas soluções diferem principalmente na forma de implementação Em ambas, um programa cliente poderá chamar um método em um objeto remoto da mesma maneira como faz com um método de um objeto local Página 3
  4. 4. Objetos Remotos Página 4
  5. 5. RMI: funcionamento básico Um objeto remoto previamente registrado é obtido, através de servidor de nomes especial: RMI Registry. Permite que os objetos publicamente acessíveis através da rede sejam referenciados através de um nome. Serviço de nomes: classe java.rmi.Naming Método Naming.lookup() consulta um servidor de nomes RMI e obtém uma instância de um objeto remoto Exemplo (jogo de batalha naval): Territorio mar = (Territorio)Naming.lookup("rmi://gamma/caspio"); Agora é possível chamar métodos remotos de mar: tentativa[i] = mar.atira("C", 9); Página 5
  6. 6. Arquitetura RMI Uma aplicação distribuída com RMI tem acesso transparente ao objeto remoto através de sua Interface Remota A "Interface Remota" é uma interface que estende java.rmi.Remote A partir da Interface Remota e implementação do objeto remoto o sistema gera objetos (proxies) que realizam todas as tarefas necessárias para viabilizar a comunicação em rede Página 6
  7. 7. Como usar RMI 1. 2. 3. 4. 5. 6. Definir a interface Implementar os objetos remotos Escrever, compilar e instalar o(s) cliente(s) Iniciar o RMI Registry no servidor Iniciar o servidor de objetos Iniciar os clientes informando o endereço do servidor. Página 7
  8. 8. Interface Remota Declare todos os métodos que serão acessíveis remotamente em uma interface Java que estenda java.rmi.Remote. Todos os métodos devem declarar throws java.rmi.RemoteException. Isto deve ser feito para cada objeto que será acessível através da rede. public interface Mensagem extends Remote { public String getMensagem() throws RemoteException; } Página 8
  9. 9. Classe que implementa a interface remota Cada objeto remoto é uma classe implementa a interface remota criada no passo 1. public String getMensagem() throws RemoteException { return "Bem vindo ao uso de RMI!"; } Página 9
  10. 10. Iniciar o servidor Crie uma instância do objeto a ser servido e Registre-a (bind ou rebind) no serviço de nomes. public static void main(String args[]) { try { Servidor obj = new Servidor(); Mensagem stub = (Mensagem) UnicastRemoteObject.exportObject(obj, 0); //Registrando o objeto Remoto Registry registry = LocateRegistry.getRegistry(); registry.bind("Servidor", stub); System.err.println("Servidor Ativo"); } catch (Exception e) { System.err.println("Erro: " + e.toString()); e.printStackTrace(); } } Página 10
  11. 11. Clientes Obtenha uma instância remota de cada objeto Use o objeto, chamando seus métodos1 public static void main(String[] args) { String host = (args.length < 1) ? null : args[0]; // Ip da maquina try { Registry registry = LocateRegistry.getRegistry(host); Mensagem stub = (Mensagem) registry.lookup("Servidor"); String mensagem = stub.getMensagem(); System.out.println("mensagem: " + mensagem); } catch (Exception e) { System.err.println("erro: " + e.toString()); e.printStackTrace(); } } Página 11

×