RMI Remote Method Invocation 2da. Clase del 19 de Junio

Slides:



Advertisements
Presentaciones similares
APLICACIONES DISTRIBUIDAS
Advertisements

Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
EXCEPCIONES UNIDAD 5.
Lenguaje de programación Java
CGI I La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con él. Dicho.
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Práctica II: Java RMI.
Common Object Request Broker Architecture
Servicios Web.
"java del lado del servidor" Servlet y JSP Java Server Pages.
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Introducción a Remoting
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Informática II Prof. Dr. Gustavo Patiño MJ
Entornos orientados a objetos
RMI Remote Method Invocation
RMI (Remote Method Invocation)
Objetos Distribuidos – Aplicaciones RMI
Lic. Rosemary Torrico Bascopé
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda.
1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso.
Igor Santos Grueiro. Ahora tenemos datos y datos …
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
Ejemplo CORBA: Java IDL
Ingeniero Anyelo Quintero
Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services Thomas Pieper DCC, Universidad de Chile.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
Invocación de Métodos Remotos RMI: Remote Method Invocation
Servicios Web. Servicios web Son programas con funcionalidad accesible a través de protocolo http que permiten la ejecución remota de métodos y funciones.
Patrones Creacionales
JAVA RMI The Java Remote Method Invocation ELO330 – Programación de Sistemas Cesar Vásquez I
1 ONLINE SHOP ‘09 Ainara Ortega Silvia Urdiain Carmen Moriones.
Proyecto de Programación de Sistemas “Uso de Java Native Interface para envío y recepción de datos por puerto paralelo” Nombre: Ignacio Zamora R. Profesor:
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Un sistema de gestión de bases de datos: Es un conjunto de programas que permite a los usuarios crear y mantener una base de datos. Por tanto, el SGBD.
Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.
TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS
INTRODUCCIÓN A JAVA. Índice ¿Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales ¿Qué ventajas tengo como desarrollador?
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru.
Cambiando la manera de diseñar aplicaciones distribuidas Diseño orientado a las comunicaciones: Primero se diseña el protocolo de las comunicaciones y.
Manuel I. Capel Tuñón Ramón A. Carrasco González
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Detalles Generales sobre Java
Modelo de 3 capas.
Elementos y tipos de sistemas operativos
Invocación Dinámica en CORBA
¿Qué son? – tipos – manejo - ejemplos
Clases “ Es una Abstracción de un elemento del mundo real ”
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
Patrón de diseño BROKER
Conociendo el modelo Cliente-Servidor
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
RMI: Invocación a método remoto, y Java RMI
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Tema 1: Concurrencia con Java
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Java RMI. Entornos orientados a objetos  Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí.  Un programa.
Transcripción de la presentación:

RMI Remote Method Invocation 2da. Clase del 19 de Junio Programación Paralela y Distribuida Pedro Chacín (pmchacin@yahoo.com)

Unidad Curricular Programación paralela y distribuida Vinculación con el Proyecto Nacional Simón Bolívar (PPNS) Vinculación con el eje proyecto

Tecnologías de software libre El pueblo se apodera de las tecnologías Mejorando la plataforma Software del gobierno Incorporar la tecnología a la Producción socialista Incorporar a los venezolanos Al sistema educativo, económico Y social. (evitar exclusión) Independencia tecnológica Cooperación tecnológica sin interdependencia

Objetivo Comprender la tecnología de aplicaciones distribuidas usando Java RMI Diseñar, compilar y programar una aplicación simple usando tecnología Java RMI

Definición. Remote Method Invocation. Exclusivo de Java *. Mecanismo/sistema que permite que un objeto ejecutándose en un JVM llame a métodos de otro objeto que esta en una JVM diferente. Para plataformas diferentes se necesitaría SOAP o CORBA. RMI proporciona el mecanismo para transferir información entre procesos de diferentes máquinas.

Estructura. Formado básicamente por 2 programas remotos: Servidor. Crea objetos remotos. Referencia a ellos. Espera por la solicitud de los clientes. Cliente. Obtiene referencia a los objetos remotos. Ejecuta sus métodos. Mecanismo general de comunicación: Localización de objetos: rmiregitry Comunicación con objetos remotos. Control por parte de RMI. Transparencia para el programador del cliente.

