Documente Academic
Documente Profesional
Documente Cultură
Tpicos
F
Motivao
Sistemas Distribudos Objetos Distribudos
Java RMI
Motivao
F F
Comunicao
F
Sockets
genrico flexvel Protocolos
u u
Java RMI
Java RMI
Comunicao
F
Objetos Distribudos
Vantagens da Orientao a Objetos F RMI (Remote Method Invocation) F Java RMI
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
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
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
Cliente
Servidor
Java RMI
Java RMI
Desenvolvimento
1
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
Stub (.class)
Skeleton (.class)
5
Servidor (.class)
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