Вы находитесь на странице: 1из 12

Java RMI

Professor: Ely Prado


Tópicos Especiais em Ciências da Computação
II
(Sistemas Distribuidos)
Unifran
2011
RMI
A tecnologia RMI - Remote Method Invocation (Invocação de Métodos
Remotos), foi primeiramente introduzida no Java, no JDK versão 1.1,
elevando a programação para redes em um patamar mais elevado.

Ely Prado 2
Java RMI
O principal objetivo para os criadores do RMI era permitir os
programadores a desenvolverem programas distribuídos em Java
com a mesma sintaxe e semântica usada em programas não-
distribuídos.
Os arquitetos do RMI tentaram fazer com que o uso dos objetos
distribuídos em Java fosse similar ao uso de objetos Java locais.

Ely Prado 3
Como começar?
Crie um novo projeto Java no NetBeans.
Vamos chamá-lo de ExemploRMI1

Ely Prado 4
Lado Servidor
Crie um pacote para o servidor e dentro deste pacote crie uma
Interface chamada CalculadoraServerInterface

import java.rmi.*;
/*Nossa interface deve estender a classe Remote do RMI*/
public interface CalculadoraServerInterface extends
Remote{
public int somar(int a, int b) throws RemoteException;
}

Ely Prado 5
Lado Servidor
Crie uma nova classe e implemente a nossa interface:
import java.rmi.*;
import java.rmi.server.*;
public class CalculadoraServerInterfaceImpl extends
UnicastRemoteObject implements CalculadoraServerInterface{

public CalculadoraServerInterfaceImpl() throws


RemoteException{
}
public int somar(int a, int b) throws RemoteException{
return a + b;
}
}

Ely Prado 6
Lado Servidor
Criar classe Main, registrar e implementar o servidor
public class ExemploRMI1 {
public static void main(String[] args) {
try {
java.rmi.registry.LocateRegistry.createRegistry(1099);
System.out.println("RMI registrado na porta 1099.");

CalculadoraServerInterface csi = new CalculadoraServerInterfaceImpl();


Registry registry = LocateRegistry.getRegistry();
registry.rebind("CalculadoraServerInterfaceImpl", csi);
System.out.println("Servidor Calculadora " + csi +
" registrado e pronto para aceitar solicitações.");
}
catch (Exception ex) {
System.out.println("Houve um erro: " + ex.getMessage());
}
}
}

Ely Prado 7
Lado Cliente
Crie um novo pacote cliente e uma classe Main
public class ExemploRMI1Cli {
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry("localhost");
CalculadoraServerInterface c = (CalculadoraServerInterface)
registry.lookup("CalculadoraServerInterfaceImpl");
System.out.println("O objeto servidor " + c + " foi encontrado
com sucesso.\n");

System.out.println("A soma de 2 + 5 é: " + c.somar(2, 5));


}
catch(Exception ex){
System.out.println(ex);
}
}}

Ely Prado 8
Como testar?
Execute a classe Main do lado do servidor, o serviço será inicializado.
Execute a classe Main do lado do cliente e o serviço RMI será
consumido.

Ely Prado 9
Objetos distribuídos com
RMI
Para enviar ou receber objetos através de RMI eles devem ser
serializáveis.
Para isto basta implementar a classe Serializable

public class Cliente implements Serializable {


....
}

Ely Prado 10
Exercícios
Crie um serviço RMI que retorne o calculo de IMC
ICM = Peso / Altura²
Consuma este serviço

Crie uma classe Pessoa com os atributos: Nome, Peso, Altura, e o


método getIMC
Envie e receba este objeto por RMI
Tente consumir o serviço RMI por outro computador

Ely Prado 11
Trabalho
Crie uma classe cliente, contendo atributos de nome, endereco,
cidade, cpf, data de nascimento e classificação (ruim, regular, bom,
ótimo)
Crie outra classe que faça um ArrayList desta classe cliente
Crie um serviço RMI capaz de inserir clientes ou efetuar consultas
através do CPF. Ao inserir um CPF já existente o sistema deve
atualizar os dados já cadastrados.
Crie uma aplicação capaz de acessar este servidor e utilizar os
métodos remotos.

Ely Prado 12

Вам также может понравиться