Notas de Aula - MAC 5755 - Sistemas Operacionais Distribuídos

Aula 7 - 29/8/2001

CORBA - Common Object Request Broker Architecture

Mais sobre o ORB (vimos um pouco na aula passada):

Serviços CORBA

Exemplo de Código de Cliente (versão crua)

     /* Este é um exemplo em C++. Como Java faz o gerenciamento da memória
      automaticamente, o código equivalente em Java acaba sendo mais simples.
   */
   #include "impressao.h"
   int main (int argc, char * argv[])
   {
     try
      {
        CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);
    CORBA::Object_var obj =
          orb->resolve_initial_references ("NameService");
    CosNaming::NamingContext_var ns =
          CosNaming::NamingContext::_narrow (obj);

    CosNaming::Name nome;
    nome.length (2);
    nome[1].id = CORBA::string_dup ("blocoA");
    nome[1].id = CORBA::string_dup ("lapis");
    Impressora imp = Impressora::_narrow(ns->lookup (nome));

    // Inserir código para ler arquivo do disco na variável meuArquivo
    imp->print (meuArquivo);
  }
 catch (const CORBA::Exception &e)
  {
    cerr << "Problemas com impressão: " << e << endl;
    exit (-1);
  }
 exit (0);
}

Exemplo de Código de Cliente (versão usando biblioteca de ajuda)

#include "impressao.h"
#include "ORBHelper.h"
#include "NSHelper.h"
int main (int argc, char * argv[])
 {
   try
    {
      MyORB orb = MyORB::init (argc, argv);
      MyNS  ns  = orb->getNS();
      Impressora imp = ns->lookup ("blocoA/lapis", Impressora);
      // Inserir código para ler arquivo do disco na variável meuArquivo
      imp->print (meuArquivo);
    }
   catch (const CORBA::Exception &e)
    {
      cerr << "Problemas com impressão: " << e << endl;
      exit (-1);
    }
   exit (0);
 }

Funcionalidades Adicionais

Definição de Interfaces Padrões para Aplicações



Próxima Aula
Aula Anterior
Página de MAC 5755
Página do Fabio
Página do DCC