Practica 5 - Análisis de Sistemas

5
Pr´ actica 5. Objetos remotos. CORBA SCS, 2009/10 25 de noviembre de 2009 ´ Indice 1. Ejercicio 1: Compilaci´ on y uso de objetos remotos CORBA 1 1.1. Compilaci´ on ..................................................... 2 1.2. Ejecuci´ on ...................................................... 2 1.3. Tareas a realizar .................................................. 2 2. Ejercicio 2: Uso de retrollamadas (callback ) 2 2.1. Pasos a seguir .................................................... 3 2.2. Tareas a realizar .................................................. 4 3. Documentaci´ on a entregar 5 1. Ejercicio 1: Compilaci´on y uso de objetos remotos CORBA Se mostrar´ a el un ejemplo simple de creaci´ on de objetos remotos en CORBA. Se usar´ a el c´ odigo de ejemplo que implementa una ”calculadora remota” comentado en los apuntes de la asignatura. Descarga: corba1.tar.gz corba1.zip El c´ odigo de partida incluye: calculadora.idl: Especificaci´ on IDL del interfaz de la calculadora remota Define el m´ odulo ejemplo y el interfaz Calculadora ejemplo/*: Directorio con las clases e interfaces Java del paquete ejemplo generado con el compilador IDL (idlj -fall) CalculadoraImpl.java: Implementaci´ on (servant) del interfaz IDL Hereda de la clase CalculadoraPOA generada por el compilador idlj EjemploServidor.java: Proceso servidor simple que crea un objeto servant de tipo CalculadoraImpl, lo registra en el POA y almacena el IOR resultante en el servidor de nombres con el nombre ”Calculadora” EjempoCliente.java: Cliente simple que obtiene del servidor de nombres de CORBA una referencia a un objeto CORBA calculadora remota y ejecutas sus m´ etodos 1

description

Análisis de Sistemas

Transcript of Practica 5 - Análisis de Sistemas

Page 1: Practica 5 - Análisis de Sistemas

Practica 5. Objetos remotos. CORBA

SCS, 2009/10

25 de noviembre de 2009

Indice

1. Ejercicio 1: Compilacion y uso de objetos remotos CORBA 1

1.1. Compilacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2. Ejecucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3. Tareas a realizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2. Ejercicio 2: Uso de retrollamadas (callback) 2

2.1. Pasos a seguir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2. Tareas a realizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3. Documentacion a entregar 5

1. Ejercicio 1: Compilacion y uso de objetos remotos CORBA

Se mostrara el un ejemplo simple de creacion de objetos remotos en CORBA.

Se usara el codigo de ejemplo que implementa una ”calculadora remota” comentado en los apuntes de la asignatura.

Descarga: corba1.tar.gz

corba1.zip

El codigo de partida incluye:

calculadora.idl: Especificacion IDL del interfaz de la calculadora remota

• Define el modulo ejemplo y el interfaz Calculadora

ejemplo/*: Directorio con las clases e interfaces Java del paquete ejemplo generado con el compilador IDL (idlj-fall)

CalculadoraImpl.java: Implementacion (servant) del interfaz IDL

• Hereda de la clase CalculadoraPOA generada por el compilador idlj

EjemploServidor.java: Proceso servidor simple que crea un objeto servant de tipo CalculadoraImpl, lo registraen el POA y almacena el IOR resultante en el servidor de nombres con el nombre ”Calculadora”

EjempoCliente.java: Cliente simple que obtiene del servidor de nombres de CORBA una referencia a un objetoCORBA calculadora remota y ejecutas sus metodos

1

Page 2: Practica 5 - Análisis de Sistemas

1.1. Compilacion

1. Descomprimir el paquete.

$ tar xzvf corba1.tar.gz$ cd corba1

2. Compilar el interfaz IDL (ya esta hecho)

$ idlj -fall calculadora.idl

Comprobar los ficheros Java generados en el directorio ejemplo

3. Compilar el servant y el servidor

$ javac CalculadoraImpl.java$ javac EjemploServidor.java

4. Compilar el servidor

$ javac EjemploCliente.java

1.2. Ejecucion

Desde tres terminales distintos

1. Lanzar el demonio orbd (servicios basicos de CORBA, incluido el servidor de nombres) en un puerto no privilegiado

$ orbd -ORBInitialHost localhost -ORBInitialPort 1111

Queda a la espera en el puerto 1111

2. Lanzar el servidor (queda a la espera)

$ java EjemploServidor -ORBInitialHost localhost -ORBInitialPort 1111

3. Ejecutar el cliente

$ java EjemploCliente -ORBInitialHost localhost -ORBInitialPort 1111

1.3. Tareas a realizar

Se recomienda inspeccionar los ficheros Java proporcionados y comprobar su relacion con los ficheros generador automati-camente por el compilador idlj

Prestad especial atencion a las implementaciones del servidor y el cliente para ver la dinamica tıpica que se debe seguira la hora de crear y hacer disponibles objetos CORBA y a la hora de recuperarlos del servidor de nombres y lanzarinvocaciones sobre ellos.

2. Ejercicio 2: Uso de retrollamadas (callback)

Se vera un ejemplo del uso de retrollamadas entre objetos CORBA.

De forma general el mecanismo de retrollamadas (callback) permite que se pase un comprotamiento (codigo) comoargumento a otra pieza de codigo distinta

2

Page 3: Practica 5 - Análisis de Sistemas

El caso tıpico es el de un cliente que se registra en algun tipo de servidor que debe realizar alguna tarea, de modo queel servidor puede notificar al cliente (o clientes) cuando la operacion ha finalizado, ejecutando uno de sus metodos.

• El cliente funciona a la vez como cliente y servidor• Esquema de 2 fases: registro + notificacion

Nota: El uso de retrollamadas no es una caraterıstica exclusiva de CORBA (puede hacerse en cualquier programa)ni de los entornos orientados a objetos (aunque el uso de objetos lo simplifica)

Mas informacion: callbacks [Wikipedia]

En este ejercicio se vera el uso de retrollamadas en una sistema de subastas simulado.

Tenemos 2 tipos de objetos (en nuesto caso seran interfaces IDL de CORBA)

Subastador: gestiona la subasta de un producto

• El producto subastado tiene un nombre y un precio mınimo• La primera puja recibida que supere ese precio mınimo ganara la subasta• Existe un numero maximo de pujas.

Si no se alcanza antes el precio mınimo, al llegar a ese lımite se determina cual es la puja mas alta, que sera laganadora

• El Subastador recibe pujas, en forma de objetos Pujador mediante el metodo anadirPujador(), que se vanalmacenado en un vector [fase de registro]

• Una vez concluida la puja se notifica el resultado al ganador y a los perdedores incocando sus metodos notifi-carResultado() [fase de notificacion]

Pujador: representa la puja realiza por una persona ante el Subastador

• Almacena el nombre del pujador y el importe de su puja• Las pujas se le comunican al Subastador invocando su metodo anadirPuja()• El resultado de la puja sera comunicado mediante la invocacion del metodo notificarResultado() de cada una

de los objetos Pujador implicados (callback)

Se parte de un codigo de ejemplo donde el comportamiento de ambos tipos de objetos y las reglas de la subasta ya estanimplementadas. Se tratara de implementar un servidor y un cliente que creen los objetos CORBA Subastador y Pujadory invoquen sus metodos para similar la subasta.

Descarga: corba2.tar.gz corba2.zip

2.1. Pasos a seguir

Descomprimir el paquete.

$ tar xzvf corba2.tar.gz$ cd corba2

Contenido

• subasta.idl: Interfaces IDL para los objetos Subastador y Pujador• subasta/*: Directorio con las clases e interfaces Java del paquete subasts generado con el compilador IDL

(idlj -fall)• SubastadorImpl.java: Implementacion (servant) del interfaz IDL Subastador

◦ Hereda de la clase SubastadorPOA generada por el compilador idlj• PujadorImpl.java: Implementacion del objeto (servant) del interfaz IDL Pujador

◦ Hereda de la clase PujadorPOA generada por el compilador idlj• ServidorSubastas.java: Servidor vacıo• ClienteSubastas.java: Cliente vacıo

3

Page 4: Practica 5 - Análisis de Sistemas

2.2. Tareas a realizar

Se pide implementar un servidor y un cliente que hagan uso de los objetos CORBA implementados en una pequenasubasta.

Se subastara un ”peluche rojo”, con importe mınimo de 100 euros y que admite un maximo de 3 pujas

Habra 4 pujadores, por ejemplo:

• ”Pepe” que puja con 50 euros

• ”Luis” que puja con 95 euros

• ”Ana” que puja con 80 euros

• ”Pedro” que puja con 85 euros

Tomad como base los ejemplos de servidor y cliente vistos en el ejercicio 1.

Implementacion del servidor

1. Iniciar el ORB de CORBA

2. Instanciar un servant de la clase SubastadorImpl con los parametros que correspondan a la subasta del”peluche rojo”, registrarlo en el POA y obtener su IOR (referencia remota)

3. Registrar esa referencia en el servidor de nombres de CORBA con el nombre ”SubastadorPeluche”

4. Quedar a la espera

Implementacion del cliente

1. Iniciar el ORB de CORBA

2. Obtener del servidor de nombres la referencia asociada al nombre ”SubastadorPeluche” y hacer el narrow delobjeto CORBA generico a un objeto de tipo Subastador

3. Instanciar un servant de la clase PujadorImpl tomando los parametros que correspondan de la entrada estandar(metodos leerNombre(), leerCantidad()), registrarlo en el POA y obtener su IORs (referencia remota)

4. Una vez registrado, convertir (narrow) esa referencia a una referencia de tipo Pujador para pasarlas comoparametro en la invocacion del metodo anadirPuja() del objeto Subastador

Pasos para compilacion (una vez implementado):

1. Compilar el interfaz IDL (ya esta hecho)

$ idlj -fall subasta.idl

2. Compilar implementaciones y compilar el servidor

$ javac SubastadorImpl.java$ javac PujadorImpl.java$ javac ServidorSubastas.java

3. Compilar el cliente

$ javac ClienteSubastas.java

Pasos para ejecucion (una vez compilado):

1. Lanzar el demonio orbd (si no estaba lanzado ya)

$ orbd -ORBInitialHost localhost -ORBInitialPort 1111

4

Page 5: Practica 5 - Análisis de Sistemas

2. Lanzar el servidor en otro terminal (queda a la espera)

$ java ServidorSubastas -ORBInitialHost localhost -ORBInitialPort 1111

3. Ejecutar el cliente 4 veces en distintos terminales (creando las distintas pujas)

$ java ClienteSubastas -ORBInitialHost localhost -ORBInitialPort 1111

Tareas adicionales:

Se puede comprobar el funcionamiento de los objetos y las llamadas realizando pujas mas complejas, con maspujadores, etc.

3. Documentacion a entregar

Para el ejercicio 2 se entregaran impresos los framentos de codigo fuente con el cliente y el servidor implementados.

• Comentar en el codigo cada uno de los pasos realizados

Se debe incluir una pequena explicacion del flujo de llamadas entre objetos en el ejemplo de la puja del ”pelucherojo”, describiendo los parametros que se pasan y quien los recibe.

5