Escolar Documentos
Profissional Documentos
Cultura Documentos
MIDDLEWARE
Aplicativos RMI, RPC e eventos Protocolo Requesio-Respostal Representao Externa dos Dados Sistemas Operacionais Camadas Middleware
System.out.println(s);
INTERFACE REMOTA
Objeto remoto
m2 m3
m4 m5 m6
INTERFACE REMOTA
import java.rmi.*; public interface HelloInterface extends Remote { public String sayHello() throws RemoteException; }
CLIENTE
class HelloClient { public static void main (String[] args) { HelloInterface hello; String name = "rmi://localhost/HelloServer"; String text; try { hello = (HelloInterface)Naming.lookup(name); text = hello.sayHello(); System.out.println(text); } catch (Exception e) { System.out.println("HelloClient exception:+e); } } }
COMPILAR
|
rmic Hello
Hello_Stub.class y Hello_Skel.class
y
EXECUO
|
Cliente y HelloInterface.class y Hello_Stub.class y HelloClient.class Servidor y HelloInterface.class y Hello.class y HelloServer.class Executar servidor y rmiregistry y java HelloServer Executar cliente y java HelloClient
INTERFACE REMOTA
|
Todos os mtodos devem ser declarados capazes de disparar uma exceo java.rmi.RemoteException
y
throws RemoteException
INTERFACE REMOTA
import java.rmi.*; public interface HelloInterface extends Remote { public String sayHello() throws RemoteException; }
INTERFACE REMOTA
|
Cliente
Precisa conhecer a interface y No precisa conhecer a implementao
y
Servidor
Precisa conhecer a interface y Precisa conhecer a implementao
y
OBJETO REMOTO
Esta em um computador remoto | Pode-se invocar um mtodo remoto, passando-se parmetros e recebendo um retorno, por meio de mensagens | necessrio conhecer apenas a interface remota | Pode-se passar objetos como parmetros desde que sejam serializable
|
SERIALIZABLE OBJECT
Pode ser transformado numa sequncia de bits | Pode ser transmitido de um computador para outro | Serializao
| y |
Processo de gerar uma cadeia de bytes que representa o estado do objeto Processo de ler uma cadeia de bytes que contm um objeto serializado e recriar em memria um novo objeto com o mesmo estado do objeto que foi serializado
Deserializao
y
SERIALIZABLE OBJECT
Deve ser declarada public | Precisa implementar a interface Serializable: implements Serializable | Todos os campos precisam ser tipos primitivos ou objetos Serializable
|
rmiregistry
|
|
Naming.rebind(url, object);
CLIENTE
class HelloClient { public static void main (String[] args) { HelloInterface hello; String name = "rmi://localhost/HelloServer"; String text; try { hello = (HelloInterface)Naming.lookup(name); text = hello.sayHello(); System.out.println(text); } catch (Exception e) { System.out.println("HelloClient exception:+e); } } }
RMIC
|
A classe que implementa o objeto remoto deve ser compilada da maneira tradicional
y
Sero gerados
Hello_Stub.class y Hello_Skel.class
y
Stub precisa ser copiado para o cliente | Skel no mais necessrio com SDK superior a 1.1
|
SEGURANA
|
javac rmic
RESUMO - EXECUO
|
rmiregistry
TPICOS AVANADOS
RMI sobre Secure Socket Layer (SSL) | Exportao byte-code usando HTTP | Performance
|
Deve ser usada para large-grain computation y Cada invocao a um mtodo remoto resulta em
y
RESUMO
|
rmiregistry O servidor registra o objeto remoto com um nome no servidor de registro O cliente busca pelo objeto remoto no servidor de registro
Iniciar o servidor
y
Iniciar o cliente
y
Invocao remota
O cliente faz uma invocao que vai para a classe Stub y A classe Stub conversa com outra classe no servidor y A classe Stub retorna o resultado para o cliente
y