Post on 22-Jan-2016
description
PROGRAMACION ORIENTADA A OBJETOS II CÓD. 11.55.305
https://sites.google.com/a/ufps.edu.co/borisperezg
UNIDAD 7: REMOTE METHOD INVOCATION
• Definición • Servidor RMI • Cliente RMI • Ejemplos
Obje;vo: hacer que el soAware distribuido se programe igual que una aplicación no distribuida.
Mediante el modelo RPC la comunicación se realiza conceptualmente igual que la invocación de
un procedimiento local.
UNIDAD 7: RMI
INTRODUCCIÓN
Pasos:
• A llama al procedimiento remoto de B
• La llamada dispara una acción de un procedimiento de B
• Al finalizar el procedimiento, B devuelve el valor a A
Simplifica la comunicación entre procesos y la sincronización de eventos.
Ejemplos:
• Open Network Compu;ng Remote Procedure Call, desarrollada a par;r del API RPC de Sun
Microsystems a comienzo de los años 80
• Distributed Compu;ng Environment (DCE) RPC de Open Group
• Simple objeto Access Protocol (SOAP)
INTRODUCCIÓN
UNIDAD 7: RMI
Primera aproximación al uso de un modelo orientado a objetos sobre aplicaciones distribuidas
Objetos distribuidos dentro de una red.
• Los objetos proporcionan métodos, los cuales dan acceso a los servicios
Ejemplo:
Remote method invoca;on (RMI) de Java
INTRODUCCIÓN
UNIDAD 7: RMI
El mecanismo RMI (Remote Method Invoca;on) permite que una aplicación se comunique con
objetos que residen en programas que se ejecutan en máquinas remotas. En esencia, en lugar de
crear un objeto, el programador enlaza el objeto remoto con un objeto local, conocido como
stub.
Los mensajes dirigidos al objeto remoto se envían al stub local, como si fuera el objeto real. El
stub acepta los mensajes que se le envíen, y a su vez, los envía al objeto remoto, el cual invoca
sus métodos apropiados. El resultado de la invocación de los métodos en el objeto remoto se
envía de regreso al stub local, que los remite al emisor original de la llamada.
Aparte de enlazar el stub con el objeto remoto, el código escrito por el programador para
comunicar con el objeto remoto es igual al código que se u;lizaría si el objeto se encontrara en
una aplicación local.
INTRODUCCIÓN
UNIDAD 7: RMI
INTRODUCCIÓN
A con;nuación se muestra una aplicación cliente ejecutándose en una máquina A, que envía un
mensaje a un objeto remoto en una aplicación servidor que se ejecuta en una máquina B.
Cuando la aplicación cliente envía un mensaje al stub local del objeto remoto, la pe;ción se
transmite a la máquina que con;ene al objeto real, donde el método es invocado y cualquier
resultado es retornado al stub local, de modo que la aplicación cliente puede obtener la
respuesta apropiada.
UNIDAD 7: RMI
INTRODUCCIÓN
UNIDAD 7: RMI
INTRODUCCIÓN
El soporte para RMI en Java está basado en las interfaces y clases definidas en los paquetes
java.rmi y java.rmi.server.
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.
Servicio de directorios:
• rmiregistry, servicio de directorios de Java
• Se ejecuta en la máquina servidor objeto
UNIDAD 7: RMI
INTRODUCCIÓN
Comparación RMI y sockets
Ventajas:
• Los programas RMI son más sencillos de diseñar
• Servidor RMI concurrente
Inconvenientes:
• Sockets ;enen menos sobrecarga
• RMI sólo para plataformas Java
UNIDAD 7: RMI
INTRODUCCIÓN
La clase java.rmi.Naming
La clase Naming con;ene los siguientes métodos está;cos que permiten el acceso a objetos
remotos u;lizando un URL para especificar el nombre y lugar del objeto remoto.
UNIDAD 7: RMI
INTRODUCCIÓN
La clase java.rmi.Naming
El URL se presenta en la forma rmi://host:port/objectName, donde:
UNIDAD 7: RMI
ARQUITECTURA RMI
UNIDAD 7: RMI
ARQUITECTURA RMI
Nivel de resguardo o stub
• Se encarga del aplanamiento de los parámetros.
• Stub: resguardo local. Cuando un cliente realiza una invocación remota, en realidad hace una
invocación de un método del resguardo local.
Nivel de gesSón de referencias remotas
• Interpreta y ges;ona las referencias a objetos remotos.
• Invoca operaciones de la capa de transporte.
Nivel de transporte
• Se encarga de las comunicaciones y de establecer las conexiones necesarias.
• Basada en protocolo TCP
UNIDAD 7: RMI
SERVIDOR RMI
UNIDAD 7: RMI
SERVIDOR RMI
Interface
The Remote interface serves to iden;fy interfaces whose methods may be invoked from a non-‐local virtual
machine. Any object that is a remote object must directly or indirectly implement this interface. Only those
methods specified in a "remote interface", an interface that extends java.rmi.Remote are available remotely.
ImplementaSon classes can implement any number of remote interfaces and can extend other remote
implementa;on classes. RMI provides some convenience classes that remote object implementa;ons can
extend which facilitate remote object crea;on. These classes are java.rmi.server.UnicastRemoteObject and
java.rmi.ac;va;on.Ac;vatable.
UNIDAD 7: RMI
SERVIDOR RMI
Server
UNIDAD 7: RMI
SERVIDOR RMI
Server
Registry is a remote interface to a simple remote object registry that provides methods for
storing and retrieving remote object references bound with arbitrary string names.
Registry enables RMI client bootstrapping: it provides a simple means for a client to obtain an
ini;al reference to a remote object.
The LocateRegistry class provides a programma;c API for construc;ng a bootstrap reference to a
Registry at a remote address and for crea;ng and expor;ng a Registry in the current VM on a
par;cular local address.
UNIDAD 7: RMI
SERVIDOR RMI
Server
A Registry implementa;on may choose to restrict access to some or all of its methods (for
example, methods that mutate the registry's bindings may be restricted to calls origina;ng from
the local host). If a Registry method chooses to deny access for a given invoca;on, its
implementa;on may throw AccessExcep;on, which (because it extends RemoteExcep;on) will be
wrapped in a ServerExcep;on when caught by a remote client.
The names used for bindings in a Registry are pure strings, not parsed. A service which stores its
remote reference in a Registry may wish to use a package name as a prefix in the name binding
to reduce the likelihood of name collisions in the registry.
UNIDAD 7: RMI
SERVIDOR RMI
Client
UNIDAD 7: RMI
Gracias por su atención
borisperezg@ufps.edu.co
Boris Pérez