Una aplicación... Pasos en los que se observa el desarrollo de una aplicación distribuida RMI: Se inicia el servidor y registra sus objetos y métodos a invocarse en un servicio de nombramiento. Asocia un nombre con el objeto remoto. Se inicia el cliente y localiza los objetos y/o métodos a invocar de manera remota en el directorio de nombres del servidor obteniendo la referencia al objeto. El cliente invoca a los métodos remotos mediante la referencia al objeto obtenida. Espera por respuesta. Serialización de los datos para ser enviados. Invocación del método en el servidor. Termina la ejecución del método en el servidor y se regresa el valor de retorno serializado al cliente.

Esquema de funcionamiento.

Especificación de RMI (en Java). Interfaces, objetos y métodos remotos. Interfaces remotas: Heredan de java.rmi.Remote Lanzan excepción java.rmi.RemoteException. Objetos y métodos remotos. Heredan de java.rmi.server.UnicastRemoteObject ó Heredan de java.rmi.server.Activatable. Paso de parámetros en RMI. Paso de objetos remotos. Paso de objetos locales. Transmisión de datos.

RMI Stub y Skeleton. STUB: Es una representación local EN EL CLIENTE del objeto remoto. El objeto que realiza una llamada remota invoca el método en el stub “local”. Implementa exactamente el mismo conjunto de interfaces remotas que el objeto remoto. Los pasos que realiza son: Inicia una conexión con la JVM remota que contiene el objeto remoto. Escribe (serializa) y transmite los parámetros a la JVM remota. Espera los resultados de la invocación remota. Lee (deserializa) los valores de retorno o excepciones devueltas. Devuelve el valor al objeto que inicio la llamada.

Lee (deserializa) los parámetros del método remoto. Skeleton: Es una representación local EN EL SERVIDOR del objeto remoto. Es responsable de enviar la llamada a la implementación del objeto remoto. Pasos que realiza son: Lee (deserializa) los parámetros del método remoto. Invoca al método en la implementación del objeto remoto. Escribe (serializa) y transmite el resultado. A partir del JDK 1.2 (versión de Java 2) se ha introducido un protocolo stub adicional que elimina la necesidad del uso de los “esqueletos”.

Registro de objetos remotos. RMIRegistry: Se ejecuta en el servidor y es un objeto remoto con un puerto conocido. Relaciona el objeto remoto con un nombre. El contacto directo se tiene con el stub proporcionado por el objeto remoto. Almacena internamente la etiqueta y el objeto stub en un hashmap. Devuelve el stub al cliente que solicito el objeto remoto. En caso de no hacer uso de este ejecutable de Java se encuentran la interfaz Registry y la clase LocateRegistry (con sus métodos createRegustry y getRegistry).

Localización de objetos remotos. Se realiza utilizando la clase java.rmi.Naming. Esta clase “construye” un objeto stub y lo asocia al objeto remoto del registro. Maneja principalmente dos parámetros para la mayoría de sus métodos primordiales: cadena que nombra al objeto (URL): //host:puerto/nombre. Stub del objeto remoto. Hace uso de los siguientes métodos: bind y rebind. lookup. unbind. list.

Creación de una aplicación distribuida. Diseño e implementación de las componentes (interfaz, servidor, cliente). Compilar las fuentes y generar los stubs. Hacer accesibles las clases a la red. Iniciar la aplicación (registro y cliente - servidor).

Metas del sistema RMI de Java. Proporcionar invocación remota de objetos que se encuentran en JVM’s diferentes. Integrar el modelo de objetos distribuidos en Java de forma natural. Intentar simplificar al máximo la escritura de aplicaciones distribuidas. Preservar la seguridad proporcionada por Java. Proporcionar varias semánticas para las referencias de los objetos remotos (persistentes, no persistentes y de "activación retardada" ).

Bibliografía recomendada Java RMI William Grosso Editorial: O'Reilly Primera Editición Octubre 2001 ISBN: 1-56592-452-5, 572 páginas Disponible en http://www.iutllado.edu.ve/descargas/libro_java_rmi.pdf

Práctica Diseño de una aplicación sencilla que usa Java RMI para comunicar un cliente con un servidor remoto. Procedimiento inicial: Crear dos carpetas en c:\ llamadas Cliente Servidor

