Practica 5 - Análisis de Sistemas



Comments



Description

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. 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 1. 1 5 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 tar. Compilar el servant y el servidor $ javac CalculadoraImpl. Tareas a realizar Se recomienda inspeccionar los ficheros Java proporcionados y comprobar su relaci´on con los ficheros generador autom´ aticamente por el compilador idlj Prestad especial atenci´ on a las implementaciones del servidor y el cliente para ver la din´amica t´ıpica que se debe seguir a la hora de crear y hacer disponibles objetos CORBA y a la hora de recuperarlos del servidor de nombres y lanzar invocaciones sobre ellos. Compilar el servidor $ javac EjemploCliente. incluido el servidor de nombres) en un puerto no privilegiado $ orbd -ORBInitialHost localhost -ORBInitialPort 1111 Queda a la espera en el puerto 1111 2. 2.java 1. Lanzar el demonio orbd (servicios b´ asicos de CORBA.1. Compilar el interfaz IDL (ya est´ a hecho) $ idlj -fall calculadora.java 4.gz $ cd corba1 2. Compilaci´ on 1.java $ javac EjemploServidor. De forma general el mecanismo de retrollamadas (callback ) permite que se pase un comprotamiento (c´odigo) como argumento a otra pieza de c´ odigo distinta 2 . Ejercicio 2: Uso de retrollamadas (callback ) Se ver´ a un ejemplo del uso de retrollamadas entre objetos CORBA. Descomprimir el paquete. Lanzar el servidor (queda a la espera) $ java EjemploServidor -ORBInitialHost localhost -ORBInitialPort 1111 3.idl Comprobar los ficheros Java generados en el directorio ejemplo 3. Ejecuci´ on Desde tres terminales distintos 1. Ejecutar el cliente $ java EjemploCliente -ORBInitialHost localhost -ORBInitialPort 1111 1.2.1. $ tar xzvf corba1.3. zip 2. que ser´ a la ganadora • El Subastador recibe pujas. Descarga: corba2.gz $ cd corba2 Contenido • subasta.El caso t´ıpico es el de un cliente que se registra en alg´ un tipo de servidor que debe realizar alguna tarea.tar. • El cliente funciona a la vez como cliente y servidor • Esquema de 2 fases: registro + notificaci´on 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) M´ as informaci´ on: callbacks [Wikipedia] En este ejercicio se ver´ a el uso de retrollamadas en una sistema de subastas simulado. que se van almacenado en un vector [fase de registro] • Una vez concluida la puja se notifica el resultado al ganador y a los perdedores incocando sus m´etodos notificarResultado() [fase de notificaci´ on] 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 m´etodo anadirPuja() • El resultado de la puja ser´ a comunicado mediante la invocaci´on del m´etodo notificarResultado() de cada una de los objetos Pujador implicados (callback ) Se parte de un c´ odigo de ejemplo donde el comportamiento de ambos tipos de objetos y las reglas de la subasta ya est´ an implementadas. de modo que el servidor puede notificar al cliente (o clientes) cuando la operaci´on ha finalizado. Pasos a seguir Descomprimir el paquete.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: Cliente vac´ıo 3 .tar. $ tar xzvf corba2. ejecutando uno de sus m´etodos. Si no se alcanza antes el precio m´ınimo. en forma de objetos Pujador mediante el m´etodo anadirPujador().gz corba2.java: Implementaci´ on del objeto (servant) del interfaz IDL Pujador ◦ Hereda de la clase PujadorPOA generada por el compilador idlj • ServidorSubastas. Tenemos 2 tipos de objetos (en nuesto caso ser´ an 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 ganar´a la subasta • Existe un n´ umero m´ aximo de pujas.1. Se tratar´ a de implementar un servidor y un cliente que creen los objetos CORBA Subastador y Pujador y invoquen sus m´etodos para similar la subasta.java: Servidor vac´ıo • ClienteSubastas.java: Implementaci´ on (servant) del interfaz IDL Subastador ◦ Hereda de la clase SubastadorPOA generada por el compilador idlj • PujadorImpl. al llegar a ese l´ımite se determina c´ ual es la puja m´as alta. Se subastar´ a un ”peluche rojo”. Implementaci´ on del servidor 1. registrarlo en el POA y obtener su IORs (referencia remota) 4.java $ javac PujadorImpl. registrarlo en el POA y obtener su IOR (referencia remota) 3.2.idl 2. convertir (narrow ) esa referencia a una referencia de tipo Pujador para pas´ arlas como par´ ametro en la invocaci´ on del m´etodo anadirPuja() del objeto Subastador Pasos para compilaci´ on (una vez implementado): 1. Iniciar el ORB de CORBA 2.2. Obtener del servidor de nombres la referencia asociada al nombre ”SubastadorPeluche” y hacer el narrow del objeto CORBA gen´erico a un objeto de tipo Subastador 3. Tareas a realizar Se pide implementar un servidor y un cliente que hagan uso de los objetos CORBA implementados en una peque˜ na subasta. Instanciar un servant de la clase PujadorImpl tomando los par´ametros que correspondan de la entrada est´ andar (m´etodos leerNombre().java Pasos para ejecuci´ on (una vez compilado): 1. Instanciar un servant de la clase SubastadorImpl con los par´ametros que correspondan a la subasta del ”peluche rojo”. Quedar a la espera Implementaci´ on del cliente 1.java 3. 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. Compilar implementaciones y compilar el servidor $ javac SubastadorImpl. Una vez registrado. Compilar el cliente $ javac ClienteSubastas.java $ javac ServidorSubastas. Iniciar el ORB de CORBA 2. Registrar esa referencia en el servidor de nombres de CORBA con el nombre ”SubastadorPeluche” 4. con importe m´ınimo de 100 euros y que admite un m´aximo de 3 pujas Habr´ a 4 pujadores. Compilar el interfaz IDL (ya est´ a hecho) $ idlj -fall subasta. leerCantidad()). Lanzar el demonio orbd (si no estaba lanzado ya) $ orbd -ORBInitialHost localhost -ORBInitialPort 1111 4 . etc. describiendo los par´ ametros que se pasan y quien los recibe. 5 . Lanzar el servidor en otro terminal (queda a la espera) $ java ServidorSubastas -ORBInitialHost localhost -ORBInitialPort 1111 3. con m´ as pujadores. 3. Documentaci´ on a entregar Para el ejercicio 2 se entregar´ an impresos los framentos de c´odigo fuente con el cliente y el servidor implementados. 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 m´as complejas. • Comentar en el c´ odigo cada uno de los pasos realizados Se debe incluir una peque˜ na explicaci´ on del flujo de llamadas entre objetos en el ejemplo de la puja del ”peluche rojo”.2.
Copyright © 2024 DOKUMEN.SITE Inc.