El servicio de echo en Java-RMI

Tamaño: px
Comenzar la demostración a partir de la página:

Download "El servicio de echo en Java-RMI"

Transcripción

1 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 un servidor sencillo basado en un objeto java-rmi con un único método echo. La segunda parte utiliza las facilidades de movilidad de código en Java-RMI. Se trata de implementar también el servicio de echo, pero esta vez el servidor es una máquina de cómputo genérica, denominada ComputeEngine, que puede ejecutar cualquier algoritmo cuyo código se le proporcione a través de la red. En este caso, el algoritmo será el algoritmo del servicio de echo. La metodología de desarrollo de aplicaciones RMI propuesta en esta práctica está basada en el plugin de RMI para Eclipse de http// Esta metodología se encuentra bien detallada en las Flash demos que se encuentran en la web y que pueden accederse también a través del menú desplegable del plugin RMI. DYA 29

2 Estructura de la aplicación Estructura de la aplicación La aplicación Echo se estructura en tres paquetes: la interfaz, el cliente y el servidor, los cuales se describen a continuación. Ver figura 1 (pág. 30). FIGURA 1. Estructura de una RPC El paquete interfaz (rmi) Consta del siguiente fichero: EchoInt.java: describe el servicio echo. Este fichero debe ser prácticamente igual a la interfaz especificada en la práctica anterior, excepto que el interfaz es en esta práctica es subclase de java.rmi.remote. public interface EchoIntRMI extends java.rmi.remote El paquete servidor (server) Consta, básicamente, de dos ficheros: EchoObject.java: implementa la interfaz EchoInt y proporciona el servicio de echo en local (a clientes locales, no a clientes remotos). La implementación es idéntica a la práctica anterior y consiste en devolver la cadena que se envía, junto con el URL y la hora de la máquina servidora al cabo de 3 segundos. Este retraso simula que el servicio tiene un tiempo de cómputo largo y apreciable. 30 El servicio de echo en Java-RMI

3 Realización del servicio de echo elemental en RMI EchoObjectRMI.java: es el verdadero objeto RMI (extends UnicastRemoteObject). También implementa la interfaz EchoInt e implementa el servicio de echo en remoto (para clientes remotos). Su implementación se basa en crear una instancia del objeto EchoObject y delegar en el la implementación del método echo. La funcionalidad adicional que aporta esta clase es la de registrar el servicio en el servidor de nombres y proporcionarle la capacidad de ser invocado remotamente mediante el código genético que aporta la clase UnicastRemoteObject. El objeto servidor lo componen el código objeto correspondiente a estos ficheros junto a los skeletons generados automáticamente por RMI El paquete cliente (client) Lo constituye el siguiente fichero: EchoRMI.java: es el cliente RMI. Se encarga de obtener una referencia RMI al objeto servidor a partir del servicio de nombres. Una vez obtenida esta referencia, realiza el bucle: - Leer de teclado - Invocar el objeto (a través de la referencia al objeto) - Imprimir el resultado por pantalla Realización del servicio de echo elemental en RMI Para la realización de la parte básica de la práctica cree un proyecto prj-rmi y siga la metodología descrita en la práctica Creación del proyecto 1. Descargue los ficheros de ayuda al directorio de descargas ($WS/descargas) si los hubiera. 2. Cree un proyecto prj-rmi en el workspace según se indica en la práctica 1 cree también los paquetes de que consta la aplicación: rmi, client, server Generación de la interfaz RMI El desarrollo de la interfaz RMI, contenida en el paquete rmi, consta de los siguientes pasos: 3. Cree una interfaz EchoInt. La opción más sencilla es utilizar File->New->Other->Java->RMI - > Remote Interface. También se puede hacer con File->New->New Interface especificando: - Name: EchoInt DYA 31

