Demo Blog

Como instalar e utilizar o omniOrb no Ubuntu

por Anônimo ,

Bem pessoal, eu estou escrevendo este tópico (meio diferente,rs) pois estou cursando no momento a disciplina Sistema Distribuídos e estou em um projeto que requer a utilização da tecnologia CORBA.
Mais especificamente, preciso criar um servidor em C++ e um cliente em Java, bem a implementação de um cliente Java e servidor Java pode ser encontrada aqui.


Bem agora vou explicar como instalar o omniOrb no Ubuntu.

Faça o download da última versão em download .

Descompacte em algum local de sua preferência no meu caso eu utilizei :

/home/valter/Corba/omniOrb/install/omniORB-4.1.4

Faça a instalação do pacote de desenvolvimento para Python, já que o idl do omniOrb (omniidl) utiliza o Python para fazer os arquivos .hh e .cc gerados, iremos discutir mais adiante.

sudo apt-get install python-dev

Importante : para instalar o omniOrb no Fedora instale o pacote de desenvolvimento do Python com o comando : # yum install python-devel
Depois pode fazer os mesmos passos que o descrito abaixo para o Ubuntu.

Depois de instalado do pacote de desenvolvedor para Python crie uma pasta 'build' dentro da sua pasta do omniOrb, ex :

$ cd /home/valter/Corba/omniOrb/install/omniORB-4.1.4/
$ mkdir build

É recomendável criar esta pasta para configurarmos a instalação pois assim poderemos ter várias instacias, caso dê errado a configuração, apague a pasta e repita o processo de criação da pasta build e então faça os seguintes passos novamente.
Agora vamos configurar a instalação do omniOrb no Ubuntu :

$ cd build

$ ../configure --prefix=

No meu caso ficou :

$ ../configure --prefix=/home/valter/Corba/omniOrb/program/

Com isso estamos definindo aonde será a nossa pasta de instação do omniOrb.

Depois compile com o comando 'make', ex:

$ make

Depois de compilar vamos instalar, executando o comando, é necessário logar como root neste comando :

$ sudo make install

Uma coisa deve ficar clara, a parte de configuração pode ser feita de forma automática (que foi como fizemos) ou pode ser feita manualmente, já que fizemos de forma automática teremos que ir aonde construímos o nosso omniOrb, ou seja o nosso /build, então precisamos definir as bibliotecas e executáveis necessários para o omniOrb, então vá para sua pasta /build/src
E dê o comando 'make export', ex :

$ make export

No meu caso ficou :

$ cd /home/valter/Corba/omniOrb/install/omniORB-4.1.4/build/src/
$ make export

Agora vamos configurar o serviço de nomes, essa parte é muito importante, um exemplo de serviço de nomes pode ser visto no arquivo 'sample.cfg', ele sera a base para o nosso serviço de nomes, que terá todas as suas variáveis de configuração no arquivo omniORB.cfg, então faça o seguinte:

Copie o arquivo 'sample.cfg' que fica localizado dentro da pasta aonde foi extraido o omniOrb, no meu caso como inicial ficou :

/home/valter/Corba/omniOrb/install/omniORB-4.1.4/sample.cfg

Copie o sample.cfg para alguma pasta de sua preferência, e renomeie este arquivo de sample.cfg para omniORB.cfg, como iremos rodar o nosso exemplo na mesma máquina é necessário informar isso no arquivo que acabamos de renomear, abra o omniORB.cfg e localize a linha :

InitRef = NameService=corbaname::my.host.name

altere para :

InitRef = NameService=corbaname::localhost

Feito isso agora precisamos informar as variáveis de ambiente que o omniOrb necessita, que são duas :

OMNIORB_CONFIG : Irá conter o caminho o nosso arquivo de configuração, o omniORB.cfg

OMNINAMES_LOGDIR : Irá conter o caminho para aonde deve ser gerado um arquivo log quando o serviço de nomes for iniciado

Para isso execute :

sudo gedit /etc/bash.bashrc

Acesse o arquivo como root com o comando acima e adicione as seguintes linhas (de acordo com o seu contexto é claro) :

export OMNIORB_CONFIG=/home/valter/Corba/omniOrb/program/omniORB.cfg

export OMNINAMES_LOGDIR=/home/valter/Corba/omniOrb/program

Lembrando que você deve alterar os respectitvas caminhos de acordo aonde esta localizado o arquivo omniORB.cfg e aonde você quer que seja criado o log quando o serviço de nomes for iniciado.

