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