2. Contenido
• Introducción
• Definición
• ¿Cómo surgió?
• Arquitectura RMI
• Esqueletos y Cabos (Stubs)
• ¿Cómo se produce la conectividad entre cliente y
servidor?
• Funcionamiento General
• JAVA RMI v/s API SOCKETS
▫ Similitudes
▫ Diferencias
• Metas del Sistema RMI de Java
3. Introducción
• La invocación remota de métodos de Java es un modelo
de objetos distribuidos, diseñado específicamente para el
lenguaje Java, por lo que mantiene la semántica del
modelo de objetos locales de Java, facilitando de esta
manera la implantación y el uso de objetos distribuidos.
4. • Un objeto remoto es aquel cuyos métodos pueden ser
invocados por objetos que se encuentran en una
máquina virtual diferente.
• Los objetos de este tipo se describen por una o más
interfaces remotas que contienen la definición de los
métodos del objeto que es posible invocar remotamente.
5. Definición
• 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.
6. • 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 función remota esta pueda ser simulada
localmente
7. ¿Cómo surgió?
• La primera alternativa que surgió al empleo de los
sockets son las llamadas a procedimientos remotos
(RPC) .
• En RPC la comunicación entre los elementos que
componen el sistema distribuido, se realiza mediante la
invocación de funciones que se encuentran en espacios
de direcciones diferentes.
8. • RPC se encarga de empaquetar los argumentos y
enviarlos al proceso que contiene el código que
implementa a la rutina remota.
• Los sistemas codifican los parámetros de la invocación,
así como los valores de vuelta en una representación
externa de los datos.
• Se requiere ya no invocar procedimientos remotos, sino
a métodos de objetos remotos.
9. Arquitectura RMI
CLIENTE OBJETO REMOTO OSI
Cliente indicando
método en el objeto
remoto
Objeto remoto ofrece el
servicio
Capa de aplicación
Stub Skeleton Capa de presentación
JRMP JRMP Capa de sesión
TCP TCP Capa de transporte
IP IP Capa de red
10. Esqueletos y Cabos (Stubs)
• Los cabos forman parte de las referencias y actúan
como representantes de los objetos remotos ante sus
clientes. En el cliente se invocan los métodos del cabo,
quien es el responsable de invocar de manera remota al
código 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.
11. Cuando se invoca algún método de un cabo, realiza las
siguientes acciones:
• Inicia una conexión con la MV que contiene al objeto
remoto.
• Aplana (marshals) y transmite los parámetros de la
invocación a la MV remota.
• Espera por el resultado de la invocación.
• Desaplana (unmarshals) y devuelve el valor de retorno o
la excepción.
• Devuelve el valor a quien lo llamó.
12. • Los cabos se encargan de ocultar los mecanismos de
comunicación empleados.
• En la MV remota, cada objeto debe poseer su esqueleto
correspondiente. El esqueleto es responsable de
despachar la invocación al objeto remoto.
13. ¿Cómo 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.
14. Funcionamiento General
• Se ejecuta el RMI Registry en algún 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 comunicación
15. JAVA RMI vs API SOCKETS
• Una referencia a un objeto, puede ser pasada como
argumento o retornado como resultado de cualquier
invocación (local o remoto).
• Un objeto remoto puede ser invocado sobre cualquier set
de interfaces remotas soportadas por la implementación,
usando la sintaxis de :
InterfaceRemota irem = (InterfaceRemota) new
ClaseRemota();
Similitudes
16. Diferencias
• Los clientes de objetos remotos interactúan con
interfaces remotas, NUNCA con la implementación de
esas interfaces.
• Una invocación remota a un método son pasados por
copia en vez de por referencia.
• Un objeto remoto es pasado por referencia, no copiando
su actual implementación remota.
17. 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.
18. Metas del Sistema RMI de Java
• Proporcionar invocación 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 semántica de los objetos Java.
19. • Hacer tan simple como sea posible la escritura de
aplicaciones distribuidas.
• Preservar la seguridad proporcionada por el ambiente
Java.