Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
RMI-IIOP
1
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Sem RMI-IIOP
2
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
RMI-IIOP - Visão Geral
•
•
•
•
•
•
•
•
Tecnologia para programação de objetos em ambientes distribuídos
baseado na arquitetura e linguagem Java
Combinação de Java – RMI e CORBA
Resultado do desenvolvimento conjunto da Sun e da IBM
Mudanças nas especificações CORBA adotadas pela OMG
possibilitaram o surgimento da RMI-IIOP
Com RMI-IIOP as aplicações distribuídas podem ser desenvolvidas em
Java-RMI, beneficiando-se da interoperabilidade entre diferentes
linguagens e plataformas que o CORBA oferece
Desta forma as interfaces dos objetos remotos são descritas em Java
sem a necessidade de uma linguagem específica definida pela OMGIDL
Clientes RMI-IIOP podem se comunicar com servidores CORBA, assim
como servidores RMI-IIOP podem disponibilizar serviços para clientes
CORBA
RMI-IIOP suporta ambos protocolos; IIOP e JRMP
3
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Com RMI-IIOP
4
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Visão geral
REDE
5
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Java IDL
•
Tecnologia Java para objetos
distribuídos baseado na
arquitetura CORBA
Cliente
•
Permite desenvolver aplicações
e objetos em Java capazes de
se comunicar com outras
plataformas e linguagens
•
Java IDL faz o mapeamento
OMG IDL-Java
•
Java IDL é para programadores
CORBA
•
Utilizado para acessar os
recursos disponíveis CORBA
Servidor
ORB
ORB
IIOP
6
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Java IDL versus RMI-IIOP
7
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Matrix de Interoperabilidade
SERVIDOR
CLIENTE
RMI(JRMP)
RMI
(JRMP)
OK
RMI
(IIOP)
CORBA
OK
X
RMI(IIOP)
OK
OK
OK
CORBA
X
OK
OK
8
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Dual Export
•
RMI-IIOP suporta os protocolos JRMP e IIOP
•
Sem reescrever o código fonte de um objeto RMI-JRMP, o mesmo
poderá ser invocado por um cliente RMI-IIOP
•
Da mesma forma, um cliente CORBA poderá invocar um objeto no
servidor, mesmo que este objeto tenha sido implementado em RMIIIOP
9
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Arquitetura RMI-IIOP
Servidor RMI-IIOP
Cliente RMI-IIOP
Cliente RMI
AGREGADOR
STUB
ORB
Camada RMI
STUB
ORB
Camada RMI
IIOP
IIOP
JRMP
ORB
STUB
Cliente CORBA
10
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
ORB RunTime
11
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
RMI over IIOP Java to Java
12
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Java to C++
13
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Stub generator
14
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
IDL Generator
15
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Cenário Java/C++ via IIOP
IIOP
16
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Roteiro
•
•
•
•
•
•
•
•
•
•
•
•
Definir uma Interface remota – O server object deve declarar seus serviços via
interface remota. Deve ter a extensão org.omg.CORBA.Object
Opcionalmente poderá gerar um CORBA IDL
Compilar utilizando javac
Criar os IIOP Stubs
Implementar a interface remota
Compilar utilizando javac
Inicializar o servidor de nomes ou URL-based Naming Service
Inicializar os objetos no servidor
Escrever o código fonte no cliente
Localizar o objeto remoto via Servidor de Nomes
Compilar utilizando o javac
Inicializar o cliente
17
Instituto Presbiteriano Mackenzie
Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Roteiro – Interface RMI-IIOP
Definir a Interface remota
(.java)
opcional
java2IDL
javac
IDL2ir
(.class)
Stub
Cliente
Implementar
o cliente
(.java)
javac
(.class)
Start client
(.class)
java2IIOP
(.IDL)
Stub
Server
CORBA
Interface
Repository
(.class)
Implementar
a interface
(.java)
Inicializar o
Servidor de nomes
javac
(.class)
Start server objects
18
Download

RMI-IIOP