PDF de programación - PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VII.1: RMI: Remote Method Invocation

Imágen de pdf PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VII.1: RMI: Remote Method Invocation

PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VII.1: RMI: Remote Method Invocationgráfica de visualizaciones

Publicado el 14 de Enero del 2017
853 visualizaciones desde el 14 de Enero del 2017
335,8 KB
38 paginas
Creado hace 15a (02/12/2008)
PROGRAMACION CONCURRENTE Y DISTRIBUIDA

VII.1: RMI: Remote Method Invocation

José M. Drake

Notas:

Posibilidades que ofrece Java para la comunicación en red: Socket,RMI y URL.

1

Sistemas distribuidos basados en middleware

Client

RPC

Server

Middleware

Estilo RPC

(Remote Procedure Call)

Node local

Node remote

Client

Middleware

Estilo DOO

(Distributed Object Oriented)

Server

Node local

Node remote

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

2

Notas:

2

Modelos de infraestructura para sistemas distribuidos

Las aplicaciones distribuidas requieren que componentes que se ejecutan
en diferentes procesadores se comuniquen entre sí.
Modelos:
Sockets: Facilitan la generación dinámica de canales de comunicación. Es
actualmente la base de la comunicación. Pero al ser de muy bajo nivel de
abstracción, no son adecuados a nivel de aplicación.

Remote Procedure Call (RPC): Abstrae la comunicación a nivel de
invocación de procedimientos. Es adecuada para programación estructurada
basada en librerías.

Invocación remota de objetos: Abstrae la comunicación a la invocación de
métodos de objetos que se encuentran distribuidos por el sistema distribuido.
Los objetos se localizan por su identidad. Es adecuada para aplicaciones
basadas en el paradigma OO.

RMI (Remote Method Invocation) es
comunicación de objetos Java distribuidos.
Solución simple (Fácil de uso)
Solución natural (Se comporta como se espera que haga)

la solución Java para

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

la

3

Notas:

3

Objetivos de RMI

Proporcionar un middelware para el desarrollo de aplicaciones
distribuida manteniendo un estilo Java puro y ortodoxo:
Facilita la interacción de objetos instanciados en diferente JVM

mediante el paradigma de invocación de métodos de los objetos.

Integra el modelo de objetos distribuidos en el lenguaje Java de una

forma natural y manteniendo la semántica que le es propia.

Capacita para escribir aplicaciones distribuidas tan simple como sea

posible.

Mantiene y preserva en aplicaciones distribuidas el tipado fuerte propio

de Java.

Proporciona diferentes modelos de persistencia de objetos distribuidos
(objetos vivos, objetos persistentes, objetos con activación débil) para
conseguir la escalabilidad de las aplicaciones.

Introduce los niveles de seguridad necesarios para garantizar la

integridad de las aplicaciones distribuidas.

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

4

Notas:

4

Ventajas e inconvenientes de RMI

Ventaja:
Permite distribuir una aplicación de forma muy transparente, es decir,

sin que el programador tenga que modificar apenas el código.

Las invocaciones remotas son más eficientes que las peticiones vía

http que se usan con los CGIs o los Servlets.

Inconvenientes:
El paso de parámetros por valor implica tiempo para hacer la
serialización, enviar los objetos serializados a través de la red y luego
volver a recomponer los objetos en el destino.

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

5

Notas:

5

Componentes de aplicaciones distribuidas RMI

Las aplicaciones RMI se componen de:
Clientes: Conducen el flujo de la aplicación. Localizan e invocan

métodos ofertados como remotos por los servidores.

Servidores: Conjunto de objetos que ofrecen interfaces remotas
públicas cuyos métodos pueden ser invocados clientes de cualquier
procesador de la plataforma.

Registro: Servicio estático que se establece en cada nudo, en el que se
registran los servidores con un nombre, y donde los clientes los
localizan por él.

Procesador local

Cliente

Invoca
(RMI)

Localiza

(RMI)

Interfaz
remota

Procesador remoto

Servidor

Registro

Registra
(RMI)

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

6

Notas:

6

Servicios que ofrece RMI

Localizar objetos remotos: Hay dos metodos de localizar un objeto
remoto:
En el rmiRegistry se pueden registrar objetos con un nombren. Otros pueden

buscar su referencia a través del mismo nombre.

Un objeto puede pasar como parámetro u obtener como retorno de la
invocación de un método repoto, la referencia a un tercer objeto, y luego
usarlo para comunicarse con él.

Comunicar con objetos remotos: Un objeto que disponga de la referencia
remota (stub) de un objeto que ofrezca una interfaz remota, puede invocar
los métodos remotos sobre él, en una forma similar a la invocación de
cualquier método públicos.
Descargar objetos remotos: RMI ofrece mecanismos para transferir por
valor los objetos que se pasan como parámetro de los métodos que se
invocan. Esta transferencia incluye la transferencia de su código
(bytecodes) y de su estado.

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

