ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

RMI: Introduccion Y Ejemlo


Enviado por   •  11 de Noviembre de 2013  •  1.517 Palabras (7 Páginas)  •  379 Visitas

Página 1 de 7

Remote Method Invocation (RMI)

de Java

Concurrencia y Distribuci´on

Programaci´on Avanzada

Posgrado en Ciencia e Ingenier´ıa de la Computaci´on, UNAM

1. Introducci´on

El mecanismo RMI (Remote Method Invocation) permite que una apli-

caci´on o applet se comunique con objetos que residen en programas que

se ejecutan en m´aquinas remotas. En esencia, en lugar de crear un objeto,

el programador liga el objeto remoto con un representante local, conocido

como stub. Los mensajes dirigidos al objeto remoto se env´ıan al stub local,

como si fuera el objeto real. El stub acepta los mensajes que se le env´ıen, y

a su vez, los env´ıa al objeto remoto, el cual invoca sus m´etodos apropiados.

El resultado de la invoaci´on de los m´etodos en el objeto remoto se env´ıa de

regreso al stub local, que los remite al emisor original de la llamada.

Aparte de ligar el stub con el objeto remoto, el c´odigo escrito por el

programador para comunicar con el objeto remoto es igual al c´odigo que se

utilizar´ıa si el objeto se encontrara en una aplicaci´on o applet local.

2. Resumen del proceso

La Figura 1 muestra una aplicaci´on cliente ejecut´andose en una m´aquina

A, que env´ıa un mensaje a un objeto remoto contenido en una aplicaci´on

servidor que se ejecuta en una m´aquina B.

Cuando la aplicaci´on cliente env´ıa un mensaje al stub local del objeto

remoto, la petici´on se transmite a la m´aquina que contiene al objeto real,

donde el m´etodo es invocado y cualquier resultado retornado al stub local,

de modo que la aplicaci´on cliente puede obtener la respuesta apropiada.

1

Objeto

Remoto

Computadora A

Programa

Cliente

Computadora B

Programa

Servidor

Mensaje STUB

Figura 1: Enviando un mensaje a un objeto remoto.

2.1. La clase java.rmi.Naming

La clase Naming contiene los siguientes m´etodos est´aticos que permiten

el acceso a objetos remotos utilizando un URL para especificar el nombre y

lugar del objeto remoto.

M´etodo Responsabilidad

bind(url,object) Liga un nombre a un objeto remoto. El nombre

se especifica como un URL.

list(url) Retorna un arreglo de cadenas representando los

URLs en el registro.

lookup(url) Retorna un objeto remoto (un stub) asociado con

el URL.

rebind(url, object) Similar al bind(), pero reemplaza la asociaci´on

hecha.

unbind(url) Remueve la asociaci´on entre el objeto remoto

y el URL.

El URL se presenta en la forma rmi://host:port/objectName, donde:

Componente Valor por defecto Especificaci´on

rmi rmi El m´etodo de acceso

(debe ser rmi).

host localhost La m´aquina servidor

(host).

port 1099 El puerto utilizado.

objectName - El nombre del objeto remoto.

2

2.2. La aplicaci´on rmiregistry

La aplicaci´on servidor rmiregistry se utiliza para:

Registrar un nombre y un lugar de un objeto remoto. Esto se realiza

a partir de un servidor que contiene un objeto remoto. El c´odigo en el

servidor es de la forma:

Naming.rebind("rmi://host/name", object);

Donde rmi://host/name es el lugar donde se encuentra el objeto re-

moto y object es el objeto que se llama remotamente. Adem´as la

aplicaci´on rmiregistry debe estarse ejecutando en la misma m´aquina

servidor que la aplicaci´on servidor que contiene el objeto remoto.

Permitir a un cliente ligar un stub local que le de acceso al objeto

remoto contenido en la aplicaci´on servidor. La aplicaci´on cliente se

liga al objeto remoto mediante el m´etodo lookup(), que retorna un

objeto que permite el acceso v´ıa un stub al objeto remoto. El c´odigo

en la aplicaci´on cliente debe ser de la forma:

Naming.lookup("rmi://host/name");

En esencia, la aplicaci´on rmiregistry act´ua como un registro de objetos

que pueden ser accesados remotamente. Los objetos se registran y ligan a

un stub local usando los m´etodos de la clase Naming, del paquete java.rmi.

2.3. El proceso completo

La Figura 2 muestra el proceso completo, con una aplicaci´on cliente

ejecut´andose en la m´aquina A, que accesa a un objeto remoto que se ejecuta

en una aplicaci´on servidor en una m´aquina B.

La secuencia de pasos se realiza como sigue:

1. Inicializaci´on:

Se ejecuta la aplicaci´on rmiregistry en la computadora B.

La aplicaci´on servidor que contiene al objeto remoto se inicia en

la computadora B.

3

Objeto

Remoto

Computadora A

Programa

Cliente

Computadora B

Programa

Servidor

Mensaje STUB

bind()

rmiregistry

lookup()

Figura 2: Resumen del accdeso a un objeto remoto utilizando rmiregistry.

La aplicaci´on servidor liga (usando bind() ´o rebind()) al objeto

remoto con la aplicaci´on rmiregistry.

La aplicaci´on cliente se inicia en la computadora A.

La aplicaci´on cliente busca (lookup()) al objeto remoto y lo liga

a un stub local.

2. Acceso:

Los mensajes se env´ıan al stub local en la computadora A, que

son re-enviados al servidor donde se encuentra el objeto real. El

m´etodo correspondiente al mensaje se invoca, y el resultado se

retorna.

N´otese que la aplicaci´on rmiregistry debe estar ejecut´andose en la mis-

ma computadora donde se ejecuta la aplicaci´on servidor que contiene al

objeto remoto.

Una clase importante utilizada en el proceso RMI es la clase Naming,

cuyas responsabilidades son:

4

M´etodo Responsabilidad

bind(str,o) Liga el nombre str con el objeto remoto o.

lookup(str) Retorna un stub asociado con el nombre str.

El objeto remoto se accesa mendiante enviar mensajes al stub.

rebind(str,o) Similar al bind(), pero reemplaza la asociaci´on.

unbind(str) Remueve la asociaci´on entre el objeto remoto

y el nombre str.

3. La implementaci´on – acceso remoto a una cuen-

ta de banco

Desarrolle la aplicaci´on de acceso remoto a una cuenta bancaria, en forma

de una relaci´on cliente-servidor, donde la aplicaci´on

...

Descargar como (para miembros actualizados) txt (11 Kb)
Leer 6 páginas más »
Disponible sólo en Clubensayos.com