RMI

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

RMI (Remote Method Invocation).

En este presente documento se realizará la investigación sobre el tema RMI,


solicitada en la materia de “Programación en ambiente Cliente-Servidor” impartida
por la profesora y ingeniera Virginia Gonzales Castro.

Remote Method Invocation.


RMI permite exportar objetos como objetos remotos para que otro proceso remoto
pueda acceder directamente como un objeto Java. Todos los objetos de una
aplicación distribuida basada en RMI deben ser implementados en Java. Esta es
una de las principales ventajas de RMI, ya que RMI forma parte del API de Java,
con lo que la integración de objetos remotos en aplicaciones distribuidas se realiza
sin necesidad de usar recursos adicionales. De hecho, se utiliza la misma sintaxis
para una llamada a un objeto remoto o un objeto local.
Stub y el skeleton.
RMI utiliza el objeto stub y el skeleton para la comunicación con el objeto remoto.
Un objeto remoto es un objeto cuyo método se puede invocar desde otra JVM.
Stub
El stub es un objeto, actúa como puerta de enlace para el lado del cliente. Todas
las solicitudes salientes se enrutan a través de él. Reside en el lado del cliente y
representa el objeto remoto. Cuando la persona que llama invoca el método en el
objeto stub, realiza las siguientes tareas:
-Inicia una conexión con una máquina virtual remota (JVM).
-Escribe y transmite (marshals) los parámetros a la máquina virtual remota (JVM).
-Espera el resultado.
-Lee (desarma) el valor devuelto o la excepción.
-Finalmente, devuelve el valor a la persona que llama.
Skeleton.
El esqueleto es un objeto, actúa como puerta de enlace para el objeto del lado del
servidor. Todas las solicitudes entrantes se enrutan a través de él. Cuando el
esqueleto recibe la solicitud entrante, realiza las siguientes tareas:
1. Lee el parámetro para el método remoto.
2. Invoca el método en el objeto remoto real, y
3. Escribe y transmite (ordena) el resultado a la persona que llama.
En el SDK de Java 2, se introdujo un protocolo stub que elimina la necesidad de
esqueletos.

El mecanismo RMI (Remote Method Invocation) permite que una aplicación o applet
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 liga el objeto
remoto con un representante 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.
Arquitectura.
RMI puede verse como un modelo de cuatro capas:
La primera capa es la de aplicación y se corresponde con la implementación real
de las aplicaciones cliente y servidor. Aquí tienen lugar las llamadas a alto nivel para
acceder y exportar objetos remotos. Cualquier aplicación que quiera que sus
métodos estén disponibles para su acceso por clientes remotos debe declarar
dichos métodos en una interfaz que extienda java.rmi.Remote. Dicha interfaz se usa
básicamente para «marcar» un objeto como remotamente accesible. Una vez que
los métodos han sido implementados, el objeto debe ser exportado. Esto puede
hacerse de forma implícita si el objeto extiende la clase UnicastRemoteObject
(paquete java.rmi.server), o puede hacerse de forma explícita con una llamada al
método exportObject()
del mismo paquete.
La capa 2 es la capa proxy, o capa stub-skeleton. Esta capa es la que interactúa
directamente con la capa de aplicación. Todas las llamadas a objetos remotos y
acciones junto con sus parámetros y retorno de objetos tienen lugar en esta capa.
La capa 3 es la de referencia remota, y es responsable del manejo de la parte
semántica de las invocaciones remotas. También es responsable
de la gestión de la replicación de objetos y realización de tareas específicas de la
implementación con los objetos remotos, como el establecimiento de las
persistencias semánticas y estrategias adecuadas para la recuperación de
conexiones perdidas. En esta capa se espera una conexión de tipo stream (stream-
oriented connection)desde la capa de transporte.
La capa 4 es la de transporte. Es la responsable de realizar las conexiones
necesarias y manejo del transporte de los datos de una máquina a otra. El protocolo
de transporte subyacente para RMI es JRMP (Java Remote Method Protocol), que
solamente es «comprendido» por programas Java.
RMI normalmente se descompone en 2 partes:
-El servidor crea algunos objetos y los hace accesibles a través del registro. A
continuación, se queda esperando a recibir peticiones.
-El cliente obtiene una referencia a un objeto remoto (que está alojado en el
servidor) y la utiliza para invocar métodos del objeto de forma remota.

Desarrollo de aplicaciones distribuidas con RMI


1. Crear los distintos componentes de la aplicación, teniendo en cuenta que, para
que a un objeto se pueda acceder de forma remota con RMI, es necesario que
implemente una interfaz derivada de java.rmi.Remote.
2. Compilar con javac y generar los stubs con rmic.
3. Hacer accesibles los objetos remotos (usualmente, dejando los bytecodes
correspondientes a los interfaces remotos y a los stubs en algún servidor web).
4. Arrancar la aplicación, que incluye el registro RMI, el servidor y el cliente

El servidor RMI
1. Interfaz remota. Para los objetos a los que se accederá de forma remota:

2. Objetos serializables. Aquéllos que se transmitirán a través de la red:


3. Implementación del servidor.
El cliente RMI

La característica más destacable de RMI es que el servidor no tiene por qué


disponer de antemano de los bytecodes asociados a la tarea que ha de ejecutar.
Cuando recibe la petición del cliente, carga los bytecodes en su máquina virtual,
ejecuta la tarea y devuelve el resultado.

Referencias.
Getting Started Using Java RMI. (s. f.).

https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/hello/hello-world.html

Montenegro, E. M. (2003, 5 septiembre). Aplicación básica con RMI. Adictos al trabajo.

https://www.adictosaltrabajo.com/2003/09/05/rmi/

Remote Method Invocation (RMI) - javatpoint. (s. f.). www.javatpoint.com.

https://www.javatpoint.com/RMI

Sesion 1: Introduccion a RMI. (s. f.). http://www.jtech.ua.es/j2ee/2003-

2004/modulos/rmi/sesion01-apuntes.htm

También podría gustarte