7

Notas:

7

Invocaciones distribuidas y localizadas

Semejanzas:
Una referencia a un objeto remoto puede ser pasado como parámetro de un

método, y devuelto como resultados de los métodos.

El tipo de una referencia a un objeto remoto puede ser transformado por
operaciones de casting siempre que sean compatibles con sus relaciones de
herencias.

A las referencias remotas se les puede aplicar el método instanceof() para

identificar dinámicamente las interfaces que soporta.

Diferencias:
Los clientes interaccionan con los objetos remotos a través de las interfaces

remotas, no a través de implementaciones o interfaces estándares.

Los objetos que se pasan como parámetros de métodos que no son remotos se

pasan por copia (valor) y nunca por referencia.

Los objetos que se pasan como parámetros de métodos que se referencian por

sus interfaces remotas se pasan por referencia y nunca por valor.

La semántica de los métodos heredados de Object es especializada para los

objetos remotos.

Las invocaciones de objetos remoto pueden lanzar excepciones adicionales

que son propias de los mecanismos de comunicación,

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

8

Notas:

8

Interfaces y clases raíces definidas en RMI

<<interface>>

Remote

<<abstract class>>
RemoteObject

<<abstract class>>

RemoteSever

<<exceptionClass>>

IOException

<<exceptionClass>>
RemoteException

<<abstract class>>

Activatable

<<class>>

UnicastRemoteServer

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

9

Notas:

9

Arquitectura de RMI

Client

Server

Stub

Skeleton

RMI reference layer

RMI transport layer

TCP/IP

javac

Client

Stub

Skeleton

Server

Versión 1.5

Client

Stub

rmic

javac

RMI

Server
Skeleton

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

10

Notas:

10

Arquitectura básica de RMI

1.

2.

3.

4.
5.

6.

7.

8.

El servidor debe registrarse (bind) en eñ
registry bajo un nombre.
El cliente localiza (lookup) la referencia
de servidor en el registry por su nombre.
El cliente crea un stub que referencia al
skeleton
El cliente invoca localmente el stub.
El stub transfiere como un mensaje la
invocación al skeleton.
El skeleton invocamente localmente el
método del servidor.
El skeleton transfiere al stub como
mensaje los resultados obtenidos de la
invocación.
El stub finaliza la invocación del cliente
retornándole los resultados.

Remote Machine

bind

Registry

RMI Server

skeleton

return

call

lookup

stub

RMI Client

Local Machine

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

11

Notas:

11

Stub y skeleton

RMI Client

b
u
t
S

call

return

s
k
e

l

e
t
o
n

RMI Server

1. Uncliente invoca un método remoto invocando localmente el mismo método en el

stub.

2. The stub genera un mensaje que contiene: la referencia al método y un stream de

bytes que resulta de secuencializar los parámetros del método.

3. El stub crea dinámicamente un socket y establece la conexión con el skeleton.
4. El skeleton recibe el mensaje los decodifica y delega en un thread la invocación
del método del servidor. Quedando dispuesto de nuevo a la recepción de un nuevo
mensaje (no siempre es multithread).

5. El thread genera un mensaje con el stream de bytes que corresponde a la

secuencilización de los resultados de la invocación.

6. El thread envía por el socket abierto el mensaje de retorno.
7. El stub decodifica el mensaje y concluye la invocación inicial retornando los

resultados al cliente.

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

12

Notas:

12

Pasos para desarrollar una aplicación distribuida RMI

1. Se define la interfaz remota
2. Se desarrolla el servidor que implementa la interfaz remota.
3. Se desarrolla el cliente.
4. Se compilan los ficheros Java fuentes.
5. Se ejecuta el RMI Registry en el procesador remoto.
6. Se ejecuta el servidor en el procesador remoto.
7. Se ejecuta el cliente en el procesador local.

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

13

Notas:

13

Ejemplo HolaMundo

ClienteHola

+ main()

elServidor

<<RemoteInterface>>

Hola

di_hola()

ServidorHola

rmiRegistry

+ di_hola()

+ bind()
+ lookup()

Procodis’07: VII.1- RMI: Remote Method Invocation

José M. Drake

14

Notas:

14

1- HolaMundo: Interfaz remota fichero Hola.java

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Hola extends Remote {

String di_hola() throws RemoteException;

}

Es una interfaz remota porque extiende a la interfaz Remote
Todos los métodos de la interfaz remota deb
  • Links de descarga
http://lwp-l.com/pdf1034

Comentarios de: PROGRAMACION CONCURRENTE Y DISTRIBUIDA - VII.1: RMI: Remote Method Invocation (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad