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