Una aplicación sencilla con CORBA y Java
|
|
|
- Xavier Lozano Correa
- hace 8 años
- Vistas:
Transcripción
1 Una aplicación sencilla con CORBA y Java Sistemas Distribuidos: Programación con CORBA Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense Madrid Facultad de Informática, curso
2 Construcción de una aplicación CORBA Especificación IDL Compilación IDL Implementación del Cliente Implementación de la interfaz Implementación del Servidor Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 2 Toda aplicación CORBA empieza con la definición de las interfaces de los objetos que pueden distribuirse. Para ello se utiliza el lenguaje IDL. Esta especificación establece un contrato entre cliente y servidor: qué servicios (operaciones) ofrece el servidor al cliente. A partir del archivo con la especificación IDL de las interfaces, se pueden implementar por separado (e incluso en distintos lenguajes de programación y sobre plataformas diferentes, tanto producto CORBA como sistema operativo y hardware) el cliente y el servidor. Tanto cliente como servidor normalmente usan el método de invocación estático, y compilarán el IDL para utilizar stub y skeleton, respectivamente. Al programador del cliente le basta con realizar un programa que obtenga las referencias de los objetos CORBA que necesite, y que invoque las operaciones oportunas. El programador del servidor tiene que escribir la implementación de la clase del objeto de implementación y el programa del servidor donde se dará vida a los objetos de implementación. Veremos a continuación todos estos pasos.
3 Descripción de la aplicación Se trata de implementar un programa cliente/servidor muy sencillo: un Contador distribuido. Los clientes pueden consultar y modificar el valor del contador. También hay operaciones para incrementar y decrementar en una unidad el valor del contador. La aplicación muestra el modo de invocación estático (stubs y skeletons generados por el compilador IDL) El programa cliente invoca 1000 veces la operación incrementar sobre el contador y al final muestra el tiempo medio de respuesta Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 3 El objetivo de esta aplicación es dar una visión completa de la utilización de CORBA desde el punto de vista del programador. La aplicación es extremadamente sencilla para no perderse en los detalles de la misma. Se muestra el modo de invocación estático por ser el utilizado habitualmente. La aplicación permite también explorar la eficiencia de la invocación de operaciones en objetos CORBA locales o remotos.
4 Arquitectura de la aplicación Cliente Servidor main() main() crea Objeto ImplContador usa Contador Helper Stub Contador Skeleton Contador ORB Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 4 El cliente usa el ContadorHelper para acceder a funciones del ORB (por ejemplo, conseguir la referencia del objeto remoto) y el StubContador para invocar las operaciones en el objeto remoto. El servidor usa el SkeletonContador para recibir las invocaciones y devolver los resultados.
5 Especificación de la interfaz con IDL // // contador.idl module PrimerEjemplo { interface Contador { attribute long valor; ; ; long inc(); long dec(); ; ; Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 5 El ejemplo muestra una interfaz muy sencilla, llamada Contador, que se define dentro del módulo EjemploContador (un módulo en IDL es similar al package en Java). La interfaz define dos operaciones (sin parámetros, y que devuelven un entero long que es el equivalente al int en Java), inc() y dec(). El atributo, valor, equivale a dos operaciones, una de modificación del valor: valor(long), y otra de consulta del valor: long valor(). Obsérvese que en la interfaz no hay constructor. Cómo un cliente puede crear y destruir objetos remotos lo veremos más adelante al estudiar el patrón de diseño Factoría.
6 Compilación de la interfaz contador.idl > jidl contador.idl Cliente _ContadorStub ContadorHolder ContadorHelper Compilador IDL a Java <<interface>> Contador <<interface>> ContadorOperations Servidor ContadorPOA Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 6 El compilador de IDL a Java genera dos interfaces Java y varias clases: PrimerEjemplo.Contador: es la interfaz de IDL en Java. PrimerEjemplo._ContadorStub: clase Java que implementa el stub de la interfaz Contador en el lado del cliente. PrimerEjemplo.ContadorHelper: clase Java que proporciona métodos útiles para los clientes de objetos Contador. Por ejemplo los métodos bind() para obtener una referencia a un objeto Contador, y narrow() para convertir referencias a objetos CORBA al tipo Contador. PrimerEjemplo.ContadorHolder: clase Java que se utiliza si hiciera falta pasar objetos Contador como parámetros out o inout en operaciones de otra interfaz. PrimerEjemplo. ContadorPOA: clase abstracta que sirve de base para la clase que tiene el código que implementa las operaciones de la interfaz. PrimerEjemplo.ContadorOperations: es la interfaz de IDL en Java que deben satisfacer los objetos en los que delegan los objetos de la clase _tie_.
7 Código generado por el compilador IDL: Contador.java y ContadorOperations.java package PrimerEjemplo; // // IDL:PrimerEjemplo/Contador:1.0 public interface Contador extends ContadorOperations, org.omg.corba.object, org.omg.corba.portable.idlentity { package PrimerEjemplo; public interface ContadorOperations { int int valor(); void voidvalor(int val); val); int int inc(); inc(); int int dec(); Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 7 Obsérvese que en la traducción de IDL a Java: Cada operación se corresponde con un método Java Cada atributo se corresponde con dos métodos: uno para leer y otro para modificar el valor del atributo La clase que implementa la interfaz en Java debe implementar los métodos descritos en esta interfaz Java.
8 Código generado por el compilador IDL: _ContadorStub.java package PrimerEjemplo; public class class _ContadorStub extends org.omg.corba.portable.objectimpl implements Contador { // // public int intvalor() { /* /*......*/ */ public void voidvalor(int value){ /* /*......*/ public int int inc() inc() { /* /*......*/ public int int dec() dec() { /* /*......*/ // // Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 8 Para cada método de la interfaz el código del stub se encarga de hacer el marshalling de los parámetros (esto es, serializarlos), y pasárselos al ORB. Obsérvese que el atributo valor se plasma en dos operaciones, y que el resultado long de las operaciones inc() y dec() se traduce en Java a int. Además, cada operación de la interfaz se define como public. Aparte, esta clase define su propio constructor, y algunos otros métodos de apoyo (como ejercicio, compilar el ejemplo y ver el código de las clases resultantes).
9 Código generado por el compilador IDL: ContadorHelper.java package PrimerEjemplo; final final public class class ContadorHelper { public static static void void insert(org.omg.corba.any any, any, Contador val) val) { // // public static staticcontador extract(org.omg.corba.any any) any) { // // // // public static static Contador narrow (org.omg.corba.object val) val) { //... //... Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 9 La clase Helper tiene métodos estáticos que pueden ser útiles para el programador del cliente y el servidor. El método narrow() es estándar y sirve para convertir un objeto de tipo CORBA::Object a uno del tipo de la clase específica, en este caso Contador.
10 Código generado por el compilador IDL: ContadorHolder.java package PrimerEjemplo; final final public class class ContadorHolder implements org org.omg.omg.corba.portable.streamable { publiccontador value; public ContadorHolder() { public ContadorHolder(Contador initial) { value value = initial; //... //... Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 10 Las clases Holder sirven para soportar el paso de parámetros out e inout, que se describen en un tema posterior.
11 Código generado por el compilador IDL: ContadorPOA.java package PrimerEjemplo; public abstract class class ContadorPOA extends org.omg.portableserver.servant implements org org.omg.omg.corba.portable.invokehandler, ContadorOperations { // // public org.omg.corba.portable.outputstream _invoke (String opname, org.omg.corba.portable.inputstream in, in, org.omg.corba.portable.responsehandler handler) { // // Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 11 Los métodos de la interfaz se dejan como abstractos para que los implemente el programador en la clase que define a partir de ésta.
12 Programación del Cliente El Cliente puede ser una clase Java con método main() o un applet. En general un Cliente realiza las siguientes funciones: 1) Inicializar el ORB 2) Obtener la referencia a un objeto CORBA que implemente la interfaz deseada (en este ejemplo, Contador) Usando el método string_to_object() Usando el servicio de Nombres (solución estándar) 3) Utilizar el objeto CORBA Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 12 Los pasos que realiza el cliente son: 1) Consigue una referencia a un objeto ORB (interfaz de las funciones del ORB). 2) Antes de usar un objeto CORBA es necesario tener su referencia (con los objetos Java es igual, hay que conseguir la referencia del objeto Java antes de poder usarlo. En CORBA se obtiene la referencia al objeto CORBA, y lo que ocurre entonces es que se obtiene una referencia al objeto proxy que implementa el stub de la interfaz del objeto remoto) Hay varias maneras de hacer esto, lo normal usando el servicio de nombres o como resultado de una operación. El más sencillo (aunque no es lo habitual) es usar el método proporcionado por el ORB string_to_object(), que será utilizado en este ejemplo. 3) Una vez que se ha obtenido su referencia, el objeto CORBA se puede utilizar como cualquier otro objeto Java (en realidad se usa el proxy que es un objeto Java). Para implementar el cliente como un applet el procedimiento es similar. Se verá con más detalle en el tema dedicado a programación de clientes CORBA.
13 ClienteContador.java (1) package PrimerEjemplo; public class class ClienteContador { public static static void void main(string args[]) { java.util.properties props props = System.getProperties(); props.put("org.omg.corba.orbclass", "com.ooc.corba.orb"); props.put("org.omg.corba.orbsingletonclass", "com.ooc.corba.orbsingleton"); try try { // // Inicializa el el ORB ORB org.omg.corba.orb orb orb = org.omg.corba.orb.init(args, props); Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 13 1) Inicializar el ORB siempre se hace igual, llamando al método init(), método estático de la clase ORB y que devuelve una referencia al objeto que soporta la funcionalidad del ORB.
14 ClienteContador.java (2) // // Consigue la la referencia al al objeto Contador org.omg.corba.object obj obj = null; null; try try { String reffile = "Contador.ref"; java.io.bufferedreader in in = new newjava.io.bufferedreader(new java.io.filereader(reffile)); String ref ref = in.readline(); obj obj = orb.string_to_object(ref); catch(java.io.ioexception ex) ex) { ex.printstacktrace(); System.exit(1); Contador c = ContadorHelper.narrow(obj); Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 14 2) En este ejemplo, para conseguir una referencia al objeto que implementa la interfaz Contador se usa la solución del método string_to_object() que proporciona el ORB. Para ello se requiere que previamente se haya dejado en un fichero (o en un URL) la referencia al objeto contador al que se quiere acceder (esto lo habría hecho el servidor).
15 ClienteContador.java (3) // // Utiliza el el contador: System.out.println("El Contador 1 tiene tiene el el valor: "+c.valor()); // // Llama a la la operacion inc() inc() veces veces System.out.println("Incrementando el el contador..."); long long t_inicial = System.currentTimeMillis(); for for (int (inti i = 0 ;; i i < ;; i++ i++ )) c.inc(); // // Calcula el el tiempo final final e imprime las las estadisticas long long t_final = System.currentTimeMillis(); System.out.println("Tiempo medio de de invocacion = + ((t_final --t_inicial)/1000f) + "" msegs"); System.out.println("Valor final final del del contador = "" + c.valor()); catch(org.omg.corba.systemexception e) e) {{ System.err.println( CORBA System Exception: " + e); e); Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 15 3) El objeto Contador se puede usar como cualquier objeto Java. Este programa ejemplo, después de incrementar 1000 veces el contador, lista el tiempo medio dedicado en la invocación a la operación inc(). Al ejecutarse se puede comparar el resultado cuando cliente y servidor están en la misma o en distintas máquinas, o se puede probar a ejecutar varios clientes a la vez.
16 Compilación del cliente Para compilar el cliente el CLASSPATH tiene que indicar dónde encontrar las clases del ORB y las generadas por el compilador de IDL > javac d. ClienteContador.java Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 16 Hace falta tener las variables de entorno PATH y CLASSPATH correctamente inicializadas, por ejemplo en Windows: set path=c:\orbacus\bin;%path% set ORBACUS=C:\ORBacus\JOB-4.0.4\lib set CLASSPATH=%ORBACUS%\OB.jar;%ORBACUS%\OButil.jar;%ORBAC US%\OBNaming.jar;%ORBACUS%\OBEvent.jar;%CLASSPATH%
17 Implementación del servidor El servidor consta de dos partes: 1) La implementación de una o varias interfaces IDL Clases que implementan las operaciones de las interfaces y que se corresponden a objetos CORBA Hay dos maneras de implementar una interfaz: Por herencia de la clase interfacepoa Por delegación, usando una clase _tie_ 2) El programa principal (main) Inicializa el ORB y POA Crea objetos que implementan interfaces Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 17 Un objeto CORBA puede estar implementado por un objeto Java. La clase del objeto de implementación debe tener todos los métodos de clases en la interfaz e incorporar el skeleton. Esto último puede hacerse bien por herencia de la clase ImplBase, o utilizando objetos TIE que se encargan de realizar las tareas del skeleton y delegan la realización de la operación al objeto de implementación (que sería de una clase Java normal que implementa las operaciones de la interfaz). Por otra parte, los objetos CORBA deben vivir en un proceso. El método main() del proceso inicializa el ORB y crea algunos objetos CORBA (al menos los necesarios para que el cliente pueda empezar a trabajar con el servidor).
18 Implementación de la interfaz En este ejemplo se utiliza la herencia La implementación se realiza definiendo una clase de implementación que tiene que hacer 2 cosas: 1) Heredar de la clase <interfazidl>poa Esta clase la genera el compilador de IDL y proporciona el skeleton 2) Implementar cada método de la interfaz Se pueden usar métodos auxiliares en la clase de implementación de la interfaz Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 18
19 ImplContador.java package PrimerEjemplo; class class ImplContador extends ContadorPOA { private int intvalor_; // // Constructor ImplContador () (){ valor_ = 0; 0; System.out.println("Creado Objeto Contador con con valor valor = "+valor_); // // attribute valor valor public int intvalor() { return valor_; public void voidvalor(int val) val) { valor_ = val; val; // // operaciones: public int int inc() inc() { return ++valor_; public int int dec() dec() { return return--valor_; Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 19 La clase, que tiene el nombre que decida el programador (en este ejemplo ImplContador), hereda de ContadorPOA dentro del paquete PrimerEjemplo (el nombre que se le dio al módulo). En este ejemplo, todo contador nuevo empieza con el valor inicial dado en el constructor. Las operaciones son sencillas, y como puede verse no tienen nada de especial por el hecho de tratarse de la implementación de un objeto CORBA. Si fuese necesario, la clase de implementación podría añadir nuevos métodos auxiliares.
20 Implementación del servidor Programa principal (main) El programa principal (main) realiza las siguientes funciones: 1) Inicializar el ORB y el POA 2) Crear los objetos CORBA Al menos los que sean necesarios inicialmente (se pueden crear otros dinámicamente) 3) Pasar el control al ORB Bucle de eventos Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 20 La clase que implementa el servidor debe realizar al menos las siguientes acciones: 1) Obtener una referencia a un objeto ORB (en esto es igual que el cliente). 2) Crear objetos CORBA. Dentro de un servidor puede haber varios objetos que implementan interfaces CORBA. Estos objetos pueden ser creados por otros objetos, pero al menos uno debería ser creado en el flujo principal del programa servidor para que algún cliente pudiera invocar operaciones sobre él. 3) Cuando ya se tienen objetos CORBA inicializados, entonces el servidor está preparado para recibir peticiones de operaciones en los objetos CORBA que contiene. Para eso, el servidor se mete en un bucle de eventos, esto es, se queda esperando recibir alguna petición, y la procesa, vuelve a esperar la siguiente petición y así indefinidamente.
21 ServidorContador.java (1) package PrimerEjemplo; public class class ServidorContador { static static public void void main(string[] args) args) { java.util.properties props props = System.getProperties(); props.put("org.omg.corba.orbclass", "com.ooc.corba.orb"); props.put("org.omg.corba.orbsingletonclass","com.ooc.corba.orbsingleton"); try try { // // Inicializa el el ORB ORB org.omg.corba.orb orb orb = org.omg.corba.orb.init(args, props); // // Crea Crea un un POA POA y obtiene la la referencia al al manager del delrootpoa org.omg.portableserver.poa rootpoa = org.omg.portableserver.poahelper.narrow( orb.resolve_initial_references("rootpoa")); org.omg.portableserver.poamanager manager = rootpoa.the_poamanager(); Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 21 1) La inicialización del ORB para el servidor suele ser siempre igual.
22 ServidorContador.java (2) // // Crea Crea el el objeto Contador ImplContador unobjetocontador = new new ImplContador(); Contador c = unobjetocontador._this(orb); // // y exporta su su referencia en en un un fichero: try try { String ref ref = orb.object_to_string(c); String reffile = "Contador.ref"; java.io.printwriter out out = new newjava.io.printwriter( new newjava.io.fileoutputstream(reffile)); out.println(ref); out.close(); catch(java.io.ioexception ex) ex) { ex.printstacktrace(); System.exit(1); Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 22 2) La creación de un objeto CORBA requiere dos pasos: - crear el objeto Java que lo implementa, con new. - indicar al ORB que el objeto creado se puede ofrecer al mundo Por otra parte habrá que hacer su referencia accesible, por ejemplo dejándola como un string en un fichero (que leerán los clientes).
23 ServidorContador.java (3) // // Se Se queda esperando peticiones de de servicio System.out.println("Servidor Contador preparado para para recibir peticiones"); manager.activate(); orb.run(); catch(exception e) e) { e.printstacktrace(); System.exit(1); System.out.println("Fin de de actividad del del servidor Contador"); System.exit(0); Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 23 3) Para quedarse esperando indefinidamente peticiones se usa el método run() Todo el código se ha puesto dentro de try-catch porque se puede producir la excepción SystemException (estándar) si alguna de las operaciones sobre el objeto orb fallara.
24 Prueba de la aplicación 1) Arrancar el servidor: > java PrimerEjemplo.ServidorContador 2) Y ejecutar el cliente: > java PrimerEjemplo.Cliente Inicializa el ORB... Consigue la referencia al objeto Contador1 El objeto Contador1 tiene el valor: 0 Incrementando el contador... Tiempo medio de invocacion = 3.02 msegs Valor final del contador = 1000 > Puede ser interesante probar varios clientes a la vez. Algunos pueden ser aplicaciones y otros applets. Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 24 Como ejercicio pueden verse los resultados de ejecutar el cliente y el servidor en la misma o en distintas máquinas. Tal vez los resultados sorprendan al no ver una gran ganancia en tiempo de respuesta en el caso de ejecución local, y esto se debería al hecho de que el tiempo dedicado a conmutar entre los procesos cliente y servidor fuera similar al requerido para pasar los mensajes por la red.
25 Resumen La realización de una aplicación cliente/servidor con Java y CORBA requiere: Definir con IDL las interfaces que exporta el servidor Desarrollar el cliente usando los stubs generados por el compilador de IDL Implementar las interfaces y desarrollar el servidor utilizando los skeletons generados por el compilador de IDL Juan Pavón Mestras, UCM Aplicación sencilla con CORBA y Java 25
1. Introducción. 1.1 Construcción de una aplicación CORBA
1. Introducción 1.1 Construcción de una aplicación CORBA Toda aplicación CORBA empieza con la definición de las interfaces de los objetos que pueden distribuirse. Para ello se utiliza el lenguaje IDL.
CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción
CORBA desde Java Diego Sevilla Ruiz Sistemas Distribuidos Índice 1. Introducción 1 2. Primeros pasos 1 2.1. Fichero IDL................................... 1 2.2. Cliente......................................
RMI. Aplicaciones Distribuidas
RMI Aplicaciones Distribuidas Contenido Objetos Distribuidos y RMI. Interface Remota. Clase Implementación. Referencias Remotas. Registro RMI. Paso de parámetros. Descarga dinámica de código. Desarrollo
Práctica 5: Common Object Request Broker Architecture CORBA
Práctica 5: Common Object Request Broker Architecture CORBA Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es entender mejor el funcionamiento de CORBA (Common Object Request Broker
Modelo de Objetos Distribuidos
Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo
Arquitecturas Distribuidas Práctica 6. Introducción a CORBA
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
Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java
Java RMI Remote Method Invocation Invocación Remota de Métodos en Java Contenido Introducción Implementación Diseño de la interfaz remota. Implementación de la interfaz remota. Obtención de las clases
CORBA: Java IDL JUAN CARLOS CONDE RAMÍREZ DISTRIBUTED COMPUTING
CORBA: Java IDL JUAN CARLOS CONDE RAMÍREZ DISTRIBUTED COMPUTING Introducción Este documento proporciona un vista de alto nivel sobre cómo crear una aplicación CORBA (Common Object Request Broker Architecture)
Objetos Distribuidos
Objetos Distribuidos Objetos Distribuidos Conceptos Estado: encapsula los datos Métodos: operaciones sobre los datos Interfaz: se utiliza para la disponibilidad de los métodos El Estado y la Interfaz se
HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA
Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá
Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez
Introducción a Java Dr. (c) Noé Alejandro Castro Sánchez Programas Java Applets Pueden correr en navegadores Web Agregan funcionalidad a páginas Web Se llega a restringir su funcionalidad (e. g., no pueden:
Código Fuente. Creamos en C:\ una carpeta para ubicar el código fuente del servidor. En mi caso, he creado una carpeta denominada rmi4
EL EJEMPLO El proceso servidor provoca un eco de la entrada de teclado enviada por el proceso cliente. Por sencillez, ejecutaremos tanto el servidor como el cliente en la máquina local. El sistema operativo
Estructuras de control selectivas
Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos
Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.
Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está
Arquitecturas cliente/servidor
Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?
Invocación de métodos remotos en Java: JAVA - RMI
Diseño Y Aplicaciones de Sistemas Distribuidos Invocación de métodos remotos en Java: JAVA - RMI Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València
Examen Teórico Convocatoria de Junio de 2012
Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica
Ingeniería del Software Separación entre Presentación y Lógica del Negocio
Introducción En este laboratorio desarrollaremos una aplicación que verifica si una cuenta y un password son correctos. En dicha aplicación la presentación y la lógica del negocio se definirán en dos capas
en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina
Máquina A Máquina B Máquina C Lo ideal sería tener un sistema distribuido orientado a objetos que permita: 1)Invocar un método de un objeto que se localiza en otra máquina exactamente de la misma manera
Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos
Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad
Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2
Tema 9 Llamada a métodos remotos (RMI). Departament d Informàtica. Índice 1. Introducción 2 1.1. Cómo funciona RMI?.......................................... 2 2. Usando RMI 4 2.1. Fase de desarrollo:
Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.
SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:
DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA
DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA José Luis Pastrana Brincones ([email protected]) Dpto. Lenguajes y Ciencias de la Computación. Universidad de Málaga
PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica
Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende
Introducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Práctica 2: Java Remote Method Invocation (RMI)
Práctica 2: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es conocer un poco más sobre el paradigma de objetos remotos. La idea principal es
Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos
Unidad Didáctica 1 Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED)
Examen de Ejemplo Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED) Parte Teórica (2,5 puntos). La respuesta correcta se indica
Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.
Unidad IV Métodos. 4.1 Definición de un método. El polimorfismo, en programación orientada a objetos, se refiere a la posibilidad de acceder a un variado rango de funciones distintas a través del mismo
Programación orientada a objetos I
Introducción Programación orientada a objetos I Curso INEM. Programación en C++ Santiago Muelas Pascual [email protected] Qué es la POO? Un paradigma de programación Un paradigma es una forma de afrontar
TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE
MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE Los modificadores de acceso, como su nombre indica, determinan desde qué clases se puede acceder a un determinado elemento. En Java tenemos 4 tipos:
18. Interfaces Declaración de una interfaz
Programación orientada a objetos con Java 191 18. Interfaces Objetivos: a) Definir el concepto de interfaz b) Interpretar el código fuente de una aplicación Java donde aparecen interfaces c) Construir
Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia
Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona
Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU
Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Contenido Interfaz Implementación Servidor Cliente Puesta en marcha de la aplicación: Compilador
EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)
APRENDERAPROGRAMAR.COM EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C) Sección: Cursos Categoría: Lenguaje de programación Java nivel
PROGRAMACIÓN EN JAVA
SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 2: Jerarquía de clases en Java Objetivos Implementar una jerarquía de clases para crear una aplicación en Java Comprender
HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS
Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2009/2010 Nombre:... Fecha: / 11 / 2009 HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS Esta hoja de ejercicios
Informática Lección 5. Arreglos (vectores) Curso Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas.
Fundamentos de Informática Lección 5. Arreglos (vectores) Curso 2010-2011 Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas. Índice de contenidos Arreglos: Concepto
3.9 Patrón Distributed callback
3.9 Patrón Distributed callback Motivación (1) Queremos que la aplicación de administración de los termostatos Monitorize la temperatura de algunos termostatos, avisándonos si ésta baja o sube por encima
PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI
PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI Héctor Pérez 2 MobileTracker: Especificación El computador de la torre de control ejecuta el servicio Follower que registra los
IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B)
APRENDERAPROGRAMAR.COM IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero
El servicio de echo en Java-RMI
PRÁCTICA 3 El servicio de echo en Java-RMI E l objetivo de esta práctica es crear y ejecutar una aplicación cliente servidor echo basada en java-rmi. La práctica tiene dos partes: La primera parte implementa
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE Ejemplos III: Sopa de Letras 1 Objetivo Mostrar las diferentes estrategias que puede seguir un gestor que tiene que ejecutar una tarea compleja que puede ser paralelizada en diferentes
1. Visión general de RMI
1. Visión general de RMI Java RMI permite al programador ejecutar métodos de objetos remotos utilizando la misma semántica que si fueran invocaciones locales (Véase Figura 1). Máquina Local (Cliente) Máquina
JAVA RMI (REMOTE METHOD INVOCATION)
JAVA RMI (REMOTE METHOD INVOCATION) RMI RMI (Remote Method Invocation) Mecanismo RPC de Mecanismo mediante el cual los procesos cliente y servidor en una aplicación distribuida se comunican Una aplicación
! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes
Introducción Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual [email protected]! Qué es la POO?! Un paradigma de programación! Un paradigma es una forma de afrontar
Ejercicio 1 (proyecto prlistas, paquete listas)
PRÁCTICA 3 Curso 2004-05 En esta práctica construiremos y usaremos dos paquetes: el primero, listas, que implementa listas genéricas y el segundo, colas, que implementa colas y colas de prioridades genéricas.
INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)
APRENDERAPROGRAMAR.COM INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C) Sección: Cursos Categoría: Lenguaje de programación Java nivel
Relaciones entre clases
Relaciones entre clases 1 Humberto Cervantes Maceda Alfonso Martínez Martínez Abril 2005 Relaciones entre clases Dependencia Generalización Asociación Realización 2 Relaciones entre clases Dependencia:
5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI
5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI Contenidos Tutorial de Java RMI Caso de estudio: diseño e implementación de la capa modelo de MiniBank con Java RMI Arquitectura
! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java
Introducción a la programación orientada a objetos Curso de Programación en Java! Fundamentos de la POO! Comportamiento y estado! Clases y objetos en Java Contenidos Luis Guerra [email protected] Enero 2012
Clases y herencia. FJP Unidad 8. Diseño de clases
Clases y herencia FJP Unidad 8 Encapsulamiento Diseño de clases El encapsulamiento provee protección de atributos y métodos definidos en una clase de forma tal que comportamiento de objetos de una clase
Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc.
Tutorial de C# Delegados y Eventos Por: Óscar López, M.Sc. [email protected] DELEGADOS Delegados Son unos objetos que implícitamente extienden de System.Delegate y definen un tipo referencia soportado
Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos
Invocación de Métodos Remotos RMI: Remote Method Invocation Prof Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos
Java RMI. Sistemas Distribuidos Rodrigo Santamaría
+ Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en
Curso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra [email protected] Curso INEM. Programación en Java Marzo 2011 Índice Previo Repaso y encapsulación Empaquetado Relaciones entre clases Herencia
EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas
Apellidos Nombre Firma NIA Grupo EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas Pregunta 1 (0,5 puntos).- Indicar si las siguientes afirmaciones
1. Cuántas sentencias hay en la secuencia principal del siguiente programa?
1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10.
INSTITUTO TECNOLÓGICO SUPERIOR DE SAN MARTÍN TEXMELUCAN INGENIERÍA EN SISTEMAS COMPUTACIONALES. Sistemas Distribuidos
INSTITUTO TECNOLÓGICO SUPERIOR DE SAN MARTÍN TEXMELUCAN INGENIERÍA EN SISTEMAS COMPUTACIONALES Sistemas Distribuidos PRÀCTICA 3: El servicio de echo en Java-RMI Profesor: Susana Garrido Cortes Alumnos:
FSD Práctica Invocación Remota: JavaRMI. Estudio Previo. Información
FSD Práctica Invocación Remota: JavaRMI Tipo de entrega: por grupos de prácticas Fecha límite: sesión de laboratorio Lugar: Campus Digital Comentario: No hay que entregar el estudio previo Objetivo de
Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++
Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ OBJETIVO En este documento se presentan las construcciones básicas de orientación a objetos del lenguaje de programación C++, y recomendaciones
Java en 2 horas. Rodrigo Santamaría
Java en 2 horas Rodrigo Santamaría Generalidades 2 Desarrollado por Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión interna de
FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4
Trabajo Práctico Nº 4 Ejercicios Teóricos 1. Indique si las siguientes afirmaciones son verdaderas o falsas a. La programación orientada a objetos hace uso de clases y envío de mensajes entre objetos..
IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA
IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA Implementación de conceptos P.O.O. en Java Temario 2. Conceptos de Programación Orientada a Objetos 1. Conceptos de P.O.O. 2. Implementación de conceptos P.O.O
Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011
Tema 6 Patrones de Diseño Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción a los patrones de diseño. Patrón del Método plantilla. Patrón Composición. Patrón Estrategia. Clases anónimas
Interacción entre Aplicaciones: objetos distribuidos e invocación remota
Interacción entre Aplicaciones: objetos distribuidos e invocación remota En la anterior práctica se ha visto cómo extender la funcionalidad de un servidor web incorporando servlets que atienden peticiones
Construcciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Tema 4. Excepciones en Java
Programación en Java Tema 4. Excepciones en Java Luis Rodríguez Baena Facultad de Informática Excepciones (I) Permiten la captura de errores en tiempo de ejecución. El control de excepciones permite extraer
Curso: Java SE (Standard Edition)
El curso proporciona la base que necesita cualquier programador de Java, tanto en cuanto a las peculiaridades de la tecnología que engloba Java SE, como del lenguaje de programación en sí. También se estudian
INTRODUCCION A LA PROGRAMACION EN JAVA
Departament d Arquitectura de Computadors INTRODUCCION A LA PROGRAMACION EN JAVA Java 1 y 2 Diferencias entre Java1 y Java2 Mejoras en las interficies gráficas (Swing) Amplias mejoras en las librerías
Estructura de datos y Programación
Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de
Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C.
CAPÍTULO 8 DELEGADOS 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Qué es un delegado? Para qué sirve? En qué circunstancias se recomienda implementar delegados? Qué es un método anónimo?
Curso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM. Programación en Java Diciembre 2010 Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia
Programación orientada a objetos
Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual [email protected]! Herencia! Superclase/subclase! super! Modificador protected! Redefinicion de métodos!
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Ejercicios de Lenguaje Java y Entorno de Desarrollo
Ejercicios de Lenguaje Java y Entorno de Desarrollo Índice 1 Proyecto básico en Eclipse...2 2 Cálculo del factorial...3 3 Ecuación de segundo grado (*)...3 4 Clases abstractas y herencia...4 5 Esquema
Introducción al lenguaje Java
Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno
ALGORITMICA Y PROGRAMACION POR OBJETOS I
ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 1 Problemas, Soluciones y Programas Marcela Hernández Hoyos Solucionar un Problema = Construir un Programa Problema Programador Herramientas y Lenguajes Análisis
Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.
Universidad Nacional Autónoma de México Facultad de Ingeniería PRACTICA 10 PROGRAMACIÓN ORIENTADA A OBJETOS (MANEJO DE EXCEPCIONES) Objetivos El alumno empleará el concepto de excepción en la programación
Procesamiento distribuido en Java
Diseño Y Aplicaciones de Sistemas Distribuidos Procesamiento distribuido en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Contenidos
Si bien hay gran cantidad de excepciones, todas derivan de la clase Exception, además de las excepciones ya manejadas, se pueden crear propias.
Práctica No. 6. Manejo de Excepciones Java permite el manejo de excepciones, esto permite que cuando ocurra algún error en tiempo de ejecución, se pueda evitar que el programa finalice de manera incorrecta.
RMI [Remote Method Invocation]
RMI [Remote Method Invocation] Cuando utilizamos sockets, hemos de preocuparnos de cómo se transmiten físicamente los datos entre los extremos de una conexión (a nivel de bytes, ya que usamos los streams