4 Realización del servicio de echo elemental en RMI - Extended interfaces: java.rmi.remote 4. Complete la definición de la interfaz con la especificación del método echo Generación del servidor RMI pasos: El desarrollo del servidor RMI, contenido en el paquete server, consta de los siguientes 5. Cree una clase EchoObjectRMI. con File->New Class especificando: - Name: EchoObjectRMI - Superclass: java.rmi.unicastremoteobject - Extended interfaces: rmi.echoint - public static void main - Constructors from superclass 6. Copie el fichero EchoObject.java del directorio de descargas al directorio server del proyecto en el workspace y actualice el Package explorer para visualizarlo. 7. Complete la implementación del servidor con la implementación de los métodos echo y main. - El método echo delega en el correspondiente método de la clase EchoObject. - El método main básicamente debe realizar una instancia del EchoObjectRMI e inscribirla en el Servicio de Nombres de RMI Generación de stubs para ello: La ejecución de aplicaciones RMI requiere la generación automática de stubs y skeletons, 8. Habilite la generación de stubs RMI para el servidor del proyecto. Para ello en el menú contextual del proyecto seleccione: - RMI->Enable Stubs Generation Esto generará los stubs cada vez que sea necesario (si el proyecto tiene seleccionada la opción Project->Build automatically) pero el package explorer normalmente no los muestra. 9. Para mostrar los stubs en el Package explorer deberá habilitar la siguiente opción en el menú contextual del proyecto: - Properties -> -keep En caso de no disponer del plugin RMI, la generación de stubs y skeletons puede realizarse desde una consola MS-DOS estableciendo la variable de entorno CLASSPATH y ejecutando el compilador de RMI, especificando como parámetros el servidor de echo: > rmic server/echoobjectrmi.java Generación del cliente RMI El desarrollo del cliente RMI, contenido en el paquete client, consta de los siguientes pasos: 32 El servicio de echo en Java-RMI

