PROGRAMACIÓN DISTRIBUIDA

RMI

Francisco José Moya Angulo

Índice

Introducción. Arquitectura RMI. Crear aplicaciones distribuidas con RMI. Crear un servidor RMI. Crear un cliente RMI.

compartiendo así recursos y carga de procesamiento a través de varios sistemas.Introducción RMI (Remote Method Invocation) es un mecanismo que permite realizar llamadas a métodos de objetos remotos situados en distintas (o la misma) máquinas virtuales de Java. .

Arquitectura RMI .

server) ‡ De forma explícita: con una llamada al método exportObject () del mismo paquete. ± Una vez que los métodos han sido implementados.rmi.Arquitectura RMI Capa de Aplicación: ± Implementación real de las aplicaciones cliente y servidor.rmi. ‡ De forma implícita: si el objeto hereda de la clase UnicastRemoteObject (paquete java. . ± Llamadas a alto nivel para acceder y exportar objetos remotos. ± Se declaran métodos en una interfaz que herede de java. el objeto debe ser exportado.Remote.

.Arquitectura RMI Capa proxy. Todas las llamadas a objetos remotos y acciones junto con sus parámetros y retorno de objetos tienen lugar en esta capa. ± Esta capa es la que interactúa directamente con la capa de aplicación. o capa Stub ± Skeleton: proxy.

como el establecimiento de las persistencias semánticas y estrategias adecuadas para la recuperación de conexiones perdidas. . 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.Arquitectura RMI Capa de referencia remota: ± Responsable del manejo de la parte semántica de las invocaciones remotas.

El protocolo de transporte subyacente para RMI es JRMP (Java Remote Method Protocol). .Arquitectura RMI Capa de transporte: ± Es la responsable de realizar las conexiones necesarias y manejo del transporte de los datos de una máquina a otra. que solamente es ³comprendido´ por programas Java.

± Un cliente. crea referencias para hacerlos accesibles.Arquitectura RMI Toda aplicación RMI normalmente se descompone en 2 partes: ± Un servidor. y los invoca. y espera a que el cliente los invoque. . que crea algunos objetos remotos. que obtiene una referencia a objetos remotos en el servidor.

. ± Hacer las clases accesibles a la red. ± Compilar los fuentes y generar Stubs. ± Arrancar la aplicación.Crear aplicaciones distribuidas con RMI Se deben seguir los siguientes pasos: ± Diseñar e implementar los componentes de la aplicación distribuida.

. ‡ Implementar los objetos remotos. ‡ Implementar los clientes. ± Se decide la arquitectura de la aplicación y se determina qué componentes son objetos locales y cuales deberían ser accesibles remotamente. ‡ Definir las interfaces remotas. Este paso incluye.Crear aplicaciones distribuidas con RMI Diseñar e implementar los componentes de la aplicación distribuida.

. RMI utiliza una clase Stub del objeto remoto como un proxy en el cliente para que los clientes puedan comunicarse con un objeto remoto particular. ± Se utiliza el compilador javac para compilar los ficheros fuentes de Java que contienen las implementaciones de las interfaces remotas. las clases del servidor y del cliente.Crear aplicaciones distribuidas con RMI Compilar los fuentes y Generar Stubs. ± Se utiliza el compilador rmic para crear los Stubs de los objetos remotos.

se tiene que hacer que todo (los ficheros de clases Java asociados con las interfaces remotas. ± En este paso. los Stubs y otras clases que se necesiten descargar en los clientes) sean accesibles a través de un servidor web.Crear aplicaciones distribuidas con RMI Hacer accesibles las clases en la red. .

Crear aplicaciones distribuidas con RMI Arrancar la aplicación. ± Arrancar la aplicación incluye ejecutar el registro de objetos remotos de RMI. . el servidor y el cliente.

rmi. además de las excepciones que pueda manejar. ± La interfaz debe ser pública. ± Debe heredar de la interfaz java. .RemoteException.Remote.rmi. ± Cada método remoto debe lanzar la excepción java.Crear un servidor RMI Definir la interfaz remota. para indicar que puede llamarse desde cualquier Máquina Virtual Java.

rmi.RemoteException. } .Remote { public void metodo1 () throws java. public void metodo2 () throws java.RemoteException.Crear un servidor RMI Un ejemplo de interfaz remoto: public interface InterfazRemota extends java.rmi.rmi.

´).´).rebind("//" +java.RemoteException { System.Naming.println (³Este es el método 1. } public void metodo3 () { System.println (³Este es el método 2.InetAddress.out.RemoteException { } public void metodo1 () throws java.rmi.getLocalHost().RemoteException { System.println (³Este método no puede llamarse remotamente.rmi.rmi. public class ClaseRemota extends java.Crear un servidor RMI Implementar la interfaz remota. ir). } public static void main(String[] args) { try { InterfazRemota ir = new ClaseRemota().out.´). java.server.rmi.net.getHostAddress() + ³:" + args[0] + "/rmi".rmi.out. } catch (Exception e) { } } } . } public void metodo2 () throws java.UnicastRemoteObject implements InterfazRemota { public ClaseRemota () throws java.

Crear un servidor RMI Compilar y ejecutar el servidor. .

Crear un servidor RMI Compilar y ejecutar el servidor. .

ir.Crear un cliente RMI Definir la clase para obtener los objetos remotos necesarios. } } } .rmi.lookup("//" + args[0] + ³ :" + args[1] + "/rmi"). //Se invoca al método 1 y al método 2) ir.printStackTrace().Naming. public class ClienteRMI { public static void main(String[] args) { try { InterfazRemota ir = (InterfazRemota) java. } catch (Exception e) { e.metodo2 ().metodo1().

.Crear un cliente RMI Compilar y ejecutar el cliente.

.Crear un cliente RMI Compilar y ejecutar el cliente.

.Arquitectura RMI Compilar y ejecutar el cliente.

Sign up to vote on this title
UsefulNot useful