PDF de programación - Arquitecturas Distribuidas Práctica 6. Introducción a CORBA

Imágen de pdf Arquitecturas Distribuidas Práctica 6. Introducción a CORBA

Arquitecturas Distribuidas Práctica 6. Introducción a CORBAgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 6 de Marzo del 2018)
1.508 visualizaciones desde el 6 de Marzo del 2018
93,6 KB
15 paginas
Creado hace 15a (09/12/2008)
Arquitecturas Distribuidas

Práctica 6. Introducción a CORBA

1. Objetivos

Entender el funcionamiento básico de la Llamada a Procedimiento Remoto (LPR).

Desarrollar aplicaciones distribuidas sencillas basadas en CORBA.

2.

Introducción

El middleware debe proporcionar a los programadores métodos eficaces para la cons-
trucción de aplicaciones distribuidas. La base del middleware actual es un sistema de
LPR, que permite con una sintaxis similar a la de la función local, invocar funciones que
se ejecutan realmente en una máquina servidora.

Para lograr esta transparencia, cada vez que se llama a un PR, el ordenador cliente
ejecuta en realidad un “delegado del cliente” o stub, cuya misión es contactar con el ser-
vidor, y solicitar a un “delegado en el servidor” o skeleton la ejecución del procedimiento.
El “delegado en el servidor” llama a la implementación del procedimiento en el servidor,
recoge los resultados, y los transfiere de regreso al “delegado del cliente”. Finalmente, el
“delegado del cliente” devuelve el resultado al programa en ejecución. Un sistema de LPR
es tanto mejor, cuanto más se parezca la sintaxis de la llamada local a la de una llamada
remota equivalente.

En esta práctica se ilustra como trabajar usando CORBA y Java como lenguaje sopor-
te. Para ello, se realizará una presentación de las características del Lenguaje de Definición
de Interfaces (IDL, Interface Description Language) de CORBA, y se verán dos ejemplos
de aplicaciones desarrolladas con CORBA/Java. Finalmente, se proponen tres ejercicios.

3. “Hola Mundo” en CORBA

El primer ejemplo muestra el clásico “Hola Mundo” realizado con CORBA, donde se
declara e implementa una interfaz de CORBA con un sólo método: saludo. Cada vez
que sea invocado desde un cliente, saludo imprime un mensaje “Hola Mundo!” en
la pantalla del servidor. El apéndice A muestra la estructura del IDL para esta aplicación,
junto con el código del cliente y servidor. Observe que el fichero que contiene la clase

Servidor incluye también la clase holamundoImplementacion, que es el código
que se ejecuta en la llamada al LPR.

Para probar el ejemplo debe seguir estos pasos:

1. Crear los delegados Java, mediante el compilador idlj:

idlj -fall holamundo.idl

Esta llamada crea un directorio hola (mismo nombre que el módulo declarado en
el IDL), y dentro de este para cada interfaz declarada crea diversas clases de Java,
todas ellas asignadas al package hola (mismo nombre que el módulo declarado en
el IDL).

2. Compilar el código:

javac -d hola *.java hola/*.java

El parámetro -d indica al compilador que todos los .class generados deben
crearse dentro del directorio hola. En el resto de la llamada, se dice a javac
que debe usar en la compilación todos los .java del directorio actual, y todos los
del directorio hola.

3. Probar el ejemplo. Para ello, desde un shell, debe ejecutar el servidor.

java -cp .:hola hola.Servidor

Esta llamada lanza el servidor. Observe que se generá el archivo hola.ref que
contiene el IOR del objeto, usando la llamada al método object_to_string.
Este archivo sirve posteriormente al cliente para contactar con el servidor.
A continuación, desde otro shell en otro ordenador, debe lanzar el cliente:

java -cp .:hola hola.Cliente

El parámetro -cp .:hola redefine el PATH para poder ejecutar correctamente
el código Java. Tras iniciarse, el cliente lee hola.ref*, y crea a través del mé-
todo string_to_object una referencia a un objeto remoto generalizado, que
se convierte en un objeto del tipo holamundo con el método a través narrow.
Una vez obtenido un objeto holamundo específico, se puede llamar a su método
remoto saludo. Una vez ejecutado el cliente, compruebe que el mensaje “Hola
Mundo!” aparece en la ventana del servidor.

* Notese que cada usuario observa los mismos archivos desde cualquier ordenador, puesto que se está utili-
zando el sistema de ficheros distribuido NFS (que curiosamente, también se implementa con un mecanismo
de LPR).

2

3.1. Cuestiones

¿Qué sucedería si se lanzase el cliente antes que el servidor?

¿Qué sucedería si se lanzase el cliente antes del servidor y existiese un hola.ref
de un servidor previo?

¿Qué sucedería si se lanzasen varios servidores y un solo cliente?

Supongamos que se desea realizar una modificación de este ejemplo en la cual no
sea el servidor el que imprime un mensaje de bienvenida, sino el cliente el que
muestra en pantalla un mensaje de saludo, que le es transferido desde el servidor.
Realice las modificaciones adecuadas al IDL y a las clases Cliente y Servidor
para ello.

4. Calculadora remota con CORBA

En este ejercicio se muestra como crear una calculadora remota usando CORBA. Se
pretende crear dos modelos diferentes, uno para cálculo entero, y otro para cálculo real.
En CORBA, pueden usarse para este tipo de definición dos interfaces perteniencientes al
mismo módulo. En el apéndice B se muestra el IDL, y el cliente y servidor correspon-
dientes a este ejemplo. Como novedades, puede observar:

Para tratar el caso de la división por 0, la interfaz declara que los métodos de división
pueden lanzar una excepción CORBA, declarada como NumeroIncorrecto.
Como puede observar en la implementación, una excepción CORBA se traduce di-
rectamente a una excepción Java*, y se lanza del mismo modo (cláusula throw). La
generación de la excepción provoca la finalización inmediata del PR, y la recepción
de la misma en el cliente.

En la calculadora entera, la llamada al método de división, debe devolver junto con
el cociente el resto de la división. Para ello, se declara un parámetro adicional de tipo
out. Puesto que en Java no existe de modo nativo el concepto de copia/restauración,
es preciso manejar los parámetros de tipo out e inout a través de clases especiales
Holder. El ejemplo le muestra como usarlas.

4.1. Cuestiones

Pruebe el ejemplo anterior siguiendo los pasos del ejemplo del “Hola Mundo”.

Existen, además del presentado, otros métodos para devolver el resto en el ejemplo
de la calculadora. En concreto, debe cambiar el ejemplo para hacerlo de los dos
modos siguientes:

Devolviendo el resto en un parámetro de entrada, de tipo inout.

* En otros lenguajes sin concepto de excepción, como C, la generación y recepción de excepciones se
complica.

3

Devolviendo el resto y el cociente en una estructura, en el resultado.

Por último, amplíe la calculadora con otra interfaz para cálculo vectorial, con ope-
raciones de suma y resta de vectores y multiplicación escalar. En esta cuestión, debe
usar parámetros de tipo sequence (arrays en IDL).

5. Ejercicio: Acceso a archivos remotos con CORBA

En este ejercicio debe implementar cuatro PR para manejar archivos remotos, análo-
gos a sus equivalentes locales. Estas cuatro funciones deben permitir abrir, cerrar,
leer y escribir archivos que se encuentran físicamente en el ordenador remoto, des-
de el equipo local.

Una vez implementados estos PR, cree con ellos los siguientes programas:

1.

2.

rcat: Cat remoto, análogo en funcionamiento al cat en UNIX.

rpipe: Redirección de contenido a un archivo remoto. En UNIX la llamada:

programa > fichero

vuelca al archivo local fichero el contenido generado en stdout por programa.
Entonces, se pretende que:

programa | rpipe fichero_remoto

vuelque la salida del programa al fichero_remoto.

6. Ejercicio: Computación en paralelo con CORBA

Uno de los usos comunes de las AD es realizar cómputos en paralelo en
res. De este modo, se logra reducir el tiempo de ejecución a 
En este ejercicio realizará una implementación en paralelo del problema del viajante:
Considere una lista de ciudades, que un viajante debe recorrer, partiendo de una ciudad
origen a la que debe regresar. La distancia entre cada dos ciudades también se supone
conocida. Se desea determinar cual es la ruta óptima (aquella en la que la distancia reco-
*, es preciso entonces
computadores

ordenado-

 

.

iteraciones.

de iteraciones al algoritmo. Así, cada uno de los

rrida es menor). Puesto que el número de posibles rutas es

limitar a un número 
realiza 
del conjunto de ciudades ! "$#%#&#%')(+* , se eligen rutas aleatorias:

Aunque existen técnicas muy elaboradas que intentan resolver este problema, es posi-
ble intentar una busqueda “al azar” entre todas las soluciones posibles. Es decir, partiendo

(1)

* Ejemplo) 465879 , :<;>=?A@B5DCE

0/1-

,.-
999CF1GH77

#"#"#2-

.3)-

,

4





CONTROLADOR

COMPUTADORES

Equipo
1

HILO EJECUCION PRINCIPAL

H

H

H

(1)

(2)

Equipo
1

BUSQUEDA RUTA

RUTA PARCIAL 1





I
L
O
D
E
C
O
N
T
R
O
L
M



...





I
L
O
D
E
C
O
N
T
R
O
L
2







I
L
O
D
E
C
O
N
T
R
O
L
1



BUSQUEDA RUTA

RUTA PARCIAL 2

Equipo
2

(1)

(2)

...

(1)

(2)

Equipo
M

BUSQUEDA RUTA

RUTA PARCIAL M

RUTA GLOBAL = MEJOR RUTA PARCIAL

CORBA

(1) LLAMADA A PROCEDIMIENTO REMOTO
(2) RESPUESTA DE PROCEDIMIENTO REMOTO

Figura 1: Computo en paralelo del problema del viajante

y se calcula su coste asociado:





,0/

6#%#&#




.3A,

(2)

Si el coste es menor que el mínimo hallado hasta el momento, se actualiza el valor del
mínimo, y se prosigue. Obviamente, este tipo de algoritmos da una solución subóptima.
La ventaja es que este método es fácilmente paralelizable, basta con que cada ordena-
dor ejecute exactamente el mismo algoritmo y obtenga mínimos parciales. Al final de la
ejecución, se elige la mejor solución entre todas las soluciones parciales.

Para desarrollar este ejercicio en Java puede seguir un esquema similar al mostrado
en la figura 1. En ella, puede observar que el algoritmo está gobernado por un programa
“controlador”, que se divide en
hilos de ejecución, y desde cada uno de esos hilos
realiza invocaciones a otros procesos “computadores”, uno en cada máquina que colabora
en la resolución del algoritmo. En cada LPR, una máquina “computadora” recibe como
parámetros la lista de ciudades y el número de rutas que debe
  • Links de descarga
http://lwp-l.com/pdf9251

Comentarios de: Arquitecturas Distribuidas Práctica 6. Introducción a CORBA (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad