Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
1
RMI-IIOP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
2
Sem RMI-IIOP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
3
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 OMG-IDL
• 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
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
4
Com RMI-IIOP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
5
Visão geral
REDE
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
6
Java IDL
• Tecnologia Java para objetos distribuídos baseado na arquitetura CORBA
• 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
ORB ORB
IIOP
Cliente Servidor
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
7
Java IDL versus RMI-IIOP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
8
Matrix de Interoperabilidade
SERVIDOR
CLIENTE
RMI(JRMP)
RMI(IIOP)
CORBA
RMI(JRMP)
RMI(IIOP) CORBA
OK
OK
OK OK
OK
OKX
OK
X
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
9
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 RMI-IIOP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
10
Arquitetura RMI-IIOP
Cliente RMI-IIOP
Servidor RMI-IIOP
Cliente RMI
Cliente CORBA
AGREGADOR
Camada RMIORB
Camada RMI
STUB
ORB
STUB
ORB
STUB
IIOP
IIOPJRMP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
11
ORB RunTime
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
12
RMI over IIOP Java to Java
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
13
Java to C++
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
14
Stub generator
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
15
IDL Generator
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
16
Cenário Java/C++ via IIOP
IIOP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
17
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
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos
18
Definir a Interface remota
javac
java2IIOPStub
ClienteStub
Server
Start client
Start server objects
javac
Implementaro cliente
Implementara interface
javac
java2IDL
IDL2ir
CORBAInterfaceRepository
opcional
Roteiro – Interface RMI-IIOP
(.java)
(.class)
(.class) (.class)
(.class)
(.class)
(.java)
(.java)
(.IDL)
Inicializar oServidor de nomes