UNIVERSIDADE FEDERAL DO ACRE
CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
CURSO DE SISTEMAS DE INFORMAÇÃO
CORBA RMI
Sistemas Distribuídos
Rafael Vasconcelos e Gilvan dos Santos
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Introdução
O que é:
Projeto de middleware que permite aplicações se
comunicarem umas com as outras através de
Invocação de Métodos Remotos (RMI).
Independe de:
Linguagem de Programação;
Hardware;
Software;
Redes.
Motivação:
Permitir que objetos distribuídos fossem
implementados em qualquer linguagem de
programação e pudessem se comunicar uns com os
outros.
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Introdução
Como:
Aplicações construídas a partir de objetos CORBA.
Este objetos implementam interfaces determinadas
pela IDL;
Clientes usam RMI para acessar os métodos do
objetos CORBA.
ORB (Agente de Requisição de objeto);
Componente de middleware que suporta RMI;
Ajudar um cliente a invocar um método em um
objeto.
Especificação CORBA Diferentes ORO’s
Várias Linguagens de
progra maçãoO
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
CORBA RMI
Usar CORBA RMI exige mais do programador;
Novos conceitos precisam ser compreendidos:
O modelo de objetos oferecidos pelo CORBA;
A linguagem de definição de interfaces e seu
mapeamento para a linguagem de
implementação.
Proxies são gerados na linguagem do cliente;
Esqueletos são gerados na linguagem do
servidor.
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
CORBA RMI
(Modelo de Objetos)
Os clientes não são necessariamente objetos;
O termo “Objeto CORBA”:
Usado para ser referir a objetos remotos.
Pode ser implementado em uma linguagem que
não seja orientada a objetos.
O conceito de classe não existe no CORBA.
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
CORBA RMI
(IDL)
IDL = Linguagem de Definição de Interface.
Especifica um nome e um conjunto de métodos
que os clientes podem solicitar;
Cada parâmetro é marcado como sendo
entrada, saída ou ambos, usando-se as
palavras chaves: in, out e inout.
Permite que exceções sejam definidas nas
interfaces e disparadas por seus métodos.
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Arquitetura CORBA
Projetada para suportar a função de um ORB.
Contém três componentes adicionais em
relação a RMI padrão:
Adaptador de Objeto;
Repositório de Implementações;
Repositório de Interface.
Fornece invocações estáticas e dinâmicas.
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Arquitetura CORBA
(Núcleo ORB)
Executa o protocolo requisição-resposta entre o
cliente e o servidor.
Sua função envolve:
Localizar um objeto remoto;
Invocar um método desse objeto, caso necessário, e
então comunicar a requisição do cliente para o
objeto, o qual executa e responde.
“A arquitetura CORBA define o ORB (Object
Request Broker) como um módulo intermediário
entre cliente e objeto, sendo responsável em
aceitar a requisição do cliente, enviá-la para o
objeto competente e, assim que disponível a
resposta, entregá-la para o cliente.”. (Wikipédia)
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Arquitetura CORBA
(Adaptador de Objeto)
Faz a ligação entre objetos CORBA com
interfaces IDL e as interfaces da linguagem
de programação das classes serventes
correspondente.
Tem as seguintes tarefas:
Cria referências de objeto remoto para objetos
CORBA;
Envia cada RMI, por meio de um esqueleto, para o
servente apropriado;
Ativa e desativa serventes.
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Arquitetura CORBA
(Adaptador de Objeto Portável)
Padrão CORBA 2.2
POA Oortable ObOect Odapter
É chamado portável porque
permite que aplicações e
serventes sejam executados
em O RO ’s produO idos por
diferentes
desenvolvedoresO
OadroniOação das classes de
esqueletos e das interações
entre o OOO e os serventesO
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Arquitetura CORBA
(Esqueletos e Stubs/Proxies)
Esqueletos:
Gerados na linguagem do servidor por um
compilador IDL;
Desempacota os argumentos nas mensagens de
requisição;
Empacota exceções e resultados nas mensagens
de resposta.
Stubs/Proxies:
Gerados na linguagem do cliente por um
compilador IDL;
Empacota os argumentos nas mensagens de
requisição;
Desempacota exceções
CORBA RMI e –resultados
– Sistemas Distribuídos nas
Sistemas de Informação
Arquitetura CORBA
(Repositório de Implementações)
Responsável por ativar servidores registrados
sob demanda e por localizar os servidores
que estão correntemente em execução.
Armazena um mapeamento dos nomes de
adaptadores de objeto para nomes de
caminho de arquivos contendo
implementações de objeto.
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Arquitetura CORBA
(Repositório de Interfaces)
Responsável por fornecer informações sobre as
interfaces IDL registradas para clientes e
servidores que as exigirem.
Pode fornecer nomes de métodos e, para cada
método, os nomes e tipos dos argumentos e
exceções.
Adiciona um recurso de reflexão no CORBA,
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Arquitetura CORBA
(Imagem)
Repositório de Implementações
Repositório de Interfaces
Adaptador de objeto
Requisição
Esqueleto
Programa cliente
Proxy paraNúcleo
A ORB Núcleo ORB Servente A
Resposta
Requisição
Esqueleto e despachante da classe de B
Objeto A Proxy para B MC MC Servente A
Resposta
MRR MRR
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Implementação
Lado Servidor
[Link]
[Link]
[Link]
Lado Servidor
[Link]
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Implementação
(Passos)
Passo 1 – Criar IDL
Passo 2 – Compilar IDL
Passo 3 – Implementar Interface
Passo 4 – Implementar Servidor
Passo 5 – Implementar Cliente
Passo 6 – Executar Aplicação
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Implementação
(Passo 1 – Criar IDL)
module Matematica{
exception DivisaoPorZero{
float arg1;
float arg2;
};
interface Calculadora{
float soma (in float arg1, in float arg2);
float divisao (in float arg1, in float arg2)
raises (DivisaoPorZero);
};
};
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Implementação
(Passo 2 – Compilar IDL)
Compilando a Interface:
Idlj –fall [Link]
Obs: por default apenas stubs clientes são
gerados. A opção –fall garante a geração de
skeletons também;
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação
Implementação
(Passo 3, 4, 5 e 6)
Passo 3 – Implementar Interface
Passo 4 – Implementar Servidor
Passo 5 – Implementar Cliente
Passo 6 – Executar Aplicação
Inicializar o Servidor de Nomes
% tnameserv
Inicializar o Servidor
% java Servidor
Inicializar o Cliente
% java Cliente
CORBA RMI – Sistemas Distribuídos – Sistemas de Informação