Sunteți pe pagina 1din 16

Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda

Definicin.
Remote Method Invocation.
Exclusivo de Java *. Mecanismo/sistema que permite que un objeto ejecutndose en un JVM llame a mtodos de otro objeto que esta en una JVM diferente. Para plataformas diferentes se necesitara SOAP o CORBA. RMI proporciona el mecanismo para transferir informacin entre procesos de diferentes mquinas.

Estructura.
Formado bsicamente por 2 programas remotos:
Servidor. Crea objetos remotos. Referencia a ellos. Espera por la solicitud de los clientes. Cliente. Obtiene referencia a los objetos remotos. Ejecuta sus mtodos. Mecanismo general de comunicacin: Localizacin de objetos. 2 maneras: rmiregitry o paso de objetos en parmetros o valores de retorno de funciones. Comunicacin con objetos remotos. Control por parte de RMI. Transparencia para el programador del cliente. Carga de bytecodes (cdigo intermedio). Descarga del cdigo del objeto y transferencia de sus datos.

Una aplicacin...
Pasos en los que se observa el desarrollo de una aplicacin distribuida RMI:
1. Se inicia el servidor y registra sus objetos y mtodos a invocarse en un servicio de nombramiento. Asocia un nombre con el objeto remoto. 2. Se inicia el cliente y localiza los objetos y/o mtodos a invocar de manera remota en el directorio de nombres del servidor obteniendo la referencia al objeto.

3. El cliente invoca a los mtodos remotos mediante la referencia al objeto obtenida. Espera por respuesta.
Marshalling (reconocimiento) de los parmetros Serializacin.

Invocacin del mtodo en el servidor.


4. Termina la ejecucin del mtodo en el servidor y se regresa el valor de retorno serializado al cliente.

Esquema de funcionamiento.

Funcionamiento a nivel sockets.


1. El servidor escucha un puerto. 2. El servidor conoce la mquina y puerto de eschucha del servidor mediante el stub. 3. El cliente invoca la funcin del stub. 4. El stub se conecta al puerto del servidor y enva los parmetros de la siguiente manera: 1. El cliente se conecta al puerto de escucha del servidor. 2. El servidor acepta conexin entrante y crea un nuevo socket para gestionar esta nica solicitud ( en caso de bootstraping ). 3. El antiguo puerto de escucha permanece as en espera de ms clientes. 4. Comunicacin cliente-servidor mediante el nuevo socket. 5. Intercambio de parmetros del mtodo mediante un protocolo. Puede ser JRMP, CORBA, SOAP. 5. El mtodo es ejecutado en el servidor y devuelto el valor de retorno va stub. 6. El stub devuelve el resultado al cliente como una llamada a mtodo local.

Especificacin de RMI (en Java).


Interfaces, objetos y mtodos remotos. Interfaces remotas: Heredan de java.rmi.Remote Lanzan excepcin java.rmi.RemoteException. Objetos y mtodos remotos. Heredan de java.rmi.server.UnicastRemoteObject Heredan de java.rmi.server.Activatable. Paso de parmetros en RMI. Paso de objetos remotos. Paso de objetos locales. Transmisin de datos.

Diagrama de interfaces y clases de objetos.

RMI Stub y Skeleton.


STUB: Es una representacin local EN EL CLIENTE del objeto remoto.
o

El objeto que realiza una llamada remota invoca el mtodo en el stub local.

Implementa exactamente el mismo conjunto de interfaces remotas que el objeto remoto.


Pasos que realiza son:
1. Inicia una conexin con la JVM remota que contiene el objeto

remoto.

2. Escribe (serializa) y transmite los parmetros a la JVM remota. 3. Espera los resultados de la invocacin remota. 4. Lee (deserializa) los valores de retorno o excepciones

devueltas.

5. Devuelve el valor al objeto que inicio la llamada.


o

Hace uso del rmic.

Skeleton: Es una representacin local EN EL SERVIDOR del objeto remoto.


o

Es responsable de enviar la llamada a la implementacin del objeto remoto.

Pasos que realiza son:


1. Lee (deserializa) los parmetros del mtodo remoto. 2. Invoca al mtodo en la implementacin del objeto remoto. 3. Escribe (serializa) y transmite el resultado.

A partir del JDK 1.2 (versin de Java 2) se ha introducido un protocolo stub adicional que elimina la necesidad del uso de los esqueletos.

Registro de objetos remotos.


RMIRegistry: Se ejecuta en el servidor y es un objeto remoto con un puerto conocido. Relaciona el objeto remoto con un nombre.
o

El contacto directo se tiene con el stub proporcionado por el objeto remoto. Almacena internamente la etiqueta y el objeto stub en un hashmap. Devuelve el stub al cliente que solicito el objeto remoto.

En caso de no hacer uso de este ejecutable de Java se encuentran la interfaz Registry y la clase LocateRegistry (con sus mtodos createRegustry y getRegistry).

Localizacin de objetos remotos.


Se realiza utilizando la clase java.rmi.Naming. Esta clase construye un objeto stub y lo asocia al objeto remoto del registro. Maneja principalmente dos parmetros para la mayoria de sus mtodos primordiales:

cadena que nombra al objeto (URL): //host:puerto/nombre. del objeto remoto.

Stub

Hace uso de los siguientes mtodos:


bind y rebind. lookup. unbind. list.

Creacin de una aplicacin distribuida.


1. Diseo e implementacin de las componentes (interfaz, servidor, cliente). 2. Compilar las fuentes y generar los stubs.
3. Hacer accesibles las clases a la red. 4. Iniciar la aplicacin (registro y cliente - servidor).

Metas del sistema RMI de Java.


Proporcionar invocacin remota de objetos que se encuentran en JVMs diferentes. Integrar el modelo de objetos distribuidos en Java de forma natural. Intentar simplificar al mximo la escritura de aplicaciones distribuidas.

Preservar la seguridad proporcionada por Java.


Proporcionar varias semnticas para las referencias de los objetos remotos (persistentes, no persistentes y de "activacin retardada" ).

Bibliografa.
www.fcharte.com/Default.asp?glosario. Daz Prez, Arturo; Remote Method Invocation. CINVESTAV IPN. arcos.inf.uc3m.es/~dad/import/20052006/Tema2_2aParte.pdf. www.lcc.uma.es/~pinto/apuntes/software%20de%20sistema s/Tema%204%20-%20Java%20RMI.pdf http://www.programacion.com/java/tutorial/rmi/

www.revista.unam.mx/vol.2/num1/art3/

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