top of page

RMI: Remote Method Invocation

  • Angel Gutierrez
  • 1 may 2013
  • 3 Min. de lectura

RMI es un mecanismo que permite realizar llamadas a métodos de objetos remotos situados en distintas computadoras virtuales de JAVA, compartiendo así recursos y carga de procesamiento a través de varios sistemas. Esta aplicación distribuida es basada exclusivamente en Java. Si se requiere comunicarse entre otras tecnologías debe utilizarse CORBA o SOAP en lugar de RMI.

La base de la tecnología del RMI es el RPC (Remote Procedure Calling) que es ejecutar un proceso o un segmento de código de manera remota, sin salir del procesamiento local.

RMI es un paquete JAVA que permite manejar objetos de manera remota, para utilizar los recursos de un servidor de manera transparente para el usuario local.

METAS DEL SISTEMA RMI

  • 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" ).

FUNCIONES RMI

  • Localizar objetos remotos.

  • Comunicarse con los objetos remotos.

  • Cargar el código de operación que implementa a las clases que son pasadas por valor.

En la figura se muestra una aplicación distribuida, basada en RMI, que utiliza al servidor de nombres rmiregistry para obtener referencias de objetos remotos

INVOCACION

La invocación se compone de los siguientes pasos:

  • Encapsulado: de los parámetros (utilizando la funcionalidad de serialización de Java).

  • Invocación: Invocación del método (del cliente sobre el servidor). El invocador se queda esperando una respuesta.

  • Comunicación: Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo envía al cliente

  • Respuesta: El código cliente recibe la respuesta y continúa como si la invocación hubiera sido local

ARQUITECTURA

La arquitectura RMI puede verse como un modelo de cuatro capas

  • Primera Capa: 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.

  • Segunda Capa: 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.

  • Tercera 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.

  • Cuarta Capa: 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

ELEMENTOS

Toda aplicación RMI se descompone de 2 partes:

  • Servidor: que crea algunos objetos remotos, crea referencias para hacerlos accesibles, y espera a que el cliente los invoque.

  • Cliente: que obtiene una referencia a objetos remotos en el servidor, y los invoca.

SEGURIDAD

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.

  • 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

CONCLUSIONES

  • La utilización de objetos en el desarrollo de sistemas distribuidos, presenta varias ventajas que permiten ocultar las dificultades inherentes a la distribución en niveles de abstracción inferiores.

  • La invocación remota de métodos en Java parte del hecho de correr sobre una plataforma heterogenea.

  • RMI posee todas las características de seguridad que hereda de la plataforma Java misma.

  • Sabemos que el Java es el lenguaje que utiliza el cliente y el servidor en la Web. Por lo tanto es importante evaluar cómo cada medio se integra con Java.

REFERENCIAS BIBLIOGRAFICAS

  • http://www.iuma.ulpgc.es/users/lhdez/inves/pfcs/memoria-domingo/node17.html

  • http://www.tamps.cinvestav.mx/~vjsosa/clases/sd/DAAI_RMI.pdf

  • http://www.adictosaltrabajo.com/tutoriales/rmi/

  • https://es.wikipedia.org/wiki/Java_Remote_Method_Invocation

 
 
 

Comments


Featured Posts
Recent Posts
Search By Tags
Follow Us
  • Facebook Classic
  • Twitter Classic
  • Google Classic
bottom of page