Java Remote Method Invocation Java RMI

Propaganda
Java Remote Method Invocation
Java RMI
Mestrando Maurício Cristal
Prof. Dr. Fernando Luís Dotti
Prof. Dr. Celso Maciel da Costa
Sumário
•
•
•
•
•
Introdução
Arquitetura genérica
Arquitetura RMI
Exemplo - Counter
Exercícios
Introdução
• Java RMI - arquitetura de objetos
distribuídos entre JVMs remotas
• Integra à linguagem Java o modelo de
objetos distribuídos (APIs)
• Disponível a partir da versão 1.1 do
compilador JDK (Sun)
Arquitetura genérica
Implementação do
Objeto
Cliente
Proxy
Cliente
Proxy
Servidor
Requisição (Broker)
Arquitetura RMI
Aplicação
Javac
Javac
Cliente
Servidor
Rmic
Rmic
Stubs
Esqueletos
ORB RMI
Responsável
pelo transporte
Transporte
Java RMI - Modelo de objetos
• Clientes: superclasse java.rmi.RemoteObject
• Servidores: superclasse java.rmi.RemoteServer
• Interfaces: superclasse java.rmi.Remote
• Exceções: superclasse java.rmi.RemoteException
Java RMI
Requisição e resposta de serviços
• Chamada síncrona
• Chamadas assíncronas e deferidas não são
suportadas
Java RMI - Marshalling
• Superclasse java.io.serializable
• Métodos readObject e writeObject
permitem a escrita dos parâmetros em
stream de bytes
• Permitem também a serialização de classes
e objetos
• Por segurança classes podem desabilitar a
sua serialização
Java RMI - IDL
• Não define IDL
• Interfaces são definidas em Java
• Compiladas com o compilador rmic,
gerando o stub e esqueleto interpretados
• Utiliza-se o runtime java para executar os
proxies
Java RMI - Invocações
• Sempre estáticas, não suporta invocações
dinâmicas
• Realizadas através dos proxies compilados
com rmic
Java RMI - Serviço de nomes
• Superclasse java.rmi.Naming
• Através de nomes recupera referências para
objetos
• Utiliza uma URL e porta TCP para cada
servidor de nomes
Java RMI - Serviço de nomes
ContaBancária acct = new ContaBancáriaImpl();
String url = “rmi://java.sun.com/account”;
//bind da url ao objeto remoto
java.RMI.Naming.bind(url, acct);
..............
acct = (ContaBancária) java.RMI.Naming.lookup(url);
Java RMI - Serviço de nomes
• Associações entre referências remotas e
nomes são gerenciadas por um processo
daemon denominado rmiregistry
• Pode ser classificado como o servidor de
nomes propriamente dito
Java RMI Serviço de ciclo de vida
• Determinado pela própria JVM
• Objeto RMI é um objeto Java com funcionalidades
de distribuição
• Exemplo: operador new
Java RMI - Outros serviços
•
•
•
•
Eventos
Transações
Trader
Não são definidos na arquitetura RMI
Java RMI Interoperabilidade inter-ORBs
• Objetos RMI trocam mensagens com
objetos CORBA, através do protocolo IIOP
• RMI-over-IIOP, compatibilidade adicionada
na versão JDK 1.1.6
Interoperabilidade inter-ORB
Arquitetura
CORBA
Arquitetura
RMI
IIOP
Bibliografia
• Orfali, Robert, Harkey, Dan. Client/server Programming with Java and
CORBA. Second Edition; New York, NY: John Wiley and Sons Inc,
1998. 1022p.
• Farley, Jim. Java Distributed Computing. The Java Series. California:
O’Reilly Associates. 1998.
• Java Remote Method Invocation Specification.
• http://java.sun.com/products/rmi
Java Remote Method Invocation
Java RMI
Mestrando Maurício Cristal
Prof. Dr. Fernando Luís Dotti
Prof. Dr. Celso Maciel da Costa
Download