5 Realización del servicio de echo elemental en RMI 10. Copie el fichero EchoRMI.java del directorio de descargas al directorio client del proyecto en el workspace y actualice el Package explorer para visualizarlo. 11. Realice los ejercicios propuestos. - Sólo tiene que realizar la invocación al servidor de echo. - Observe la necesidad de un gestor de seguridad en el cliente Compilación y ejecución de aplicaciones RMI en Eclipse El desarrollo de aplicaciones RMI en Eclipse se ve facilitado por el plugin de Para ejecutar una aplicación RMI, básicamente debe seguir los siguientes pasos: 1. Arranque el servicio de nombres RMI rmiregistry utilizando la opción Start Local Registry (port 1099) del menú del plugin de RMI: En caso de no disponer del plugin RMI, este servicio también puede arrancarse desde una consola MS-DOS estableciendo la variable de entorno CLASSPATH y ejecutando: > start rmiregistry En Unix: > rmiregistry& 2. Ejecute el servidor EchoObjectRMI creando un perfil de ejecución con el menú Run as -> RMI Application y fijando las siguientes propiedades de la máquina virtual (menú RMI VM Properties): - java.rmi.server.codebase: permite especificar un URL para el código rmi. De esta forma, la máquina virtual puede conocer la ubicación de las clases y sus correspondientes stubs o skeletons. Fíjela en el directorio bin de la aplicación (file:${workspace_loc:/prj-rmi/bin). Esta opción se especifica con Compute from classpath. - La ejecución de aplicaciones desde consola (caso de no disponer del plugin RMI) debe especificar correctamente las propiedades de la máquina virtual: > java server/echoobjectrmi -Djava.rmi.server.codebase=... -Djava.security.policy= Compruebe que el servicio echo ha sido registrado correctamente en el rmiregistry utilizando el RMI Registry Inspector. 4. Ejecute el cliente EchoRMI creando un perfil de ejecución con el menú Run as -> RMI Application y especificando: - Argumentos de ejecución (menú (x) Arguments): host del servidor. - Propiedades de la máquina virtual (menú RMI VM Properties). Puesto que el cliente utiliza un gestor de seguridad es necesario especificar una política: - java.security.policy: permite especificar el URL para un fichero con la política de seguridad necesaria para ejecutar aplicaciones RMI. Existen aquí dos opciones: o bien crear un fichero DYA 33

6 Despliegue y ejecución de aplicacione RMI desde la consola. automáticamente desde las opciones disponibles (Create...) o bien especificar un fichero con el siguiente contenido. grant { permission java.net.socketpermission "*: ", "connect,accept,resolve"; ; 5. Realice también pruebas de invocación de clientes a servidores remotos utilizando el servidor de echo de otros compañeros de prácticas Despliegue y ejecución de aplicacione RMI desde la consola. La ejecución de la aplicación RMI fuera del entorno Eclipse consta de dos pasos fundamentales el despliegue de la aplicación como ficheros jar y la ejecución, propiamante dicha, del servidor y del cliente Despliegue de la aplicación Deben generarse los siguientes ficheros jar: 1. rmi_remote.jar: contiene los interfaces y los stubs de RMI. Debe estar accesible por el cliente en tiempo de ejecución. En el caso de la práctica Echo contiene: rmi/echoint.java server/echoobjectrmi_stub.java 2. rmi_server.jar: contiene la implementación del servidor. En el caso de la práctica Echo contiene: 1. rmi/echoint.java server/* 2. rmi_client.jar: contiene la implementación del cliente. En el caso de la práctica Echo contiene: rmi/echoint.java client/* Ejecución del servidor RMI La ejecución del servidor consta de los siguientes pasos: 1. Ejecutar el servicio de nombres rmiregistry en la máquina que se ejecute el servidor. 2. Crear un fichero de política de segurida denominado, por ejemplo, security.policy con el siguiente contenido: grant { permission java.security.allpermission; 34 El servicio de echo en Java-RMI

7 Realización de la aplicación echo utilizando movilidad de código 3. Dejar el fichero rmi_remote.jar con la implementación del servidor en una localización accesible tanto por parte del servidor como del cliente (hhtp:, ftp:, ó file: ). Por ejemplo: file:/users/dya/echo/rmi_remote.jar 4. La máquina java que ejecute al servidor debe tener establecidos las siguientes propiedades: - -Djava.security.policy= el fichero del paso 2 - -Djava.rmi.server.codebase=Localización del fichero rmi_remote.jar - -classpath rmi_server.jar En el caso de la práctica de Echo - java -Djava.security.policy=security.policy - -Djava.rmi.server.codebase=file:/users/dya/echo/rmi_remote.jar - -classpath rmi_server.jar server.echoobjectrmi Ejecución del cliente RMI Para ejecutar el cliente RMI, el fichero rmi_remote.jar con los stubs y el fichero de política de seguridad deben estar accesibles en la máquina del cliente. La ejecución se realiza mediante la siguiente orden: java -Djava.security.policy=security.policy -Djava.rmi.server.codebase=file:/users/dya/echo/rmi_remote.jar -classpath rmi_client.jar client.echormi localhost Realización de la aplicación echo utilizando movilidad de código Visite el Tutorial de Java (disponible en la web de la asignatura) y seleccione el capítulo de RMI. En este capítulo se desarrolla una aplicación donde existe un servidor de computo genérico ComputeEngine, que ejecuta un código (subclase de Task) que el cliente le puede especificar como parámetro por valor en una invocación RMI (movilidad de código). La Task que se desarrolla en el tutorial es las Task Pi que contiene un algoritmo para calcular el número pi. Ver figura 2 (pág. 36). Este ejemplo se encuentra disponible como tutorial en el plugin RMI. Esta segunda parte de la práctica consiste en compilar y ejecutar el ejemplo del tutorial y, posteriormente, modificarlo para sustituir el algoritmo de calcular el numero pi por el algoritmo de realizar el servicio echo. De esta manera el servidor ComputeEngine ejecutará una Task con el servicio de echo. Se requiere también modificar la interfaz del Compute del ComputeEngine para adaptarla a la siguiente especificación: DYA 35

8 Realización de la aplicación echo utilizando movilidad de código FIGURA 2. La aplicación ComputeEngine import java.rmi.remote; import java.rmi.remoteexception; public interface Compute extends Remote { //loadtask: Cargar una nueva task en el ComputeEngine. No ejecutarla void loadtask(task t) throws RemoteException; //executetask: Ejecutar una task previamente cargada con loadtask //la task admite como argumentos de entrada los proporcionados en arg y //el resultado de la Task es devuelto como resultado de executetask Object executetask(object arg) throws RemoteException; Esta segunda parte consta de los siguientes pasos: 1. Crear los proyectos de esta aplicación con: File->New->Other->Java->RMI -> Tutorials y seleccionando Sun s RMI Tutorial. 2. Ejecutar la aplicación anterior. Para ello, siga los pasos del apartado Modificar la aplicación anterior para ajustarse a la nueva especificación de la interfaz Compute. Para ello: - Modifique las interfaces Compute y Task. - Modifique el servidor de ComputeEngine para implementar la nueva interfaz Compute. - Realice una Task que implemente el algoritmo de echo, aprovechando el objeto EchoObject.java. - Realice una nueva versión del cliente de echo de la primera parte de la práctica para que invoque la nueva máquina de cómputo genérica. 4. Ejecute la nueva versión del servidor de cómputo genérico. 36 El servicio de echo en Java-RMI

9 Ficheros de apoyo Ficheros de apoyo Fichero server/echoobjectrmi.java package server; import java.rmi.remoteexception; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; import rmi.echoint; public class EchoObjectRMI extends UnicastRemoteObject implements EchoInt { private static final long serialversionuid = 1L; protected EchoObjectRMI() throws RemoteException { super(); // TODO Auto-generated constructor stub private static EchoObject eo = new EchoObject(); public String echo(string input) throws RemoteException { // TODO Auto-generated method stub return eo.echo(input); public static void main(string[] args) { // TODO Auto-generated method stub try { Registry registry = LocateRegistry.getRegistry(); registry.rebind("echo", new EchoObjectRMI()); catch (RemoteException e) { System.err.println("Something wrong happended on the remote end"); e.printstacktrace(); System.exit(-1); // can't just return, rmi threads may not exit System.out.println("The echo server is ready"); Fichero server/echoobject.java El mismo que para la práctica de sockets. DYA 37

10 Ficheros de apoyo Fichero client/echoobject.java package client; import java.io.*; import java.rmi.naming; import java.rmi.rmisecuritymanager; import rmi.echoint; public class EchoRMI { public static void main(string[] args) { // TODO Auto-generated method stub if (args.length<1){ System.out.println("Uso echo <host>");system.exit(1); if(system.getsecuritymanager()== null) System.setSecurityManager(new RMISecurityManager()); BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); PrintWriter stdout = new PrintWriter(System.out); String input,output; try{ EchoInt obj = (EchoInt) Naming.lookup("//" + args[0] + "/echo"); stdout.print("> "); stdout.flush(); while ( (input = stdin.readline())!=null){ //EJERCICIO: invocar el objeto RMI stdout.println(output); stdout.print("> "); stdout.flush(); catch(exception e){ System.out.println("Error en el cliente de echo RMI : " + e.getmessage()); 38 El servicio de echo en Java-RMI

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 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:

Más detalles

Invocación de métodos remotos en Java: JAVA - RMI

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

Más detalles

El servicio de echo con sockets

El servicio de echo con sockets PRÁCTICA 2 El servicio de echo con sockets E l objetivo de esta práctica es crear y ejecutar una aplicación cliente servidor "echo" basada en sockets TCP pero estructurándola según el modelo de objetos

Más detalles

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

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

Más detalles

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 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

Más detalles

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 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

Más detalles

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

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

Más detalles

1. Visión general de RMI

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

Más detalles

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

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

Más detalles

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 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

Más detalles

PROGRAMACION DISTRIBUIDA

PROGRAMACION DISTRIBUIDA PROGRAMACION DISTRIBUIDA Ejemplo de uso de estrategias de diseño con RMI Héctor Pérez 2 Ejemplo de callback: SwiftEagle shot() setdirection() Target nearnessreport(target,observer) signal? explode() SwiftEagle

Más detalles

JAVA - Serializacíon / RMI. (C) Philippe Roose - 2004, 2005

JAVA - Serializacíon / RMI. (C) Philippe Roose - 2004, 2005 JAVA - Serializacíon / RMI (C) Philippe Roose - 2004, 2005 Serializar objetos- concepto Desde el JDK 1.1 Serializar objetos permite de escribir un objeto en un fichero como un flujo de octets (archivo

Más detalles

JAVA RMI (REMOTE METHOD INVOCATION)

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

Más detalles

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI

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

Más detalles

Modelo de Objetos Distribuidos

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

Más detalles

RMI. Aplicaciones Distribuidas

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

Más detalles

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

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

Más detalles

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs CONTENIDO RMI AVANZADO Carga dinamica de stubs Callbacks Carga dinámica de Stubs Para tener acceso a un objeto remoto mediante RMI, el cliente debe recibir un stub serializado y deserializarlo. El stub

Más detalles

Práctica 2: Java Remote Method Invocation (RMI)

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

Más detalles

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid las RPC de Java. Parte I Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid de marzo de 006 RMI y RPC RPC: Remote Procedure Call. RMI y RPC RPC: Remote Procedure Call.

Más detalles

RMI [Remote Method Invocation]

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

Más detalles

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

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:

Más detalles

Prácticas de. Diseño y Aplicaciones de Sistemas Distribuidos (DYA)

Prácticas de. Diseño y Aplicaciones de Sistemas Distribuidos (DYA) Prácticas de Diseño y Aplicaciones de Sistemas Distribuidos (DYA) Joan Vila Carbó José Simó Ten. PRÁCTICA 1 Introducción a Java y Eclipse 1 El entorno de trabajo 1 El directorio de trabajo 2 Desarrollo

Más detalles

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

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

Más detalles

Ingeniería del Software Arquitectura Física en 3 niveles

Ingeniería del Software Arquitectura Física en 3 niveles Introducción En este laboratorio desplegaremos en 3 niveles físicos una aplicación que verifica si una cuenta y un password son correctos, basada en la que fue presentada en el laboratorio Separación entre

Más detalles

Procesamiento distribuido en Java

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

Más detalles

Sistemas Distribuidos (Capítulo 8 de Distributed Computing de M. L. Liu)

Sistemas Distribuidos (Capítulo 8 de Distributed Computing de M. L. Liu) Devoluciones de llamada en RMI (Callbacks) Sistemas Distribuidos (Capítulo 8 de Distributed Computing de M. L. Liu) Devolución de llamadas, introducción Cliente-servidor clásico servidorpasivo Tipo pull.

Más detalles

Interacción entre Aplicaciones: objetos distribuidos e invocación remota

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

Más detalles

Una introducción a Java RMI

Una introducción a Java RMI Una introducción a Java RMI César Llamas Bello Estas transparencias no hubieran sido posible sin el tutorial de José M. Vidal Swearingen Engineering Center, University of South Carolina, Columbia Introducción

Más detalles

RMI Remote Method Invocation

RMI Remote Method Invocation 2 RMI Remote Method Invocation Dr. Víctor J. Sosa Sosa Introducción La invocación remota de métodos de Java es un modelo de objetos distribuidos, diseñado específicamente para ese lenguaje, por lo que

Más detalles

Práctica 4: Java Remote Method Invocation (RMI)

Práctica 4: Java Remote Method Invocation (RMI) Práctica 4: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción Hasta el momento hemos visto aplicaciones remotas donde un cliente utiliza un objeto remoto que ha sido publicado

Más detalles

file://d:\jvila\docencia\dya05\practicas\dyapracticas.htm

file://d:\jvila\docencia\dya05\practicas\dyapracticas.htm MiWeb: Diseño y Aplicaciones de Sistemas Distribuidos Página 1 de 1 Diseño y Aplicaciones de Sistemas Distribuidos Prácticas Enunciado Fich. Apoyo Pr. - Hola Java! pdf zip Pr 2.- Sockets pdf zip Pr 3.-

Más detalles

TutorJava recomienda...

TutorJava recomienda... TutorJava recomienda... Invocación Remota de Métodos (RMI) Autor-Traductor: Juan Antonio Palos (Ozito) Puedes encontrar la Version Original en Ingles en ( http://java.sun.com) Leer comentarios (0) Escribir

Más detalles

Objetos Distribuidos

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

Más detalles

FSD Práctica Invocación Remota: JavaRMI. Estudio Previo. Información

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

Más detalles

PROGRAMACION DISTRIBUIDA

PROGRAMACION DISTRIBUIDA PROGRAMACION DISTRIBUIDA Aspectos avanzados de RMI Héctor Pérez 2 Objetivos Análisis de un conjunto de estrategias de diseño utilizando RMI que nos pueden servir de guía para el diseño de sistemas distribuidos

Más detalles

1. Introducción. 1.1 Construcción de una aplicación CORBA

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.

Más detalles

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS Sesión 5: Tema 8: Objetos Distribuidos e Invocación Remota. Java RMI SISTEMAS DISTRIBUIDOS GRADO EN INGENIERÍA INFORMÁTICA UNED Introducción Índice (1/2) Modelos de programación de aplicaciones distribuidas.

Más detalles

Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru.

Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru. Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru. 1 Paradigmas de desarrollo Desarrollo basado en protocolos Se diseña el protocolo Se elaboran los módulos para manejo

Más detalles

Tema 3. Objetos distribuidos

Tema 3. Objetos distribuidos Tema 3. Objetos distribuidos SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs octubre 2008 FJRP, FMBR 2008/09 ccia SCS 3.1 Modelo de objetos distribuidos Objetivo: Extender

Más detalles

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

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.

Más detalles

Sistemas de Información

Sistemas de Información Sistemas de Información Tecnologías de objetos distribuidos: RMI Agradecimientos: Marisol García Valls, Jesús Villamor Lugo, Simon Pickin de IT/UCIIIM [email protected] RMI (Remote Method Invocation) Concepto

Más detalles

Tema 4: INVOCACIÓN REMOTA

Tema 4: INVOCACIÓN REMOTA Tema 4: INVOCACIÓN REMOTA E. U. Informática en Segovia Departamento de Informática Universidad de Valladolid SD_TE04_20050509 EUI-SG/INFOR.UVA.ES 1 4.1 Introducción Invocación remota: integra programas

Más detalles

TEMA 7: Paso de Mensajes con RMI

TEMA 7: Paso de Mensajes con RMI CONTENIDO: TEMA 7: Paso de Mensajes con RMI Conceptos de Programación Distribuida Remote Method Invocation (RMI) en Java El Nivel de Resguardos La Responsable de que Todo Funcione: la interfaz El precompilador

Más detalles

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

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

Más detalles

Examen Teórico Convocatoria de Junio de 2012

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

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

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

Más detalles

Una aplicación sencilla con CORBA y Java

Una aplicación sencilla con CORBA y Java 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,

Más detalles

'HVDUUROORGH$SOLFDFLRQHV FRQ-DYD50,

'HVDUUROORGH$SOLFDFLRQHV FRQ-DYD50, 'HVDUUROORGH$SOLFDFLRQHV FRQ-DYD50, /DERUDWRULRGH,QJHQLHUtDGHO6RIWZDUH &RQWHQLGR Antecedentes Introducción a los Sistemas Distribuidos Sockets RPC Java RMI Características Modelo de Objetos Distribuidos

Más detalles

Las clases Java Socket y ServerSocket

Las clases Java Socket y ServerSocket Las clases Java Socket y ServerSocket Lenguajes y Herramientas de Programación Universidad de La Laguna Programa de Doctorado de Física e Informática Escuela Técnica Superior Superior de Ingeniería Informática

Más detalles

Servicios web con SOAP y Eclipse

Servicios web con SOAP y Eclipse PRÁCTICA 8 Servicios web con SOAP y Eclipse E l objetivo de esta práctica es invocar e implementar servicios web en Java desde el entorno Eclipse. La práctica está estructurada en tres partes según se

Más detalles

PROGRAMACION DISTRIBUIDA

PROGRAMACION DISTRIBUIDA PROGRAMACION DISTRIBUIDA Introducción a RMI (Remote Method Invocation) Héctor Pérez 2 Abstracción de comunicaciones en sist. distribuidos proporciona la base para la comunicación programación estructurada

Más detalles

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

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......................................

Más detalles

Arquitecturas cliente/servidor

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?

Más detalles

Aplicaciones Cliente-Servidor Con Datagramas

Aplicaciones Cliente-Servidor Con Datagramas Aplicaciones Cliente-Servidor Con Datagramas User Datagram Protocol (UDP) UDP es un protocolo que no garantiza la comunicación entre dos aplicaciones. No está basado en conexión. Envía paquetes de datos

Más detalles

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 + +.

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

Más detalles

Hilos en Java. Rodrigo Santamaría

Hilos en Java. Rodrigo Santamaría Hilos en Java Rodrigo Santamaría Hilos Un hilo (Thread) es un proceso en ejecución dentro de un programa java main están depreciados) Thread t t.start() run() finalización return La finalización depende

Más detalles

Remote Method Invocation (RMI) de Java

Remote Method Invocation (RMI) de Java Remote Method Invocation (RMI) de Java Concurrencia y Distribución Programación Avanzada Posgrado en Ciencia e Ingeniería de la Computación, UNAM 1. Introducción El mecanismo RMI (Remote Method Invocation)

Más detalles

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

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á

Más detalles

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar Introducción El alumno creará cuatro programas en java que manejen control de flujo mediante las sentencias de bucle while y do/while,

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

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

Más detalles

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 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

Más detalles

Clases y herencia. FJP Unidad 8. Diseño de clases

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

Más detalles

VII.1: RMI: Remote Method Invocation

VII.1: RMI: Remote Method Invocation PROGRAMACION CONCURRENTE Y DISTRIBUIDA VII.1: RMI: Remote Method Invocation Posibilidades que ofrece Java para la comunicación en red: Socket,RMI y URL. 1 Sistemas distribuidos basados en middleware Client

Más detalles

Relaciones entre clases

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:

Más detalles

SISTEMAS DISTRIBUIDOS Profesor: José Luis Montoya Restrepo

SISTEMAS DISTRIBUIDOS Profesor: José Luis Montoya Restrepo SISTEMAS DISTRIBUIDOS Profesor: José Luis Montoya Restrepo AGENDA El modelo Cliente Servidor. Introducción a RMI Practica Cliente Servidor utilizando RMI. Modelo Cliente Servidor El modelo Cliente Servidor

Más detalles

Práctica sobre compartición de instancias remotas.

Práctica sobre compartición de instancias remotas. Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta

Más detalles

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE Java EE Ejercicio 4 EJB Sesión Sistema SGA Objetivo del Ejercicio El objetivo del ejercicio es agregar un EJB de Sesión a nuestro proyecto SGA (Sistema de Gestión de Alumnos), el cual desarrollaremos a

Más detalles

Vamos a mostrar el código fuente de la clase Persona y el del Servlet que imprime una lista de personas :

Vamos a mostrar el código fuente de la clase Persona y el del Servlet que imprime una lista de personas : Hoy en dia nos toca trabajar más y más con el formato JSON en el mundo Java. Hay situaciones en las que nuestro servidor de aplicaciones tiene soporte (JEE6) y otras muchas en las que no y nos tenemos

Más detalles

Diseño de Algoritmos Distribuidos en Java

Diseño de Algoritmos Distribuidos en Java Diseño de Algoritmos Distribuidos en Java José Luis Pastrana Brincones ([email protected]) Departamento de Lenguajes y Ciencias de la Computación de la Universidad de Málaga Resumen El diseño de algoritmos

Más detalles

Cliente/Servidor en Java

Cliente/Servidor en Java Cliente/Servidor en Java Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid Contenidos 1. Introducción: 1. Paradigma cliente/servidor 2. Entorno

Más detalles

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

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:

Más detalles

Java en 2 horas. Rodrigo Santamaría

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

Más detalles

Enterprise JavaBeans Sesión 1: Características básicas de EJB

Enterprise JavaBeans Sesión 1: Características básicas de EJB Especialista en Aplicaciones y Servicios Web con Java Enterprise Enterprise JavaBeans Sesión 1: Características básicas de EJB Enterprise JavaBeans 2003-2004 Depto. Ciencia Computación e IA Características

Más detalles

Tema 4. Excepciones en Java

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

Más detalles

c) Explicar qué es un BreakPoint en Netbeans y para qué sirve. 0,5 punto

c) Explicar qué es un BreakPoint en Netbeans y para qué sirve. 0,5 punto Examen de Programación (13294) Convocatoria de Junio 2008 Licenciatura de Lingüística y Nuevas Tecnologías Pregunta 1 a) Explicar qué es un NullPointerException ( por qué ocurre? cuando se produce?). Dar

Más detalles

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

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

Más detalles

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas En java para poder escribir se emplea el objeto System.out, t pero para leer del teclado es necesario emplear System.in Et Este

Más detalles

Excepciones. Excepciones

Excepciones. Excepciones Excepciones FJP Unidad 12 Excepciones Una excepción es la representación de una condición de error o cualquier situación no esperada en el resultado de un método. Son instancias de subclases de la clase

Más detalles

JAVA 1. Introducción

JAVA 1. Introducción Diseño de Interfaces de Usuario JAVA. Introducción. Características Portabilidad Interpretado (bytecodes) Uso de Máquina Virtual Java (JVM) Orientado a Objetos Jerarquía de clases Extensible (packages)

Más detalles

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET 3.1- ARQUITECTURA DE COMPONENTES GIS La presente tesis trata del diseño y desarrollo de una aplicación basado en el Web para servir datos geográficos

Más detalles

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría + Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión

Más detalles

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. 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

Más detalles

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

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

Más detalles

Universidad ORT - Arquitectura de Software. Requisitos

Universidad ORT - Arquitectura de Software. Requisitos Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación

Más detalles