Diferencia entre revisiones de «Java Remote Method Invocation»

Contenido eliminado Contenido añadido
Aosbot (discusión · contribs.)
m Mantenimiento de Control de autoridades
WikiMoliner (discusión · contribs.)
Sin resumen de edición
Línea 1:
{{Copyedit|t=20130515}}
{{referencias|t=20140605142909|informática}}
'''RMI''' ('''''Java Remote Method Invocation''''') es un mecanismo ofrecido por [[Lenguaje de programación Java|Java]] para invocar un [[Método (informática)|método]] de manera remota. Forma parte del entorno [[Norma (tecnología)|estándar]] de ejecución de Java y proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java. Si se requiere comunicación entre otras tecnologías debe utilizarse [[CORBA]] o [[SOAP]] en lugar de RMI.
 
RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP), [[recolección de basura]] distribuida (Garbage Collector distribuido) y paso de tipos arbitrarios (funcionalidad no provista por CORBA).
 
A través de RMI, un programa Java puede exportar un [[Objeto (programación)|objeto]], con lo que dicho objeto estará accesible a través de la [[Red de computadoras|red]] y el programa permanece a la espera de peticiones en un [[Transmission Control Protocol|puerto TCP]]. A partir de ese momento, un [[Cliente (informática)|cliente]] puede conectarse e invocar los métodos proporcionados por el objeto.
 
La invocación se compone de los siguientes pasos:
Línea 26:
La arquitectura RMI puede verse como un modelo de cuatro capas.
 
=== Primera capaCapa ===
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 (Java)|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.
 
=== Segunda capaCapa ===
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 capaCapa ===
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.
 
Línea 126:
* Para ejecutar el servidor, seguimos los siguientes pasos:
** Se arranca el registro de RMI para permitir registrar y buscar objetos remotos. El registro se encarga de gestionar un conjunto de objetos remotos a compartir, y buscarlos ante las peticiones de los clientes. Se ejecuta con la aplicación rmiregistry distribuida con Java, a la que le podemos pasar opcionalmente el puerto por el que conectar (por defecto, el 1099).
 
En el caso de [[Microsoft Windows|Windows]], se debe ejecutar:
start rmiregistry 1234
Y en el caso de Linux: