Olga Isela Ceballos Miranda.
RMI.
INTRODUCCIN
El objetivo de esta investigacin es presentar a detalle los aspectos bsicos de
Remote Method Invocation o Invocacin de Mtodos Remota (RMI). Cuando
utilizamos sockets, debemos de establecer bien el cmo se transmiten fsicamente
los datos entre los extremos de una conexin.
RMI nos ofrece la ventaja de olvidarnos de los detalles de la transmisin de datos,
y centrarnos ms bien en disear de manera correcta la lgica de la aplicacin, ya
que nos permite acceder a un objeto remoto como si de un objeto local se tratase.
Los mensajes dirigidos al objeto remoto se envan al stub local, como si fuera el
objeto real. El stub acepta los mensajes que se le enven, y a su vez, los enva al
objeto remoto, el cual invoca sus mtodos apropiados.
El resultado de la invocacin de los mtodos en el objeto remoto se enva de
regreso al stub local, que los remite al emisor original de la llamada.
DESARROLLO
Antes de poder responder a la pregunta de Qu es RMI? Debemos remontarnos
a la base misma de RMI, que es Remote Procedure Calling (RCP), que es
bsicamente la transferencia de datos y control entre dos partes de un programa
distribuido a travs de espacios de direcciones disjuntas.
RMI es un paquete de JAVA que nos permite manejar objetos, as como sus
respectivos mtodos de manera remota, para utilizar los recursos de un servidor
de manera transparente para el usuario local.
La manera en que RMI y RCP en general logra hacer esto, es por medio de lo que
se conoce como STUBs. Los stubs pueden simular el comportamiento de cdigo
existente, tal como un procedimiento en una mquina remota.
Pgina 1 de 6
El funcionamiento general se da de la siguiente manera:
Internamente RMI utiliza serializacin de objetos para encargarse de la
transmisin de datos a travs de la red.
Para localizar un objeto al que se desee acceder, RMI proporciona un
registro que se usa a modo de pginas amarillas.
Como respuesta de las llamadas a mtodos de un objeto remoto, RMI
devuelve objetos y se encarga de obtener los bytecodes que sean
necesarios.
El servidor crea algunos objetos y los hace accesibles a travs del registro.
A continuacin, se queda esperando a recibir peticiones.
El cliente obtiene una referencia a un objeto remoto y la utiliza para invocar
mtodos del objeto de forma remota.
Objetos e interfaces remotos
Para que un objeto sea accesible de forma remota, ha de implementar un interfaz
remoto.
Cuando una llamada a un mtodo realizada desde el cliente devuelve un objeto
remoto, en vez de obtener una copia del objeto, se obtiene una referencia al objeto
remoto.
Desarrollo de aplicaciones distribuidas con RMI
1. Crear los distintos componentes de la aplicacin, implementando una
interfaz derivada de java.rmi.Remote.
2. Compilar con javac y generar los stubs con rmic.
3. Hacer accesibles los objetos remotos.
4. Arrancar la aplicacin, que incluye el registro RMI, el servidor y el cliente.
Ejemplo: Plataforma distribuida de cmputo.
Servidor RMI
1. Interfaz remota
Pgina 2 de 6
Para los objetos a los que se acceder de forma remota:
2. Objetos serializables
Aquellos que se transmitiran a travs de la red:
3. Implementacin del servidor
Para resaltar algunos aspectos de ste cdigo:
Pgina 3 de 6
Security Manager: Encargado de controlar las acciones realizadas por el
cdigo que se descarga a travs de la red.
Naming.rebind(): Registra un objeto para que se pueda acceder a l de
manera remota a travs de una URL.
Mientras que exista alguna referencia a ese objeto, el servidor no finalizar
su ejecucin.
4. Cliente RMI
Extensiones de RMI: Jini
Jini est montado sobre RMI y permite descubrir dinmicamente qu dispositivos y
servicios estn disponibles en la red, sin tener que saber de antemano su
localizacin exacta (plug & play)
Como algunas alternativas a RMI, tenemos CORBA que se haba investigado con
anterioridad, que bsicamente es un estndar complejo que permite la
implementacin de sistemas distribuidos basados en objetos, independientemente
del lenguaje de programamcin.
O .NET Remoting que es una alternativa a Java.
CONCLUSION
Yo considero de suma utilidad este paquete de Java para fines del proyecto
integrador, no es muy difcil la implementacin de ste adems de que tiene
muchas funcionalidades. Para m fue interesante el hecho de conocer que es una
Pgina 4 de 6
versin simplificada de CORBA que se haba investigado previamente, ya que es
sencillo, pero no menos eficiente.
Es importante resaltar que como tiene ventajas tambin tiene algunas
desventajas, como que es de uso exclusivo de Java, problema que quizs est
parcialmente resuelto con las posibilidades incorporadas en las ltimas versiones
de Java.
REFERENCIAS
Iuma.ulpgc.es. (2016). 3. API RMI. [online]
Available:
http://www.iuma.ulpgc.es/users/lhdez/inves/pfcs/memoriadomingo/node6.html#SECTION03350000000000000000
[Accessed 25 Sep. 2016].
Profesores.elo.utfsm.cl. (2016). Proyecto de Programacion de Sistemas. [online]
Available:
http://profesores.elo.utfsm.cl/~agv/elo330/2s05/projects/CesarVasquez/sitio_web/que_es.html
[Accessed 25 Sep. 2016].
Pgina 5 de 6
Pgina 6 de 6