RMI
Introducción:
Dentro
de la programación existen varios tipos de métodos, pero con características diferentes
para cada uno y su funcionamiento varia de igual forma, en la computación distribuida
se puede apreciar un método como el RMI.
Desarrollo:
Es
un mecanismo que permite realizar llamadas a métodos de objetos remotos
situados en distintas (o la misma) máquinas virtuales de Java, compartiendo así
recursos y carga de procesamiento a través de varios sistemas.
En
las aplicaciones RMI podemos distinguir entre programas clientes y servidores:
- El programa servidor es el encargado de crear objetos remotos, poner accesibles mediante RMI referencias a ellos para que los programas clientes puedan acceder a sus métodos.
- El programa cliente obtiene referencias de objetos remotos que el servidor ha puesto disponibles y puede invocar sus métodos Pedro J. Muñoz Merino Diseño de Aplicaciones Telemáticas 19 el servidor ha puesto disponibles y puede invocar sus métodos.
- Además el cliente puede pasar los bytecodes de clases que necesite el servidor porque se le hayan pasado como parámetro. RMI es la herramienta que soporta todo esto.
- Para todo ello se usa JAVA.
La
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.
La
capa de transporte de RMI intenta abrir sockets directamente a puertos de los
servidores a los que se desea conectar, pero en el caso de que los clientes se
encuentren detrás de algún firewall que no permita este tipo de conexiones, la
capa de transporte estándar de RMI proporciona un mecanismo alterno basado en
el protocolo HTTP (confiable para el firewall), para permitir a los clientes
que se encuentran detrás del firewall, invocar métodos de objetos que se
encuentren del otro lado de él.
Para
atravesar el firewall, la capa de transporte de RMI incluye la llamada remota
dentro del protocolo HTTP, como el cuerpo de una solicitud POST, mientras que
los valores de retorno se reciben en el cuerpo de la respuesta HTTP. La capa de
transporte de RMI puede formular la solicitud POST, de alguna de las dos
maneras siguientes:
- Si el proxy firewall permite entregar una solicitud HTTP directamente sobre cualquier puerto de la máquina destino, la solicitud se dirige directamente al puerto donde el servidor RMI se encuentra escuchando. La capa de transporte RMI en la máquina destino escucha con un socket que es capaz de entender y decodificar llamadas RMI, que se encuentren dentro de una solicitud POST.
- Si el proxy firewall sólo entrega solicitudes HTTP a ciertos puertos HTTP bien conocidos, la llamada se envía a un servidor HTTP que se encuentre escuchando en el puerto 80, donde se puede ejecutar un guión (script) CGI que se encargue de enviar la llamada RMI al puerto específico del servidor.
Características
.:.Concurrencia
Para
cada cliente que trate de acceder a un objeto remoto, el servidor creará un
nuevo hilo que se encargará de darle servicio.
.:.Nombrado
de objetos
Utiliza
la notación URL. Por Ejemplo: rmi://localhost:8080/miObjeto
.:.Paso
de parámetros
La
Serialización se encarga de informar al compilador y al entorno de ejecución de
Java que deberá pasar por valor copias de los objetos de este tipo desde la JVM
local a la JVM remota.
Conclusiones:
Este
es un método que te puede ayudar a tu desarrollo de las aplicaciones que tengas
pendientes, el apoyo que se requiere con los hilos va de la mano y ayuda para
el buen funcionamiento del programa.
Referencias:
Henry Tenorio (2008)
Aplicaciones Distribuidas con Java Remote Method Invocation
Recuperado el 25/11/17, de
http://asteriscus.com/presentacion/RMI%20-%20Henry%20Tenorio.pdf
Recuperado el 25/11/17, de
http://asteriscus.com/presentacion/RMI%20-%20Henry%20Tenorio.pdf
Rolando Menchaca Méndez, Félix
García Carballeira (2001) Java RMI
Recuperado el 25/11/17, de
http://www.revista.unam.mx/vol.2/num1/art3/
Recuperado el 25/11/17, de
http://www.revista.unam.mx/vol.2/num1/art3/
Pedro J. Muñoz Merino (2008) Servicios
Web y RMI
Recuperado el 25/11/17, de
http://www.it.uc3m.es/pedmume/DAT/ficheros/08_RMI_ServiciosWeb.pdf
Recuperado el 25/11/17, de
http://www.it.uc3m.es/pedmume/DAT/ficheros/08_RMI_ServiciosWeb.pdf
Enrique Medina Montenegro (2003)
PROGRAMACIÓN DISTRIBUIDA CON RMI
Recuperado el 25/11/17, de
https://www.adictosaltrabajo.com/tutoriales/rmi/
Recuperado el 25/11/17, de
https://www.adictosaltrabajo.com/tutoriales/rmi/
Comentarios
Publicar un comentario