Você está na página 1de 19

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
 CalcIDL.idl
 CalculadoraImpl.java
 Servidor.java
 Lado Servidor
 Cliente.java

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 CalcIDL.java

 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

Você também pode gostar