Java RMI. Entornos orientados a objetos  Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí.  Un programa.

Slides:



Advertisements
Presentaciones similares
APLICACIONES DISTRIBUIDAS
Advertisements

Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
EXCEPCIONES UNIDAD 5.
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
Introducción a Remoting
Entornos orientados a objetos
RMI Remote Method Invocation
RMI (Remote Method Invocation)
Objetos Distribuidos – Aplicaciones RMI
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Middleware Java 2 Enterprise Edition
RMI JAVA Implementación.
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.
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.
Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services Thomas Pieper DCC, Universidad de Chile.
Invocación de Métodos Remotos RMI: Remote Method Invocation
JAVA RMI The Java Remote Method Invocation ELO330 – Programación de Sistemas Cesar Vásquez I
Tema VI: Java RMI Luis López Fernández.
RMI Remote Method Invocation 2da. Clase del 19 de Junio
Patrones de Diseño: Command
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
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
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Detalles Generales sobre Java
Invocación Dinámica en CORBA
Patrón de diseño BROKER
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
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
ENTERPRISE JAVA BEANS. ACCESO AL EJB EJB_HOME. Accesible mediante JNDI. Permite crear y destruir EJB. EJB_OBJECT Expone los métodos del negocio del EJB.
Trabajar con SERVLETS. Índice Qué son los Servlets Para qué sirven Cómo se utilizan Ejemplo Cómo probar un Servlet.
San Juan Bautista Tuxtepec, Oaxaca a 01 de Septiembre de 2016 INSTITUTO TECNOLÓGICO de Tuxtepec PROGRAMACION EN AMBIENTE CLIENTE-SERVIDOR CORBA PRESENTA:
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Nombre José Francisco Luna Jurado Matricula Asignatura
Clases y Objetos en Java
Diseño y Programación Orientada a Objetos
LOS DIFERENTES LENGUAJES DE PROGRAMACION PARA LA WEB
Programación Orientada a Objetos
Fundamentos de la programación orientada a objetos
Conceptos Básicos de Programación
MODELO CLIENTE -SERVIDOR
Exception Object Throwable Error Exception Runtime Exception.
Introducción a C#.
Diseño y Programación Orientada a Objetos
Modelo OSI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Sonia Rueda Herencia y Polimorfismo
Clases y Objetos en Java
Tema 3. Lenguaje unificado de modelado UML
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Definición de un Sistema Distribuido
INTRODUCCIÓN A JAVA.
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
Características Generales y Entornos de Desarrollo
Curso: fundamentos de redes Profesor: Miguel farfan Sesion: 03
Servicios Web XML 03 de Junio de 2004 Fernando Alonso Blázquez.
“Conceptos Básicos de Java”
Arquitectura Aplicaciones Web
String, random y stream en java
Objetos con linea de ejecucion propia
Lenguaje Java: características técnicas
Clases y Objetos en Java
Creación de un servicio web con RMI 3Unidad N°. comprende el funcionamiento de un servicio web con RMI de manera eficiente y responsable. Logro.
Transcripción de la presentación:

Java RMI

Entornos orientados a objetos  Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí.  Un programa solicita servicios invocando los métodos que ofrece un objeto.  La invocación de métodos se ve como un paso de mensajes.    

Entornos orientados a objetos     DATOS Implementación de métodos (op1, op2,..., opN) op1 op2 opN

Entornos orientados a objetos  Comunicación entre objetos: Mensajes.  Encapsulación.  Identidad del objeto (Identificación).  Herencia.  Acciones.  Clases.  Instancias.  Interfaces vs implementaciones.  Herencia múltiple.  Enlace dinámico.  Recolección de basura.    

Enlace dinámico Shape *aShape; ShapeList *aList; int n = aList ->numberElements(); for (int i=1; i<=n; i++) { aShape = aList -> nthELement(); cout perimeter() << “\n”; }    

Modelo de objetos    

Modelo de objetos en sistemas distribuidos    

Modelo de objetos en sistemas distribuidos  Sistemas distribuidos.  Aplicaciones inherentemente distribuidas.  Se caracterizan por su complejidad.  Sistemas orientados a objetos.  Más cercanos al lenguaje natural.  Facilitan el diseño y la programación.    

Modelo de objetos en sistemas distribuidos  ANSA ( ) fue el primer proyecto que intentó desarrollar una tecnología para modelizar sistemas distribuidos complejos  Utilizaba un diseño orientado a objetos  Estándares:  RMI: invocación de métodos remotos de Java  CORBA: expande DCE con servicios orientados a objetos  DCOM: versión CORBA de Microsoft    

Modelo de objetos en sistemas distribuidos  ROID: Remote Object IDentifier.  Java RMI: ObjID.  Localización de objetos.  Servicio de nombres.  Control de concurrencia.  Transacciones.  Protección de objetos.  Recolección de basura de objetos remotos.    

