Objetos Distribuidos

Documentos relacionados
Modelo de Objetos Distribuidos

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

1. Visión general de RMI

JAVA RMI (REMOTE METHOD INVOCATION)

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

RMI [Remote Method Invocation]

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

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

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

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

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

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI

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

Tema 3. Objetos distribuidos

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI

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

SISTEMAS DISTRIBUIDOS

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET

Programación Orientada por Objetos

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

RMI Remote Method Invocation

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

Lenguaje de programación con JAVA

Programación Orientada a Objetos en Java

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

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

Práctica 5: Common Object Request Broker Architecture CORBA

PROGRAMACION DISTRIBUIDA

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V

Tema 4: INVOCACIÓN REMOTA

OMG - CORBA. Object Management Group. Common Object Request Broker (CORBA)

Seminario de Java. Contenido

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

4 Encuentro Internacional de Computación Aplicada

INTRODUCCIÓN A JAVA. Índice

APLICACIONES DE INTERNET: SOAP

TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA

CORBA. Carpe Diem Quam Minimum Credula Postero. Manual de CORBA (Common Object Request Broker Architecture)

Una introducción a Java RMI

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

SISTEMAS DISTRIBUIDOS Profesor: José Luis Montoya Restrepo

PROGRAMACION DISTRIBUIDA

Remote Method Invocation (RMI) de Java

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

SISTEMAS DISTRIBUIDOS DE REDES 3.- ESTANDAR CORBA Características

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

Cliente/Servidor en Java

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Java en 2 horas. Rodrigo Santamaría

Sistemas de Información

Tema 1. Introducción a JAVA

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

Apéndice 1. SOAP 2 2. CORBA 4 3. JMS 6 4. RMI 8

Práctica sobre compartición de instancias remotas.

TEMA 7: Paso de Mensajes con RMI

UNIVERSIDAD DEL VALLE FACULTAD DE INGENIERIA ESCUELA DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN MAESTRÍA EN INGENIERÍA DE SISTEMAS Y COMPUTACIÓN

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Características generales del lenguaje Java. María a Consuelo Franky

Capítulo 1. Componentes de CORBA.

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

'HVDUUROORGH$SOLFDFLRQHV FRQ-DYD50,

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Componentes Distribuidos EJBs. Ing. Cesar Julio Bustacara Medina

Universidad de Cantabria

Principios de Computadoras II

VII.1: RMI: Remote Method Invocation

MIDDLEWARE: Arquitectura para Aplicaciones Distribuidas Dr. Víctor J. Sosa Sosa

Invocación de Métodos Remotos: prácticas de laboratorio

3.6 Patrón Factory y objetos persistentes. Políticas del POA asociadas

Lenguaje Orientado por Objetos Simple, Poderoso y Fácil de aprender Robusto Interactivo Arquitectura neutral Interpretado y de alto desempeño

Arquitecturas Distribuidas Práctica 6. Introducción a CORBA

Universidad ORT - Arquitectura de Software. Requisitos

Servicios Web: Concepto

Objetos Distribuidos - Componentes. Middleware

Tema 3.1: Introducción a Servicios Web

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Java Avanzado Facultad de Ingeniería. Escuela de computación.

5. Modelos de Sistemas Distribuidos

Servicios Web. Andrés Pastorini. TRIA Tecnólogo Informático

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

Universidad Salesiana de Bolivia

Nómadas (Col) ISSN: Universidad Central Colombia

Arquitecturas Distribuidas en Redes Heterogéneas. Prácticas en CORBA

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Transcripción:

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 encuentran en máquinas distintas Objetos Distribuidos 1

Objetos Distribuidos Objetos Referencias a Objetos Interfaces Acciones Excepciones Garbage collection Objetos Distribuidos Referencias a Objetos Remotas Interfaces Remotas Acciones distribuidas Excepciones distribuidas Garbage collection distribuido Objetos Distribuidos Organización de un Objeto 2

