Introducción
La invocación remota de métodos de Java es un modelo de
objetos distribuidos, diseñado específicamente para ese lenguaje, por lo que
mantiene la semántica de su modelo de objetos locales, facilitando de esta
manera la implantación y el uso de objetos distribuidos.
¿Qué es el Remote Method Invocation (RMI) ?
Un RMI permite que una aplicación se comunique con objetos
que residen en programas que se ejecutan en máquinas remotas, el programador
liga el objeto remoto con uno local, conocido como stub. Los mensajes dirigidos
al objeto remoto se envían al stub local. El stub acepta los mensajes que se le
envíen, y a su vez, los envía al objeto remoto, que invoca sus respectivos métodos
apropiados. El resultado de la invocación de dichos métodos en el objeto remoto
se envía de regreso al stub local. Aparte de ligar 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 utilizaría si el objeto se encontrara en una
aplicación local.
Funcionamiento:
Cuando la aplicación del cliente envía un mensaje al stub
local del objeto remoto, la petición se transmite a la máquina que contiene al
objeto real, donde el método es invocado y cualquier resultado retornado al
stub local, de modo que la aplicación cliente puede obtener la respuesta
apropiada.
En java se usa java.rmi.Naming para permitir el acceso a
objetos remotos utilizando un URL para especificar el nombre y lugar del objeto
remoto.
El esqueleto es responsable de despachar la invocación al
objeto remoto.
Acciones que ejecuta:
- Desempaqueta los parámetros necesarios para la ejecución del método remoto.
- Invoca el método de la implantación del objeto remoto.
- Empaqueta los resultados y los envía de vuelta al cliente.
- Tanto cabos como esqueletos, son generados por un compilador llamado rmic.
Características
- Proporcionar invocación remota de objetos que se encuentran en MVs diferentes.
- Soportar llamadas a los servidores desde los applets.
- Integrar el modelo de objetos distribuidos en el lenguaje Java de una manera natural, conservando en medida de lo posible la semántica de los objetos Java.
- Hacer tan simple como sea posible la escritura de aplicaciones distribuidas.
- Preservar la seguridad proporcionada por el ambiente Java.
- Proporcionar varias semánticas para las referencias de los objetos remotos (persistentes, no persistentes y de "activación retardada").
Conclusión
Los RMI son importantes para la construcción de aplicaciones
distribuidas, ayudando en la comunicación de los objetos remotos, aparte de que
posee las características de seguridad de java (las hereda). Sin ellos sería
más difícil hacer un chat entre varias personas o hacer la comunicación entre determinados
objetos remotos (no locales).
Referencias
Introduction
to Remote Method Invocation, 19 de diciembre de 2015, SlideShare, https://es.slideshare.net/elinkbiz/introduction-to-remote-method-invocation-rmi
Remote Method Invocation (RMI) de Java, recuperado el 25 de
noviembre de 2017, Unam, http://lya.fciencias.unam.mx/jloa/rmi.pdf
Sosa Victor, recuperado el 25 de noviembre de 2017,
Cinestav, http://www.tamps.cinvestav.mx/~vjsosa/clases/sd/DAAI_RMI.pdf