Invocación de métodos remotos (RMI)  Comunicación cliente/servidor => RPC.  Sistemas distribuidos basados en objetos => RMI (Remote method invocation).  RMI: Acción de invocar un método de un interfaz remoto en un objeto remoto.  RMI ofrece:  Mecanismos para crear servidores y objetos cuyos métodos se puedan invocar remotamente.  Mecanismos que permiten a los clientes localizar los objetos remotos.    

Invocación de métodos remotos en Java  Java RMI  El soporte para RMI en Java está basado en las interfaces y clases definidas en los paquetes java.rmi y java.rmi.server  Características de Java RMI:  No requiere un IDL (Interface Definition Language).  La transferencia de objetos de tipos de datos complejos se lleva a cabo mediante mecanismos de serialización.  Es necesario tratar mayor número de excepciones que en el caso de invocación de métodos locales.    

Invocación de métodos remotos en Java  Localización de objetos remotos:  Servidor de nombres: java.rmi.Naming  Ejemplo: BankAccount acct = new BankAccountImpl(); String url = “rmi://java.Sun.COM/account”; // enlazamos una url a un objeto remoto java.rmi.Naming.bind(url, acct);.... // búsqueda de la cuenta acct = (BankAccount) java.rmi.Naming.lookup(url);    

Arquitectura de Java RMI    

Arquitectura de Java RMI  Nivel de transporte : se encarga de las comunicaciones y de establecer las conexiones necesarias  Nivel de gestión de referencias remotas : trata los aspectos relacionados con el comportamiento esperado de las referencias remotas (mecanismos de recuperación, etc.)  Nivel de resguardo/esqueleto (proxy/skeleton) que se encarga del aplanamiento (serialización) de los parámetros  proxy: resguardo local. Cuando un cliente realiza una invocación remota, en realidad hace una invocación de un método del resguardo local.  Esqueleto (skeleton): recibe las peticiones de los clientes, realiza la invocación del método y devuelve los resultados.    

¿Cómo escribir aplicaciones con Java RMI?    

Ejemplo    

Modelización de la interfaz remota (Sumador) public interface Sumador extends java.rmi.Remote { public int sumar(int a, int b) throws java.rmi.RemoteException; }    

Clase que implementa la interfaz (SumadorImpl) import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class SumadorImpl extends UnicastRemoteObject implements Sumador { public SumadorImpl(String name) throws RemoteException { super(); try { System.out.println("Rebind Object " + name); Naming.rebind(name, this); } catch (Exception e){ System.out.println("Exception: " + e.getMessage()); e.printStackTrace(); } } public int sumar (int a, int b) throws RemoteException { return a + b; } }    

Código del servidor (SumadorServer) import java.rmi.*; import java.rmi.server.*; public class SumadorServer { public static void main (String args[]) { try { SumadorImpl misuma = new SumadorImpl("MiSumador"); } catch(Exception e) { System.err.println("System exception" + e); } } }    

Registro del servicio  Antes de arrancar el cliente y el servidor, se debe arrancar el programa rmiregistry en el servidor para el servicio de nombres. El puerto que utiliza el rmiregistry por defecto es el  rmiregistry [port_number]  El método rebind es utilizado normalmente en lugar del método bind, porque garantiza que si un objeto rémoto se registró previamente con dicho nombre, el nuevo objeto reemplazará al antiguo.    

Código en el cliente (SumadorClient) import java.rmi.registry.*; import java.rmi.server.*; public class SumadorClient { public static void main(String args[]){ int res = 0; try { System.out.println("Buscando Objeto "); Sumador misuma = (Sumador)Naming.lookup("rmi://" + args[0] + "/" +"MiSumador"); res = misuma.sumar(5, 2); System.out.println("5 + 2 = " + res); } catch(Exception e){ System.err.println(" System exception"); } System.exit(0); } }    

Búsqueda  Cualquier programa que quiera instanciar un objeto remoto debe realizar una búsqueda de la siguiente forma: Sumador misuma = (Sumador)Naming.lookup("rmi://" + args[0] + "/" +"MiSumador");  El método lookup devuelve una referencia remota a un objeto que implementa la interfaz remota.  El método lookup interactúa con rmiregistry.    

Pasos  Java RMI:  Enlace a un nombre: bind(), rebind()  Encontrar un objeto y obtener su referencia: lookup()  refObj.nombre_met()    

Cuadro general     ClienteServidor Stub Skeleton Red op1 op2 opN

¿Cómo se ejecuta?  Compilación javac Sumador.java javac SumadorImpl.java javac SumadorClient.java javac SumadorServer.java  Generación de los esqueletos rmic SumadorImpl  Ejecución del programa de registro de RMI rmiregistry  Ejecución del servidor java SumadorServer  Ejecución del cliente java SumadorCliente    

Java RMI vs CORBA  Java RMI es más sencillo:  Trata sólo con objetos Java.  Java RMI permite pasar por valor cualquier objeto que se pueda “serializar”.  CORBA es más flexible:  Proporciona soporte RMI de objetos implementados en diversos lenguajes y clientes escritos también en distintos lenguajes.  CORBA añade bastante complejidad.    