Objetos Distribuidos Tipos de Objetos Tiempo de Compilación (Compile-Time) Tiempo de Ejecución (Runtime) Persistentes Transitorios Ejemplos Enterprise Java Beans (Objeto Remoto) Objetos compartidos distribuido Globe (Objeto Distribuido) Objetos Distribuidos - Procesos Servidores de Objetos servidor diseñado para alojar objetos distribuidos. Este tipo de servidores no proporciona, por sí mismo, un servicio específico. Los servicios específicos son implementados por los objetos que residen en el servidor Invocación de Objetos Qué código debe ejecutar Qué datos debe operar Si debe iniciar un nuevo thread para que se haga cargo de la invocación 3

Objetos Distribuidos - Procesos Servidores de Objetos Invocación de Objetos Soporte una única forma de invocación Soporte diferentes formas de invocación Adaptadores de objetos Objetos Distribuidos Comunicación RMI (Remote Method Invocation) es una extensión de la invocación de métodos locales que permiten que un objeto que vive en un proceso invoque los métodos de un objeto quereside en otro proceso. El modelo de comunicación está construido sobre el protocolo REQUEST-REPLY y con semántica de llamada AL MENOS UNA VEZ o A LO SUMO UNA VEZ. 4

Binding un Cliente a un Objeto (A) Un ejemplo con binding implícito utilizando solamente referencias globales. Distr_object* obj_ref; obj_ref = ; obj_ref-> do_something(); //Declaración de una referencia a un // objeto del sistema (systemwide) // Inicialización de la referencia al // objeto ditribuido // Bind implícito e invocación a un // métdodos. Objetos Distribuidos Comunicación Binding un Cliente a un Objeto (B) Un ejemplo con binding explícito utilizando referencias globales y locales. Distr_object objpref; Local_object* obj_ptr; obj_ref = ; obj_ptr = bind(obj_ref); obj_ptr -> do_something(); //Declaración de una referencia a un //objeto del sistema (systemwide) //Declaración de un puntero a un //objeto local //Inicialización de la referencia al //objeto distribuido. //Bind explícito y obtención de un // puntero al proxy local. //Invocación de un método en el proxy // local. 5

Referencia a un Objeto Dirección de red de la máquina, dirección de Internet Identificación del servidor (puerto) Tiempo Identificación del objeto Interface del Objeto Remoto 32 bits 32 bits 32 bits 32 bits Dir Internet Nro. puerto tiempo Nro.objeto interface del Objeto remoto Objetos Distribuidos Comunicación Forma de Invocación Estática p. ej Fobjeto.append(int) Dinámica Invoke(objeto, método, param entrada, param salida) Invoke(fobjeto, id(append), int) 6

Pasaje de Parámetros Objetos Distribuidos Comunicación Invocación de Métodos Locales y Remotos A invocación remota B local C invocación local E invocación local invocación D remota invocación F 7

