SOD - Etapa 3 do projeto

Nesta etapa cada servidor tem uma lista de referências para os objetos Biblioteca implementados pelos outros servidores. Numa cenário realista, cada servidor registraria seu objeto Biblioteca com um serviço externo, como o trading service, e usaria esse serviço para obter referências para as outras Bibliotecas. Faremos uma simplificação aqui. Como a maioria (totalidade?) das equipes estão usando o MySQL, vamos guardar num banco de dados MySQL as IORs dos objetos Biblioteca de cada equipe.

. O banco de dados com as IORs das bibliotecas
. Convenções para registro das bibliotecas no BD
. Geração da IOR


O banco de dados com as IORs das bibliotecas

Criei um banco de dados "bibliotecas", com uma única tabela, cujo nome é também "bibliotecas" e cujas colunas são:
    +--------+-------------+------+-----+---------+-------+
    | Field  | Type        | Null | Key | Default | Extra |
    +--------+-------------+------+-----+---------+-------+
    | equipe | int(11)     |      | PRI | 0       |       |
    | nome   | varchar(30) |      | UNI |         |       |
    | cidade | varchar(30) |      |     |         |       |
    | estado | varchar(30) |      |     |         |       |
    | ior    | text        |      |     |         |       |
    +--------+-------------+------+-----+---------+-------+
Para "registrar sua biblioteca", cada equipe deve inserir uma linha nessa tabela. Embora todos voces tenham direitos de leitura e escrita sobre toda tabela, cada equipe ficará responsável pela linha correspondente à sua biblioteca, não devendo mexer nas outras linhas.


Convenções para registro das bibliotecas no BD

Ponha o número de sua equipe (considerando esta numeração de equipes) na coluna equipe.

Ponha na coluna ior uma referência "stringficada" para o objeto Biblioteca implementado pelo seu servidor.

Nas colunas nome, cidade e estado coloque os valores dos atributos correspondentes da sua biblioteca. Para que as bibliotecas virtuais com alcance CIDADE ou ESTADO não fiquem equivalentes a bibliotecas locais (nem a bibliotecas globais), escolha valores para cidade e estado conforme a convenção abaixo (o n é o número da equipe):


Geração da IOR

Para obter a IOR que voce registrará no banco de dados bibliotecas, implemente em seu servidor a opção "-i". Quando chamado com essa opção, o servidor deve apresentar na tela uma mensagem como
A IOR da biblioteca local é IOR:000000000000000b49444c3a44423a312e30000000000001000000000000004a000100000000000e3134332e3130372e34352e3536003c8c0000002e00504d43000000000000000b49444c3a44423a312e30000000000012726576657262656c44424d616e6167657200
e retornar imediatamente.

Gere essa referência chamando object_to_string sobre uma referência para a sua BibliotecaVirtual com alcance LOCAL. Para que consultas distribuídas não entrem em loop é importante que as IORs sejam de bibliotecas locais.

A referência para a biblioteca local deve ser persistente. Por isso não se esqueça de dar um nome ao objeto e de passar o nome ao construtor da superclasse ImplBase, bem como de registrar o objeto via oadutil reg.

Seu servidor consultará o banco de dados bibliotecas para obter IORs stringficadas para as outras bibliotecas. Sobre cada uma dessas IORs o seu servidor deve fazer uma chamada a string_to_object (que retorna uma referência para CORBA::Object), seguida de uma chamada a BibliotecaHelper.narrow (que retorna uma referência para Biblioteca).


Last modified: Thu Dec 3 16:02:24 EDT 1998
Francisco Reverbel
reverbel at ime.usp.br