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.
Antes de mais nada, devemos definir a interface IDL do servidor. Nesta atividade 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 tranferencia ( 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 geradas stubs e skeletons CORBA para serem usados pela aplicação.
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
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
Primeiramente, inicie o ORB com o comando:
> start orbd -ORBInitialPort 2500
Em seguida, inicie o servidor:
> start java banco.servidor -ORBInitialPort 2500
Finalmente, inicie o cliente com o comando:
> java cliente -ORBInitialPort 2500 -ORBInitialHost localhost
Tente também, com a ajuda de um colega, fazer a comunicação entre máquinas diferentes. Para isto, substitua 'localhost' pelo nome da máquina do outro grupo ao chamar o cliente.