Crear un servidor RMI Un servidor RMI consiste en definir un objeto remoto que va a ser utilizado por los clientes. Para crear un objeto remoto, se define una interfaz, y el objeto remoto será una clase que implemente dicha interfaz. Veamos como crear un servidor de ejemplo mediante 3 pasos: Definir el interfaz remoto Cuando se crea un interfaz remoto: El interfaz debe ser público. Debe extender (heredar de) el interfaz java.rmi.Remote, para indicar que puede llamarse desde cualquier máquina virtual Java. Cada método remoto debe lanzar la excepción java.rmi.RemoteException en su claúsula throws, además de las excepciones que pueda manejar. Veamos un ejemplo de interfaz remoto: public interface MiInterfazRemoto extends java.rmi.Remote {   public void miMetodo1() throws java.rmi.RemoteException;   public int miMetodo2() throws java.rmi.RemoteException; }

Implementar el interfaz remoto public class MiClaseRemota  extends java.rmi.server.UnicastRemoteObject  implements MiInterfazRemoto {   public MiClaseRemota() throws java.rmi.RemoteException   {     // Código del constructor   }   public void miMetodo1() throws java.rmi.RemoteException   {     // Aquí ponemos el código que queramos     System.out.println("Estoy en miMetodo1()");   }   public int miMetodo2() throws java.rmi.RemoteException   {     return 5; // Aquí ponemos el código que queramos   }   public void otroMetodo()   {     // Si definimos otro método, éste no podría llamarse     // remotamente al no ser del interfaz remoto   }   public static void main(String[] args)   {     try     {       MiInterfazRemoto mir = new MiClaseRemota();       java.rmi.Naming.rebind("//" + java.net.InetAddress.getLocalHost().getHostAddress() +                               ":" + args[0] + "/PruebaRMI", mir);     }     catch (Exception e)     {     }   } }

Crear un cliente RMI Vamos ahora a definir un cliente que accederá a el/los objeto/s remoto/s que creemos. Para ello seguimos los siguientes pasos: Definir la clase para obtener los objetos remotos necesarios La siguiente clase obtiene un objeto de tipo MiInterfazRemoto, implementado en nuestro servidor: public class MiClienteRMI {   public static void main(String[] args)   {     try     {       MiInterfazRemoto mir = (MiInterfazRemoto)java.rmi.Naming.lookup("//" +                                args[0] + “:" + args[1] + "/PruebaRMI");       // Imprimimos miMetodo1() tantas veces como devuelva miMetodo2()       for (int i=1;i<=mir.miMetodo2();i++) mir.miMetodo1();       }       catch (Exception e)       {         e.printStackTrace();       }     }   } }

Compilar y ejecutar el servidor Ya tenemos definido el servidor. Ahora tenemos que compilar sus clases mediante los siguientes pasos: Compilamos el interfaz remoto. javac MiInterfazRemoto.java Luego, compilamos las clases que implementen los interfaces. Y para cada una de ellas generamos los ficheros Stub para mantener la referencia con el objeto remoto, mediante el comando rmic: javac MiClaseRemota.java rmic -d . MiClaseRemota No olvide copiar el objeto stub generado en la carpeta cliente

Para ejecutar el servidor, seguimos los siguientes pasos: Se arranca el registro de RMI para permitir registrar y buscar objetos remotos. El registro se encarga de gestionar un conjunto de objetos remotos a compartir, y buscarlos ante las peticiones de los clientes. Se ejecuta con la aplicación rmiregistry distribuida con Java, a la que podemos pasarle opcionalmente el puerto por el que conectar (por defecto, el 1099): start rmiregistry 1234 Nota:Aparecerá una ventana vacía, no la cierre Por último, se lanza el servidor: java -Djava.rmi.server.hostname=127.0.0.1 MiClaseRemota 1234

Compilar y ejecutar el cliente Una vez que ya tenemos definido el cliente, para compilarlo hacemos: javac MiClienteRMI.java Luego, para ejecutar el cliente hacemos: java MiClienteRMI 127.0.0.1 1234

Resultado Veremos como al ejecutar el cliente, se imprime en el servidor:

... Gracias ...