Sunteți pe pagina 1din 16

QU ES?

RMI es un mecanismo ofrecido por Java para invocar un mtodo de manera remota.

Forma parte del entorno estndar de ejecucin de Java y proporciona un mecanismo simple para la comunicacin de servidores en aplicaciones distribuidas basadas exclusivamente en Java.

A travs de RMI, un programa Java puede exportar un objeto, con lo que dicho objeto estar accesible a travs de la red y el programa permanece a la espera de peticiones en un puerto TCP. A partir de ese momento, un cliente puede conectarse e invocar los mtodos proporcionados por el objeto.

Metas del Sistema RMI de Java


Las metas que se pretenden alcanzar al soportar objetos distribuidos en Java, son:

Proporcionar invocacin 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.

Preservar la seguridad proporcionada por el ambiente Java.

Desarrollo de Aplicaciones Distribuidas.


Una aplicacin servidora que utiliza RMI, generalmente crea cierto nmero de objetos remotos, permite que se creen referencias a dichos objetos y espera a que algn cliente invoque de manera remota los mtodos de dichos objetos. Una aplicacin cliente tpica obtiene referencias de uno o ms objetos remotos, e invoca sus mtodos por medio del sistema RMI de Java, el que se encarga de proporcionar los mecanismos mediante los cuales, tanto clientes como servidores, pueden comunicarse.

Las funciones esenciales que deben desarrollar las aplicaciones distribuidas, son:

Localizar objetos remotos: Las aplicaciones cliente tienen dos alternativas para obtener referencias de objetos remotos. Una aplicacin puede registrar sus objetos remotos ante un servidor de nombres llamado rmiregistry, o la aplicacin puede pasar referencias a objetos remotos como parmetro de una invocacin o como valor de retorno.
Comunicarse con los objetos remotos: Los detalles de la comunicacin entre los objetos remotos, son manejados por el sistema RMI. Para el programador, la comunicacin entre objetos se asemeja a la utilizada normalmente en programas Java. Cargar el cdigo de operacin que implementa a las clases que son pasadas por valor: Debido a que RMI permite pasar objetos Java puros como parmetros en la invocacin de mtodos de objetos remotos, proporciona los mecanismos necesarios para, por medio de un servidor HTTP o FTP cargar el cdigo y los datos de dichos objetos.

Stub y Skeleton.
RMI utiliza cdigo auxiliar y el esqueleto objeto para la comunicacin con el objeto remoto. Un objeto remoto es un objeto cuyo mtodo se puede invocar desde otra JVM. Entendamos el taln y lo objetos esqueletos:

Stub.
El Stub es un objeto, acta como una puerta de entrada para el lado del cliente. Todas la peticiones salientes se en rutan a travs de l. Reside en el lado cliente y representa el objeto remoto. Cuando la persona que llama invoca en mtodo en el objeto stub, hace las siguientes tarea:
1.- Se inicia una conexin con una maquina virtual remota. 2.- Se escribe y transmite los parmetros de la maquina virtual remota. 3.- Se espera el resultado 4.- Se lee el valor de retorno o de excepcin 5.- Finalmente, devuelve el valor a la persona que llama.

Skeleton.
El esqueleto es un objeto, acta como una puerta de entrada para el objeto del servidor. Todas las peticiones entrantes se en rutan a travs de el. Cuando el esqueleto recibe la solicitud entrante, hace las siguientes tareas: 1.- Se lee el parmetro para el mtodo remoto. 2.- Se invoca el mtodo en el objeto actual.

3.- Se escribe y transmite el resultado a la persona que llama.

Pasos para escribir el programa RMI.


Aqu se dan los 6 pasos para escribir el programa RMI 1.- Crear la interfaz remota

2.- Proporcionar la implementacin de la interfaz remota


3.- Compilar la clase de implementacin y crear el stub y skeleton objetos utilizando la herramienta RMIC 4.- Inicie el servicio de registro por la herramienta rmiregistry 5.- Crear y activar la aplicacin remota 6.- Crear y activar la aplicacin cliente

Ejemplo de la creacin de aplicacin RMI sencillo.


En este ejemplo, hemos seguido los 6 pasos para crear y ejecutar la aplicacin RMI. En la aplicacin RMI, el cliente y el servidor interacta con la interfaz remota. La aplicacin cliente invoca mtodos en el objeto proxy, RMI enva la solicitud a la JVM remota. El valor de retorno se devuelve en el objeto proxy y luego en la aplicacin cliente.

1) Crear la interfaz remota.


Debemos ampliar la interfaz remota y declarar la RemoteException con todos los mtodos de la interfaz remota. Solo hay un mtodo llamado add () y se declara RemoteException.

2) Proporcionar la implementacin de la interfaz remota.


Ahora proporcionaremos la implementacin de la interfaz remota. Para proporcionar la implementacin 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.

3) Crear el stub y skeleton objetos utilizando la herramienta rmic.


El siguiente paso es crear stub y skeleton objetos utilizando el compilador RMI. La herramienta rimc invoca el compilador RMI, crea taln y objetos esqueleto.

4) Iniciar el servicio de registro por la herramienta rmiregistry.


Ahora inicie el servicio de registro mediante la herramienta rmiregistry. Si no se especifica el numero del puerto, se utiliza un numero de puerto predeterminado. En este ejemplo, estamos utilizando el numero de puerto 5000.

5) Crear y ejecutar la aplicacin de servidor.


Ahora los servicios rmi necesitan ser alojado en un proceso de servidor. La clase de nombres proporciona mtodos para obtener y almacenar el objeto remoto. La clase de nombres proporciona 5 mtodos. En este ejemplo vamos a enlazar el objeto remoto con el nombre Sonoo.

6) Crear y ejecutar la aplicacin cliente.


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

S-ar putea să vă placă și