RMI-IIOP
Sem RMI-IIOP
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
Com RMI-IIOP
Visão geral REDE
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 Cliente Servidor ORB ORB IIOP
Java IDL versus RMI-IIOP
Matrix de Interoperabilidade SERVIDOR RMI (JRMP) RMI (IIOP) CORBA CLIENTE X RMI(JRMP) OK OK RMI(IIOP) OK OK OK CORBA X OK OK
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
Arquitetura RMI-IIOP Servidor RMI-IIOP Cliente RMI-IIOP Cliente RMI AGREGADOR STUB ORB Camada RMI STUB ORB Camada RMI IIOP JRMP IIOP ORB Cliente CORBA STUB
ORB RunTime
RMI over IIOP Java to Java
Java to C++
Stub generator
IDL Generator
Cenário Java/C++ via IIOP
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 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
Roteiro – Interface RMI-IIOP Definir a Interface remota (.java) opcional java2IDL (.IDL) javac IDL2ir (.class) Stub Cliente Stub Server java2IIOP CORBA Interface Repository Implementar o cliente (.class) (.class) (.java) Implementar a interface javac Inicializar o Servidor de nomes (.java) javac (.class) Start client (.class) Start server objects