Depois disso é bom reiniciar o computador.

Bom, agora vamos construir e executar alguns exemplos apenas para verificarmos se esta correta o nosso ambiente omniOrb.
Os códigos de exemplos estão localizados dentro :

$cd /home/valter/Corba/omniOrb/install/omniORB-4.1.4/src/examples/

Aqui você verá várias pastas contem alguns exemplos de programas que utilizam o omniOrb, mas lembrando que nosso omniOrb foi construido na pasta /build, lembra ?
Então os exemplos que vamos executar estão em :

cd /home/valter/Corba/omniOrb/install/omniORB-4.1.4/build/src/examples/

Isso se dá pois configuramos o nosso omniOrb de forma automática, agora que estamos dentro da pasta examples digite o comando 'make':

$ make

Isso fará que todos os exemplos será compilados, agora entre na pasta echo, dentro dela execute os comandos :

$ ./eg1

Deverá ter a saída :
I said, "Hello!".
The Echo object replied, "Hello!".

Depois execute :
$ ./eg2_impl

Deverá ter a saída :
IOR:010000000d00000049444c3a4563686f3a312e3000000000010000000000000064000000010102000c0000003139322e3136382e322e3300c69700000e000000fe6e14e34c000012df000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100

Copie esta saída, sim copie TODA a saída.
O IOR é uma referência única ao objeto que queremos acessar através do nosso cliente, note que o terminal ficará aguardando algo, na verdade é o nosso servidor que esta esperando o cliente enviar o IOR para executar uma função que retorna uma string.

Agora iremos executar o cliente, para isso abra outro terminal e digite :
$ ./eg2_clt

No meu caso ficou :
./eg2_clt IOR:010000000d00000049444c3a4563686f3a312e3000000000010000000000000064000000010102000c0000003139322e3136382e322e3300c69700000e000000fe6e14e34c000012df000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100

Deverá ter como saída:
I said, "Hello!".
The Echo object replied, "Hello!".

Note que no terminal que teve como o comando ./eg2_impl teve como saída :
Upcall Hello!

Informando que recebeu uma chamada do cliente, agora vamos executar um cliente e servidor que estariam em máquinas separadas:

Agora precisamos iniciar o nosso serviço de nomes, então execute :

$ omniNames -start

No meu caso teve como saída :

valter@Eniac:~/Corba/omniOrb/install/omniORB-4.1.4/build/src/examples/echo$ omniNames -start

Tendo como saída no meu caso :

Tue Nov 16 21:42:45 2010:

Starting omniNames for the first time.
Wrote initial log file.
Read log file successfully.
Root context is IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e300000010000000000000070000000010102000c0000003139322e3136382e322e3300f90a00000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c000000010000000100010001000000010001050901010001000000090101000354544108000000f516e34c0100131c
Checkpointing Phase 1: Prepare.
Checkpointing Phase 2: Commit.
Checkpointing completed.

Note que será gerado dois arquivos aonde você definiu o caminho para a variável OMNINAMES_LOGDIR, que novamente, no meu caso ficou em :

/home/valter/Corba/omniOrb/program

Os arquivos gerados são : omninames-Eniac.bak, omninames-Eniac.log (no meu caso, o nome pode ser diferentes para cada computador)

Agora com o nosso serviço de nomes iniciado e rodando vamos abrir outro termianal e executarmos o nosso servidor :

$ ./eg3_impl

Deverá ter como saída um IOR :
IOR:010000000d00000049444c3a4563686f3a312e3000000000010000000000000064000000010102000c0000003139322e3136382e322e33003ed400000e000000fe7118e34c0000135e000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100

Agora vamos executar o cliente :

$ ./eg3_clt

Como saída, deverá ter :
I said, "Hello!".
The Echo object replied, "Hello!".

Prontinho,rs.

Há mais explicações sobre o omniOrb dentro da pasta ./doc e mais exemplos a serem executados também.

Bem espero que ajude a todos, pois deu um trabalhão descubrir isso tudo,rs.

Gostaria de agradecer ao Allan Vidal e ao Tiago Pasqualini.

Um forte abraço a todos.
3 comentários mais...

3 comentários

Postar um comentário

Procura algo?

Busque aqui para achar algo no site:

Caso não tenha achado o que procurava, me envie um email para que eu possa cuidar disso para você.

Paperblog :Os melhores artigos dos blogs