Sunteți pe pagina 1din 5

Java RMI

Tpicos
F

Motivao
Sistemas Distribudos Objetos Distribudos

Java RMI Remote Method Invocation


Verso UCB (Revisada)
Java RMI

Arquitetura Desenvolvimento F Tutorial


F F

Java RMI

Motivao
F F

Comunicao
F

Sistemas Distribudos Arquitetura Cliente/Servidor

Sockets
genrico flexvel Protocolos
u u

propcio a erros desagradvel

Java RMI

Java RMI

Comunicao
F

Objetos Distribudos
Vantagens da Orientao a Objetos F RMI (Remote Method Invocation) F Java RMI
F

RPC (Remote Procedure Call)


abstrao da interface de comunicao iluso de chamadas locais External Data Representation (XDR)

ambiente homogneo (Java Virtual Machines)


F

CORBA
ambiente heterogneo

Java RMI

Java RMI

Java RMI

Objetivos de RMI
invocao remota de objetos em diferentes mquinas virtuais F preservar a semntica da linguagem F preservar a segurana do ambiente Java F aplicaes confiveis implementadas de forma simples
F F F

Extenses
coleta de lixo de objetos remotos replicao de servidores F ativao de objetos persistentes, sob demanda

Java RMI

Java RMI

Transparncia & Simplicidade


F F

Programao Local vs Remota


Clientes interagem com Interfaces Remotas Objetos Remotos so passados como referncia F Objetos Locais so passados por valor (serializable objects) F Clientes devem tratar excees em chamadas remotas
F F

diversos mecanismos de invocao vrias semnticas de referncia para objetos remotos ambiente seguro coleta de lixo distribuda

F F

Java RMI

Java RMI

Arquitetura
F

RMI API
F

Aplicao
Interfaces Implementaes

java.rmi
Remote, RemoteException, RMISecurityManager, Naming

Camadas
Stubs/Skeletons Referncias Transporte

Aplication

Client

Server

java.rmi.server
RemoteObject, RemoteStub, RemoteServer, UnicastRemoteObject

RMI System

Stubs / Skeletons Remote Reference Transport

java.rmi.registry
Registry
Java RMI

Java RMI

Java RMI

RMI API
Remote RemoteObject RemoteException Naming F F RemoteStub RemoteServer

Desenvolvimento
Defina a Interface Implemente a Interface (Servidor) F Gere os stubs F Inicialize o Registry F Inicialize/Registre o Servidor F Implemente/Inicialize o Cliente

UnicastRemoteObject

java.rmi java.rmi.server java.rmi.registry aplicao

Cliente

Servidor

Java RMI

Java RMI

Desenvolvimento
1

Def a Interface Impl. a Interface


3

Cenrio
classes do cliente: Interface, Cliente F classes do servidor: Interface, Servidor, Skeleton, (Stub) F cliente pede ao servio de nomes para localizar o servidor F se um SecurityManager estiver presente, o stub (proxy) ser carregado para o cliente F o cliente se comunica com o stub, que por sua vez, se comunica com o skeleton, que se comunica com o servidor
F
Java RMI

(.java ) javac (.class) rmic

Impl. o Cliente (.java ) javac (.class)

Stub (.class)

Skeleton (.class)
5

Servidor (.class)

Inic . o Registry Inic . os Objetos Reg. os Objetos

10

Cliente (.class)
Java RMI

Interface

Cliente

Registro

Servidor

Tutorial / Interface
// Counter.java import java.rmi.*; public interface Counter extends Remote { int nextValue() throws RemoteException ; }

bind lookup

Stub

Skeleton

Java RMI

Java RMI

Java RMI

Tutorial / Servidor
// example_Counter.java import java.rmi.*; import java.rmi.server.*; public class example_Counter extends UnicastRemoteObject implements Counter { private int value; public int nextValue() throws RemoteException { return value++;} public example_Counter() throws RemoteException { super(); value = 0;} }

Servidor / Registrando
// CounterServer .java import java.rmi.*; public class CounterServer { public static void main(String args []) { try { Counter c = new example _Counter(); Naming.rebind(Contador, c); System.out.println(Counter ready.);} catch (Exception e) { System.out.println(Erro:+e.getMessage());} } }

Java RMI

Java RMI

Tutorial / Cliente
// CounterCliente.java import java.rmi.*; public class CounterClient { public static void main(String args []) { System.setSecurityManager(new RMISecurityManager ()); try { String host = args[0]; Counter c = (Counter) Naming.lookup(rmi://+host+/Contador); System.out.println(Contador: +c. nextValue()); } catch (Exception e) { System.out.println(Erro: +e.getMessage ());} } }
Java RMI

Tutorial / Executando
> javac Counter.java > javac example_Counter.java > javac CounterClient .java > javac CounterServer .java > rmic example_Counter > rmiregistry & > java CounterServer & > java CounterClient <reg_host>

Java RMI

Outras Tecnologias
CGI F Servlets F CORBA F DCOM F JAVA IDL
F F

Exerccios
Escrever um programa usando RMI que retorne um String com o nome da mquina servidora e a mensagem Hello, estou respondendo da mquina xxx pela x vez F Utilize o exemplo do counter como exemplo F No se esquea de seguir todos os passos

Java RMI

Java RMI

Java RMI

Referncias
Client/Server programming with Java and CORBA, Orfali, Harkey F Java Remote Method Invocation Specification, JavaSoft F RMI Tutorial, JavaSoft
F

Java RMI

S-ar putea să vă placă și