SlideShare uma empresa Scribd logo
4
Mais lidos
5
Mais lidos
6
Mais lidos
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 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
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
Objetos Remotos

Página 4
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
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
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
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
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
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
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

Mais conteúdo relacionado

PDF
Fundamentos de Objetos Remotos
PDF
PDF
Computacao distribuida com rmi
PPT
String tokenizer
PDF
J530 5 stateless
PDF
Tópicos avançados em JSF
PDF
Funmentos de Objetos Remotos
Fundamentos de Objetos Remotos
Computacao distribuida com rmi
String tokenizer
J530 5 stateless
Tópicos avançados em JSF
Funmentos de Objetos Remotos

Semelhante a RMI (Remote Method Invocation) (20)

PDF
Sistemas Distribuídos - Comunicação Distribuída - RMI
PPTX
Sistemas Distribuídos - Aula 06
PPT
Sistemas distribuídos com RMI
PDF
PDF
RMI em Java
PDF
Artigo distribuidos programação java com rmi e cobra
PDF
6-RMI.pdf
PPT
Objetos distribuídos e invocação remota - CORBA
PDF
Sistemas Distribuídos - Comunicação Distribuída – CORBA
PDF
JustJava 2005: Web Services em Java com o JWSDP 1.5
PDF
Sistemas Distribuídos - Comunicação Distribuída - Socket
PDF
Conceitos Básicos de Objetos Distribuidos
PPTX
Rmi (remote method invocation)
PDF
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
PDF
Linguagem Java OO | Curso 3WAY Networks
PPT
Java Seminar
PDF
Tutorial passo a passo sobre RMI
PDF
Servidor de Aplicação Web: CherryPy - Python
PDF
Webservices e Computação em Nuvem com PHP
PDF
Interfacestangiveiscomputacaovisual
Sistemas Distribuídos - Comunicação Distribuída - RMI
Sistemas Distribuídos - Aula 06
Sistemas distribuídos com RMI
RMI em Java
Artigo distribuidos programação java com rmi e cobra
6-RMI.pdf
Objetos distribuídos e invocação remota - CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBA
JustJava 2005: Web Services em Java com o JWSDP 1.5
Sistemas Distribuídos - Comunicação Distribuída - Socket
Conceitos Básicos de Objetos Distribuidos
Rmi (remote method invocation)
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Linguagem Java OO | Curso 3WAY Networks
Java Seminar
Tutorial passo a passo sobre RMI
Servidor de Aplicação Web: CherryPy - Python
Webservices e Computação em Nuvem com PHP
Interfacestangiveiscomputacaovisual
Anúncio

Mais de Mario Jorge Pereira (20)

PDF
Educacao e Inteligencia Artificial Generativa
PDF
Labs Jogos Java
PDF
PDF
Lógica de Programação e Algoritmos
PDF
Guia rapido java v2
PDF
Guia Rápido de Referência Java
PDF
Android por onde começar? Mini Curso Erbase 2015
PDF
Java Nuvem Appengine
PDF
Mini curso Android
PDF
Java Server Faces
PDF
Minicurso Android
PDF
Android, por onde começar?
PDF
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
PDF
Android e Cloud Computing
PDF
Java e Cloud Computing
PDF
GUI - Eventos
Educacao e Inteligencia Artificial Generativa
Labs Jogos Java
Lógica de Programação e Algoritmos
Guia rapido java v2
Guia Rápido de Referência Java
Android por onde começar? Mini Curso Erbase 2015
Java Nuvem Appengine
Mini curso Android
Java Server Faces
Minicurso Android
Android, por onde começar?
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Android e Cloud Computing
Java e Cloud Computing
GUI - Eventos
Anúncio

Último (20)

PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PPT
Sistemas de Informação em Saúde Aplicada.ppt
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Aula sobre desenvolvimento de aplicativos
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Aula sobre banco de dados com firebase db
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
SISTEMA DE INFORMAÇÃO EM SAÚDE_UEPA.pptx
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Processos na gestão de transportes, TM100 Col18
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Sistemas de Informação em Saúde Aplicada.ppt
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Aula sobre desenvolvimento de aplicativos
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Aula sobre banco de dados com firebase db
Émile Durkheim slide elaborado muito bom
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
SISTEMA DE INFORMAÇÃO EM SAÚDE_UEPA.pptx
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Curso de Java 9 - (Threads) Multitarefas.pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...

RMI (Remote Method Invocation)

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