INE5418
Aula Prática - CORBA

Prof. Frank Siqueira

Departamento de Informática e Estatística
Universidade Federal de Santa Catarina
 

INE5418 | Descrição | Roteiro | Prática | Dúvidas


Descrição

Essa atividade mostrará como utilizar o CORBA para efetuar a comunicação entre objetos distribuídos.  


Roteiro

Especificando a Interface do Servidor

Suponha a interface do servidor de um banco, que deve ser acessado tanto pelo sistema de auto-atendimento pela Internet quanto pelos caixas eletrônicos.

Primeiramente, devemos definir a interface IDL do servidor. Iremos utilizar a seguinte interface:

module banco {
 
  typedef unsigned long conta; 
 
  typedef double valor; 
  
  const string nome_banco = "UFSC";
  const string moeda = "R$"; 
 
  enum aplicacao { poupanca, fundo_acoes, renda_fixa };
 
  struct transacao { 
    unsigned long data; // Formato: ddmmyyyy
    string<12>    descricao; 
    valor         quantia; 
  };
 
  typedef sequence <transacao> transacoes; 
 
  exception conta_inval { conta c; };
  exception saldo_insuf { valor saldo; };
 
  interface auto_atendimento {
 
    readonly attribute string boas_vindas;
 
    valor saldo ( in conta c ) 
          raises ( conta_inval );
 
    void extrato ( in conta c, 
         out transacoes t, out valor saldo ) 
         raises ( conta_inval );  
 
    void transferencia ( in conta origem, 
         in conta destino, in valor v )
         raises ( conta_inval, saldo_insuf );  
 
    void investimento ( in conta c, 
         in aplicacao apl, in valor v ) 
         raises ( conta_inval, saldo_insuf ); 
  };
 
  interface caixa_eletronico: auto_atendimento {
 
    void saque ( in conta c, in valor v ) 
         raises ( conta_inval, saldo_insuf );
 
  }; 
 
};

Salve a descrição de interface acima no arquivo Banco.idl e a compile com o comando:

idlj -fall Banco.idl

Note que foram gerados diversos arquivos no diretório banco, dentre os quais estão as stubs e skeletons que serão usados pela aplicação e classes que correspondem aos tipos de dados e exceções definidos no arquivo IDL.

Implementando o código do Servidor

Agora devemos implementar o servidor. O arquivo auto_atendimentoImpl.java contém uma implementação limitada dos métodos especificados na interface de auto-atendimento. O arquivo servidor.java contém o código necessário para instanciar o servidor e registrá-lo no serviço de nomes. Salve estes dois arquivos no diretório banco criado pelo compilador IDL.

Compile todos os arquivos do servidor com o comando:

javac banco/*.java
 

Implementando o código do Cliente

O cliente CORBA (arquivo cliente.java) localiza o servidor e faz chamadas aos seus métodos.

Compile o cliente com o comando:

javac cliente.java
 

Executando a Aplicação no Windows

Primeiramente, inicie o ORB com o comando:

> start orbd

Em seguida, inicie o servidor:

> start java banco.servidor

Finalmente, inicie o cliente com o comando:

> java cliente

Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:

> java cliente -ORBInitialHost <IP do computador>

Obs.: as restrições de segurança impostas na rede do laboratório não permitem essa forma de comunicação entre máquinas.

Executando a Aplicação no Linux

 

Primeiramente, inicie o ORB com o comando:

 

> orbd -ORBInitialPort 2500 &

 

Em seguida, inicie o servidor em um terminal:

 

> java banco.servidor -ORBInitialPort 2500

 

Finalmente, inicie o cliente executando em outro terminal o comando:

 

> java cliente -ORBInitialPort 2500

 

Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:

 

> java cliente -ORBInitialHost <IP do computador> -ORBInitialPort 2500

 

Obs.: as restrições de segurança impostas na rede do laboratório não permitem essa forma de comunicação entre máquinas.


Prática

Utilize o restante da aula para implementar os métodos do sistema de auto-atendimento do banco.

 

Modifique também o código do cliente para utilizar todos os métodos implementados pelo servidor. O cliente pode ser uma aplicação de linha de comando ou uma aplicação gráfica, que efetue o interfaceamento com o usuário e invoque os métodos implementados pelo servidor.

 


Dúvidas?

Atendimento aos Alunos

  • Horário: Terças-feiras das 16:20 às 18:00.
  • Local: Prédio do INE - Sala 305.

E-Mail

f r a n k @ i n f . u f s c . b r


Mantida por Frank Siqueira. Atualizada em 16/04/2011.