RMI
RMI
RMI
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.
El servidor RMI
1. Interfaz remota. Para los objetos a los que se accederá de forma remota:
Referencias.
Getting Started Using Java RMI. (s. f.).
https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/hello/hello-world.html
https://www.adictosaltrabajo.com/2003/09/05/rmi/
https://www.javatpoint.com/RMI
2004/modulos/rmi/sesion01-apuntes.htm