MAC 440/759 - Informações Operacionais

Para usar o VisiBroker na rede do IME voce deve saber:

. Que software está disponível e onde encontrá-lo
. Que máquinas usar
. Como preparar seu environment
. Como registrar seus servidores


Software

. VisiBroker for Java: Uma versão Solaris do VisiBroker para Java. Está em /usr/local/visibroker/, com documentação no formato pdf (Programmer's Guide, Reference Manual, Gatekeeper Guide, Installation and Administration Guide).
. JDK 1.1.4: O Java Development Kit que você usará com o VisiBroker for Java. Está em /usr/local/jdk1.1.4/, com documentação no formato html.
. VisiBroker for C++: Uma versão Solaris do VisiBroker para C++. Está em /usr/local/visibroker/, com documentação no formato pdf (Programmer's Guide, Reference Manual, Installation and Administration Guide).
. Sun C++: O compilador C++ que você usará com o VisiBroker para C++. Está em /usr/local/SUNWspro/, com documentação no formato html e man pages. Há também um diretório READMEs.
. Standards<ToolKit>: Biblioteca de classes C++ que implementa a Standard Template Library (STL), auto_ptrs, a classe string e as classes de exceção padronizadas pela ANSI/ISO. Está em /usr/local/StdC++Lib/, com documentação no formato html. Este toolkit não é requerido pelo VisiBroker para C++, mas ajuda bastante!
. Naming Service: Acompanha o VisiBroker for C++. Está em /usr/local/visibroker/, com documentação no formato pdf.
. Event Service: Acompanha o VisiBroker for C++. Está em /usr/local/visibroker/, com documentação no formato pdf.


Máquinas

. jaca
. rebutosa
. sushi
. fradim

Esses são alguns dos hosts que rodam Solaris 2.5.x (SunOS 5.5.x), o sistema operacional requirido pelos programas que voce vai usar.


Environment

. Para o VisiBroker:
  • Defina e exporte a variável
    	   VBROKER_ADM=/usr/local/visibroker/adm
    	   export VBROKER_ADM
    	   
  • Na variável PATH, inclua o diretório
    	   /usr/local/visibroker/bin
    	   
  • Para o VisiBroker for C++:

    Na variável LD_LIBRARY_PATH (que deve ser definida e exportada), inclua o diretório

    	   /usr/local/visibroker/lib
    	   
. Para o JDK:
  • Na variável PATH, inclua o diretório
    	   /usr/local/jdk1.1.4/bin
    	   
. Para o C++:
  • Na variável PATH, inclua o diretório
    	   /usr/local/SUNWspro/bin
    	   
  • Na variável MANPATH, inclua o diretório
    	   /usr/local/SUNWspro/man
    	   
  • Na variável LD_LIBRARY_PATH (que deve ser definida e exportada), inclua o diretório
    	   /usr/local/SUNWspro/lib
    	   
  • Defina a variável de licença
    	   LM_LICENSE_FILE=/usr/local/etc/sunpro.lic,1
    	   export LM_LICENSE_FILE
    	   
. Juntando tudo:

O trecho relevante do meu arquivo .bash_profile aparece abaixo.

SunOS=`uname -r | cut -c1`
 
if [ $SunOS -eq 4 ]
  then
    PATH=.:$HOME/bin:/usr/X11R5/bin:/usr/gnu/bin:/usr/local/bin:/bin:/usr/local:/usr/lang:/usr/ucb:/usr/bin:/usr/hosts:/usr/openwin/bin
    MANPATH=/usr/gnu/man:/gnu/man:/usr/X11R5/man:/usr/openwin/man:/usr/local/man:/usr/man:/usr/lang/man
    export PATH MANPATH
  else
    PATH=.:$HOME/bin:/usr/local/visibroker/bin:/usr/local/jdk1.1.4/bin:/opt/bin:/usr/dt/bin:/usr/X11R5/bin:/usr/local/SUNWspro/bin:/usr/ccs/bin:/usr/gnu/bin:/usr/local/bin:/usr/ucb:/usr/sbin:/usr/bin:/usr/hosts:/usr/openwin/bin:/etc:/usr/games
    MANPATH=/usr/local/SUNWspro/man:/usr/gnu/man:/usr/dt/man:/usr/X11R5/man:/usr/local/man:/usr/man:/usr/openwin/man
    LD_LIBRARY_PATH=/usr/local/visibroker/lib:/usr/local/SUNWspro/lib
    VBROKER_ADM=/usr/local/visibroker/adm
    LM_LICENSE_FILE=/usr/local/etc/sunpro.lic,1
    export PATH MANPATH LD_LIBRARY_PATH LM_LICENSE_FILE VBROKER_ADM
fi


Registro de Servidores

O registro de servidores é feito através do comando oadutil, que interaje com o oad, que por sua vez mantém o repositório de implementações (servidores CORBA) do VisiBroker. Depois de se familiarizar com a sintaxe e a utilização desse comando, descritas aqui, leia as instrucões abaixo, que se referem especificamente ao nosso ambiente no IME. Note que nem todo servidor precisa ser registrado através do oadutil. Isso só é necessário caso você queira que o servidor seja automaticamente ativado pelo oad.

. Registro de servidores Java:
Normalmente seria feito chamando oadutil reg com a opção -java nome_da_classe, mas isso pressupõe que os arquivos .class do servidor estão num diretório contido no CLASSPATH do oad. Como esse pressuposto é falso no nosso caso, não use -java nome_da_classe para registrar seus servidores java. Use -cpp arq_executável, fornecendo como executável o interpretador java, e passando como argumentos (opção -a argumento) o nome da classe que implementa o servidor e um CLASSPATH completo para o servidor.

Exemplo: Registrar um servidor Java que implementa um objeto cuja interface é Bank::AccountManager e cujo nome é reverbelBank. Esse objeto é implementado pela classe Server, que se encontra no diretório /home/reverbel/vbroker/java_examples/bank2.

    oadutil reg -i Bank::AccountManager -o reverbelBank \
                -cpp /usr/local/jdk1.1.4/bin/java \
                -a -classpath \
                -a /home/reverbel/vbroker/java_examples/bank2:/usr/local/visibroker/lib/vbjorb.jar:/usr/local/visibroker/lib/vbjapp.jar:/usr/local/visibroker/lib/vbjtools.jar:.:/usr/local/jdk1.1.4/classes:/usr/local/jdk1.1.4/lib/classes.jar:/usr/local/jdk1.1.4/lib/rt.jar:/usr/local/jdk1.1.4/lib/i18n.jar:/usr/local/jdk1.1.4/lib/classes.zip \
                -a Server
    
Note a longa seqüência de diretórios especificada no CLASSPATH.

. Registro de servidores C++:
Use -cpp arq_executável, fornecendo o caminho completo do arquivo executável do servidor e especificando completamente o valor do LD_LIBRARY_PATH.

Exemplo: Registrar um servidor C++ que implementa um objeto cuja interface é Bank::AccountManager e cujo nome é reverbelBank1. O arquivo executável do servidor é /home/reverbel/vbroker/examples/bank.

    oadutil reg -i Bank::AccountManager -o reverbelBank1 \
                -cpp /home/reverbel/vbroker/examples/bank \
                -e LD_LIBRARY_PATH=/usr/local/visibroker/lib:/usr/local/SUNWspro/lib
    
. Convenção para nomes de objetos:
O nome passado ao oadutil reg através da opção -o nome deve ter seu username como prefixo. Note que o mesmo nome deve aparecer:
  • no registro do servidor (oadutil reg ... -o nome ...);
  • na instanciação do "objeto principal" implementado pelo servidor (o nome deve passado ao construtor da superclasse "esqueleto" gerada pelo tradutor IDL);
  • nas chamadas a bind executadas pelos clientes.


HTML 3.2 Checked! Last modified: Tue Aug 25 14:25:31 EST 1998
Francisco Reverbel
reverbel at ime.usp.br