Está en la página 1de 19

Llamada Procedimientos Remoto

RMI en Java

Contenido

Introduccin
Definicin
Cmo surgi?
Arquitectura RMI
Esqueletos y Cabos (Stubs)
Cmo se produce la conectividad entre cliente y
servidor?
Funcionamiento General
JAVA RMI v/s API SOCKETS
Similitudes
Diferencias
Metas del Sistema RMI de Java

Introduccin
La invocacin remota de mtodos de Java es un modelo
de objetos distribuidos, diseado especficamente para el
lenguaje Java, por lo que mantiene la semntica del
modelo de objetos locales de Java, facilitando de esta
manera la implantacin y el uso de objetos distribuidos.

Un objeto remoto es aquel cuyos mtodos pueden ser


invocados por objetos que se encuentran en una
mquina virtual diferente.
Los objetos de este tipo se describen por una o ms
interfaces remotas que contienen la definicin de los
mtodos del objeto que es posible invocar remotamente.

Definicin
RMI es un paquete de JAVA que permite manejar
objetos (y sus respectivos metodos) de manera remota,
para utilizar los recursos de un servidor de manera
transparente para el usuario local.

La manera en que RMI (y RPC en general) logra hacer


esto, es por medio de lo que se conoce como STUBs. En
el caso del STUB servidor, se conoce como SKELETON.
Estos Stubs y Skeletons permiten que al momento de ser
invocada la funcin remota esta pueda ser simulada
localmente

Cmo surgi?
La primera alternativa que surgi al empleo de los
sockets son las llamadas a procedimientos remotos
(RPC) .
En RPC la comunicacin entre los elementos que
componen el sistema distribuido, se realiza mediante la
invocacin de funciones que se encuentran en espacios
de direcciones diferentes.

RPC se encarga de empaquetar los argumentos y


enviarlos al proceso que contiene el cdigo que
implementa a la rutina remota.
Los sistemas codifican los parmetros de la invocacin,
as como los valores de vuelta en una representacin
externa de los datos.
Se requiere ya no invocar procedimientos remotos, sino
a mtodos de objetos remotos.

Arquitectura RMI
CLIENTE
Cliente indicando
mtodo en el objeto
remoto

OBJETO REMOTO
Objeto remoto ofrece el
servicio

OSI
Capa de aplicacin

Stub

Skeleton

Capa de presentacin

JRMP

JRMP

Capa de sesin

TCP

TCP

Capa de transporte

IP

IP

Capa de red

Esqueletos y Cabos (Stubs)


Los cabos forman parte de las referencias y actan
como representantes de los objetos remotos ante sus
clientes. En el cliente se invocan los mtodos del cabo,
quien es el responsable de invocar de manera remota al
cdigo que implementa al objeto remoto.
En RMI un cabo de un objeto remoto implementa el
mismo conjunto de interfaces remotas que el objeto
remoto al cual representa.

Cuando se invoca algn mtodo de un cabo, realiza las


siguientes acciones:
Inicia una conexin con la MV que contiene al objeto
remoto.
Aplana (marshals) y transmite los parmetros de la
invocacin a la MV remota.
Espera por el resultado de la invocacin.
Desaplana (unmarshals) y devuelve el valor de retorno o
la excepcin.
Devuelve el valor a quien lo llam.

Los cabos se encargan de ocultar los mecanismos de


comunicacin empleados.
En la MV remota, cada objeto debe poseer su esqueleto
correspondiente. El esqueleto es responsable de
despachar la invocacin al objeto remoto.

Cmo se produce la conectividad


entre cliente y servidor?
Se ocupa la herramienta de Java, java MRI Registry.
Puede estar localizado en un lugar distinto al servidor, se
encarga de registrar un determinado objeto y asinarle un
servidor que se encargara de procesar dicho objeto.

Funcionamiento General
Se ejecuta el RMI Registry en algn lugar de la red.
El servidor que desea manejar un objeto se registra en
dicho servidor
El RMI Registry registra el par : OBJETO/SERVIDOR
El cliente que necesita utilizar un determinado objeto,
hace una consulta RMI Registry , quien devuelve el
STUB listo para la comunicacin

JAVA RMI vs API SOCKETS


Similitudes
Una referencia a un objeto, puede ser pasada como
argumento o retornado como resultado de cualquier
invocacin (local o remoto).
Un objeto remoto puede ser invocado sobre cualquier set
de interfaces remotas soportadas por la implementacin,
usando la sintaxis de :
InterfaceRemota irem = (InterfaceRemota) new
ClaseRemota();

Diferencias
Los clientes de objetos remotos interactan con
interfaces remotas, NUNCA con la implementacin de
esas interfaces.
Una invocacin remota a un mtodo son pasados por
copia en vez de por referencia.
Un objeto remoto es pasado por referencia, no copiando
su actual implementacin remota.

Sockets, tienen la capacidad de comunicar dos procesos, ya


sea mediante datagramas o flujos de datos (streams).
requieren que las aplicaciones implanten sus propios
protocolos para codificar y decodificar los mensajes que
intercambian.

Metas del Sistema RMI de Java


Proporcionar invocacin remota de objetos que se
encuentran en MVs diferentes.
Integrar el modelo de objetos distribuidos en el lenguaje
Java de una manera natural, conservando en medida de
lo posible la semntica de los objetos Java.

Hacer tan simple como sea posible la escritura de


aplicaciones distribuidas.
Preservar la seguridad proporcionada por el ambiente
Java.