|
Este es el primer tutorial (de 2) sobre el uso de CORBA, en especifico con la implementacion de omniORB, que esta disponible para C++ y Python.
Al igual que en los tutoriales pasados esta primera entrega es solo para dejar listo todo lo que se refiere a instalacion y hacer una pequeña prueba.
Una ultima cosa, si cuentas con Debian o las distribuciones basadas en esta dristribucion es probable que encuinetres un paquete de instalacion en los repositorios. Aunque siempre esta la posibilidad de hacerlo tu mismo y ver que es lo que esta sucediendo.
Instalacion:
Para instalar omniORB se necesitan los codigos fuentes que se pueden descargar en la pagina omniorb.sourceforge.net, en la seccion de "Downloads".
Primero debemos de extraer los codigos fuentes.
$ tar -xvzf omniORB-4.1.3.tar.gz
$ cd omniORB-4.1.3
Nota: Aqui existe una carpeta llamada "doc" donde encontraras la documentacion en distintos formatos [PDF, PostScript, HTML y LaTex].
Nos cambiamos a la carpeta omniORB-4.1.3 y creamos un directorio llamado "build", nos pasamos a ese directorio y ejecutamos la configuracion.
$ mkdir build
$ cd build
$ ../configuration --prefix=/path/to/libs/
Esto verificara que nuestro sistema tenga todo lo necesario para la compilacion de los binarios.
Nota: el parametro "--prefix" debe de apuntar correctamente al lugar donde se encuentran las bibliotecas en tu sistema [o distribucion].
Ojo: las distribuciones basadas en Red-Hat usan el directorio /usr/lib/, y las basadas en Debian usan /usr/local/lib/, aunque por ejemplo, openSUSE basada en Red-Hat usa el directorio como basado en Debian. Date una vuelta por estos directorios, alguno de los dos debe de estar vacio en tu sistema. Lo cual indica que ese no se utiliza.
Tip: /usr/local/lib/ es el que usa por default la omniORB, asi que no necesitas este parametro si ahi encuentras tus archivos lib.
Terminada la configuracion solo resta compilar.
$ make
E instalar, como "root"
$ su -
# make install
Para instalar omniORB para Python, hay que repetir los pasos anteriores solo cambiar los nombres omniORB-4.1.3.tar.gz por omniORBpy-3.3.tar.gz
Nota: Se necesita tener omniORB para C++ antes de compilar la version para Python.
Tip: En caso de haber instalado omniORB y omniORB para Python en los paths incorrectos solo basta copiarlos a donde tu distribucion los busca por default y funcionara, tal vez omniORB para Python sobre-escriba los "imports" por default de CORBA, que son los de ORBit, eso no causara problemas solo hay que tenerlo en cuenta para no mesclar el CORBA de ORBit con el de omniORB.
Puesta en marcha:
omniORB puede usar un archivo de configuracion ubicado en /etc/omniorb.cfg un ejemplo del archivo se encuentra en la carpeta omniORB-4.1.3 [que recien extrajimos].
Tambien necesita, forzosamente, de su servidor de nombres para funcionar, este lo iniciamos llamando a omniNames.
$ omniNames -start -logdir=/path/to/ &
El parametro "-start" debe de ser pasado solo la primera vez que se ejecute.
El parametro "-logdir" indica el directorio donde se creara el log del servidor, por default omniORB usa "/var/omninames/" asi que es buena idea crear ese directorio y dejar que use la direccion por default.
El & (ampersand) lo usamos para mandarlo a background y poder seguir usando el shell.
Nota: omniNames cumple los requisitos de un demonio asi que puedes agregar un shellscript en tu carpeta "init.d" para que se inicie junto con el sistema ademas de evitar cambiar a root para iniciarlo.
Ejecución:
En el siguiente link estan los codigos fuente, por el momento son muy basicos y solo hacen una especie de "Hola Mundo". Pero sirven para ver el funcionamiento y echarles una leida. En el siguiente tutorial hablaremos y explicaremos los codigos fuente mas a fondo.
http://elias.exofire.net/downloads/corba/CORBA-omniORB-Tutorial-01-src.tar.bz2
Ya que tenemos el cliente y el servidor comenzamos lanzando el Servidor [creado en Pyhton].
$ python Servidor.py -ORBInitRef ServicioSQL=corbaname::localhost
El parametro completo "-ORBInitRef ServicioSQL=corbaname::localhost" hace referencia a las referencias de los servicios. En este ejemplo indicamos que como referencia inicial tenemos un servicio llamado "ServicioSQL" en el host "localhost".
Nota: La documentacion contiene un capitulo completo sobre el nombramiento.
Solo falta lanzar el cliente [creado en C++]
$ ./Cliente -ORBInitRef ServicioSQL=corbaname::196.168.10.5
El parametro que pasamos es igual al de python, al menos en significado; le decimos al Cliente que se tiene un servicio llamado "ServicioSQL" en el host 196.168.10.5, que es la direccion IP donde se ejecuta el servidor.
Nota: La IP solo se usa como ejemplo.
|