Objeto Remoto e Interfaces objeto remoto Datos remota interface m1 implementación { m2 m3 De métodos m4 m5 m6 Objetos Distribuidos Comunicación Arquitectura y Componentes cliente objeto A proxy de B Request servidor skeleton & dispatcher Para clase B s remoto objeto B Reply Módulo de Módulo Comunicación Referencia remota Módulo de Comunicación Módulo Referencia remota Servant 8

Java RMI Java Remote Method Invocation (Java RMI) permite crear aplicaciones distribuidas utilizando la tecnología basada en Java, permitiendo que los métodos de objetos remotos puedan ser invocados desde otra máquina virtual Java, ubicada posiblemente en otro nodo. RMI utiliza serialización de objetos para realizar el marshal y unmarshal de los parámetros y no truncar tipos, soportando el polimorfismo de la orientación a objetos. Releases de Java RMI Java RMI está disponible para la Plataforma Java 2, Standard Edition (J2SE) y la Plataforma Java 2, Micro Edition (J2ME). Objetos Distribuidos Comunicación Java RMI Pasos para realizar una aplicación distribuida 1. Diseñar la interfaz remota 2. Diseñar el programa servidor 3. Diseñar el programa cliente 4. Compilar los fuente y generar los stubs 9

Java RMI - Ejemplo 1.- Diseñar la Interfaz Remota ReceiveMessageInterface.java import java.rmi.*; public interface ReceiveMessageInterface extends Remote { void receivemessage(string x) throws RemoteException; Objetos Distribuidos Comunicación Java RMI - Ejemplo 2.- Diseñar el programa servidor import java.rmi.*; RmiServer.java import java.rmi.registry.*; import java.rmi.server.*; import java.net.*; public class RmiServer extends java.rmi.server.unicastremoteobject implements ReceiveMessageInterface { int thisport; String thisaddress; Registry registry; // rmi registry buscar los objetos remoto. // Es la implementación de ReceiveMessageInterface. public void receivemessage(string x) throws RemoteException { System.out.println(x); 10

public RmiServer() throws RemoteException { try{ // get the address of this host. thisaddress= (InetAddress.getLocalHost()).toString(); catch(exception e){ throw new RemoteException("can't get inet address."); thisport=15500; // puerto seleccionado System.out.println( direccion="+thisaddress+",puerto="+thisport); try{ // creación del registry y bind del nombre y objeto. registry = LocateRegistry.createRegistry( thisport ); registry.rebind("rmiserver", this); catch(remoteexception e){ throw e; Objetos Distribuidos Comunicación static public void main(string args[]) { try{ RmiServer s=new RmiServer(); catch (Exception e) { e.printstacktrace(); System.exit(1); 11

Java RMI - Ejemplo 3.- Diseñar el programa cliente RmiClient.java import java.rmi.*; import java.rmi.registry.*; import java.net.*; public class RmiClient { static public void main(string args[]) { ReceiveMessageInterface rmiserver; Registry registry; String serveraddress=args[0]; String serverport=args[1]; String text=args[2]; System.out.println( Enviando "+text+" a "+serveraddress+":"+serverport); Objetos Distribuidos Comunicación try{ // obtener el registry registry=locateregistry.getregistry(serveraddress, (new Integer(serverPort)).intValue() ); // buscar el objeto remoto rmiserver= (ReceiveMessageInterface)(registry.lookup("rmiServer")); // call the remote method rmiserver.receivemessage(text); catch(remoteexception e){ e.printstacktrace(); catch(notboundexception e){ e.printstacktrace(); 12

Java RMI - Ejemplo 4.- Compilar los fuentes y generar los stubs javac RmiServer.java ReceiveMessageInferface.java javac RmiClient.java ReceiveMessageInterface.java rmic classpath. RmiServer RmiServer_Skel.class RmiServer_Stub.class Objetos Distribuidos Asignación de Nombres Vinculada con el lenguaje de programación. Por ejemplo: proxy de Java Independiente del lenguaje y la plataforma. Por ejemplo en CORBA, se utiliza una referencia a objeto interoperable (IOR). 13

Objetos Distribuidos Asignación de Nombres Organización del IOR Objetos Distribuidos Sincronización 14

Objetos Distribuidos Aspectos a tener en cuenta son: Consistencia Ejecución concurrente. Ordenamiento. Replicación Atención de un requerimiento cuando hay réplicas entre una ó varias invocaciones. Objetos Distribuidos Common Object Request Broker Architecture - CORBA CORBA es un diseño de middleware que permite que los programas de aplicación se comuniquen unos con otros con independencia de sus lenguajes de programación, sus plataformas hardware y software, las redes sobre las que se comunican y sus implementaciones. 15

Objetos Distribuidos - CORBA Componentes independientes del esquema RMI Un lenguaje de definición de interfaces conocido como IDL Una arquitectura Estándares de comunicación. General Inter-ORB (GIOP) Internet Inter-ORB Protocol (IIOP) Objetos Distribuidos - CORBA client program client proxy for A ORB core implementation repository Request Reply interface repository ORB core object adapter server skeleton Servant A or dynamic invocation or dynamic skeleton 16

Bibliografía: - Coulouris,G.F.; Dollimore, J. y T. Kindberg; Distributed Systems: Concepts and Design. 5th Edition Addison Wesley, 2011. - Tanenbaum, A.S.; van Steen, Maarten; Distributed Systems: Principles and Paradigms. 2 nd Edition, Prentice Hall, 2007 and 1 st Edition 2002. 17