¿QUÉ ES? RMI es un mecanismo ofrecido por Java para invocar un método de manera remota. A partir de ese momento. un cliente puede conectarse e invocar los métodos proporcionados por el objeto. A través de RMI. . con lo que dicho objeto estará accesible a través de la red y el programa permanece a la espera de peticiones en un puerto TCP. un programa Java puede exportar un objeto. Forma parte del entorno 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.

Metas del Sistema RMI de Java Las metas que se pretenden alcanzar al soportar objetos distribuidos en Java. Preservar la seguridad proporcionada por el ambiente Java. . son: • • • • Proporcionar invocación remota de objetos que se encuentran en MVs diferentes. Soportar llamadas a los servidores desde los applets. Hacer tan simple como sea posible la escritura de aplicaciones distribuidas.

e invoca sus métodos por medio del sistema RMI de Java. pueden comunicarse. son: . el que se encarga de proporcionar los mecanismos mediante los cuales. tanto clientes como servidores. Una aplicación servidora que utiliza RMI. Las funciones esenciales que deben desarrollar las aplicaciones distribuidas. generalmente crea cierto número de objetos remotos.Desarrollo de Aplicaciones Distribuidas. Una aplicación cliente típica obtiene referencias de uno o más objetos remotos. permite que se creen referencias a dichos objetos y espera a que algún cliente invoque de manera remota los métodos de dichos objetos.

son manejados por el sistema RMI. proporciona los mecanismos necesarios para.• Localizar objetos remotos: Las aplicaciones cliente tienen dos alternativas para obtener referencias de objetos remotos. Una aplicación puede registrar sus objetos remotos ante un servidor de nombres llamado rmiregistry. Para el programador. Cargar el código de operación que implementa a las clases que son pasadas por valor: Debido a que RMI permite pasar objetos Java puros como parámetros en la invocación de métodos de objetos remotos. • • . Comunicarse con los objetos remotos: Los detalles de la comunicación entre los objetos remotos. o la aplicación puede pasar referencias a objetos remotos como parámetro de una invocación o como valor de retorno. la comunicación entre objetos se asemeja a la utilizada normalmente en programas Java. por medio de un servidor HTTP o FTP cargar el código y los datos de dichos objetos.

. hace las siguientes tarea: 1.Se espera el resultado 4.Se inicia una conexión con una maquina virtual remota. RMI utiliza código auxiliar y el esqueleto objeto para la comunicación con el objeto remoto. Cuando la persona que llama invoca en método en el objeto stub...Stub y Skeleton.Se lee el valor de retorno o de excepción 5.Finalmente.. Reside en el lado cliente y representa el objeto remoto.. Entendamos el talón y lo objetos esqueletos: Stub. El Stub es un objeto. 2. . Un objeto remoto es un objeto cuyo método se puede invocar desde otra JVM. Todas la peticiones salientes se en rutan a través de él.Se escribe y transmite los parámetros de la maquina virtual remota. devuelve el valor a la persona que llama. 3. actúa como una puerta de entrada para el lado del cliente.

3.Se invoca el método en el objeto actual. 2. Todas las peticiones entrantes se en rutan a través de el.Se escribe y transmite el resultado a la persona que llama.. actúa como una puerta de entrada para el objeto del servidor. hace las siguientes tareas: 1. Cuando el esqueleto recibe la solicitud entrante..Skeleton. El esqueleto es un objeto.Se lee el parámetro para el método remoto. ..

.

..Crear y activar la aplicación remota 6.Crear y activar la aplicación cliente .. Aquí se dan los 6 pasos para escribir el programa RMI 1..Compilar la clase de implementación y crear el stub y skeleton objetos utilizando la herramienta RMIC 4..Pasos para escribir el programa RMI.Inicie el servicio de registro por la herramienta rmiregistry 5.Crear la interfaz remota 2.Proporcionar la implementación de la interfaz remota 3..

El valor de retorno se devuelve en el objeto proxy y luego en la aplicación cliente. En la aplicación RMI.Ejemplo de la creación de aplicación RMI sencillo. En este ejemplo. RMI envía la solicitud a la JVM remota. La aplicación cliente invoca métodos en el objeto proxy. hemos seguido los 6 pasos para crear y ejecutar la aplicación RMI. . el cliente y el servidor interactúa con la interfaz remota.

.1) Crear la interfaz remota. Solo hay un método llamado add () y se declara RemoteException. Debemos ampliar la interfaz remota y declarar la RemoteException con todos los métodos de la interfaz remota.

2) Proporcionar la implementación de la interfaz remota. Ahora proporcionaremos la implementación de la interfaz remota. tenemos que: • • Extender la clase UnicastRemoteObject O utilizar el exportObject () de la clase UnicastRemoteObject En este caso. se extiende la clase UnicastRemoteObject y se debe de definir un constructor que declara RemoteException. . Para proporcionar la implementación de la interfaz remota.

En este ejemplo. estamos utilizando el numero de puerto 5000. Si no se especifica el numero del puerto. se utiliza un numero de puerto predeterminado. . 4) Iniciar el servicio de registro por la herramienta rmiregistry.3) Crear el stub y skeleton objetos utilizando la herramienta rmic. El siguiente paso es crear stub y skeleton objetos utilizando el compilador RMI. Ahora inicie el servicio de registro mediante la herramienta rmiregistry. La herramienta rimc invoca el compilador RMI. crea talón y objetos esqueleto.

5) Crear y ejecutar la aplicación de servidor. . Ahora los servicios rmi necesitan ser alojado en un proceso de servidor. La clase de nombres proporciona métodos para obtener y almacenar el objeto remoto. En este ejemplo vamos a enlazar el objeto remoto con el nombre Sonoo. La clase de nombres proporciona 5 métodos.

estamos corriendo el servidor y las aplicaciones cliente. de manera que estamos utilizando localhost. . En este ejemplo. Si desea acceder al objeto remoto desde otra maquina.6) Crear y ejecutar la aplicación cliente. en la misma maquina. cambiar el localhost para el nombre de host (o dirección IP) donde se encuentra el objeto remoto.