PDF de programación - Sesión 6: Java RMI. Primeros pasos - Sistemas Distribuidos

Imágen de pdf Sesión 6: Java RMI. Primeros pasos - Sistemas Distribuidos

Sesión 6: Java RMI. Primeros pasos - Sistemas Distribuidosgráfica de visualizaciones

Publicado el 23 de Enero del 2019
955 visualizaciones desde el 23 de Enero del 2019
483,9 KB
15 paginas
Creado hace 9a (18/11/2014)
Sesión 6:
Java RMI. Primeros pasos

SISTEMAS DISTRIBUIDOS

GRADO EN INGENIERÍA INFORMÁTICA

UNED

PRESENTACIÓN
• Proyecto básico. Chat abierto.
• Servicios que ofrece el servidor:

Índice

– Escribir mensaje: escribir(mensaje) →

nada

– Leer mensajes: leer(indice) → mensajes

• Veremos:

– Arquitectura RMI:

• Interfaz Remota
• Servidor que implementa la interfaz
• Cliente que usa la interfaz

– Ejecución

Sesión 6: Java RMI. Primeros pasos

2

Arquitectura RMI de nuestra app

Índice

• Planteamos 2 proyectos Java:
• Servidor de Chat

– Interfaz para acceso remoto del servidor
– Implementación de la interfaz remota
– Clase mensaje
– Clase inicio servidor

• Cliente de Chat

– Interfaz para acceso remoto del servidor
– Clase mensaje
– Clase inicio cliente



Sesión 6: Java RMI. Primeros pasos

3

Arquitectura RMI de nuestra app

Índice

Las clases comunes las incluiremos en un proyecto
que se incluirá como dependencia tanto al cliente
como al servidor. No necesitamos skeletons (desde
Java 2) ni stubs explícitos (desde Java 5) .
• Servidor

– Implementación de la interfaz remota
– Clase inicio servidor

• Cliente

• Común

– Clase inicio cliente

– Interfaz para acceso remoto del servidor
– Clase mensaje
– Clases auxiliares

Sesión 6: Java RMI. Primeros pasos

4



Clases comunes: Interfaz Remota

Índice
• Interfaz Remota IServidor.java

•Interfaz que hereda o
extiende de Remote
•Los métodos deben
lanzar RemoteException

• Clase Mensaje.java

– Serializable.
– serialVersionUID



Sesión 6: Java RMI. Primeros pasos

5

Servidor
Índice

• Servidor:

– Implementa la
interfaz remota.

– Los métodos lanzan

RemoteException.

– Almacenar Mensajes.
– Recibir Mensaje.
– Devolver Mensajes

Pendientes.

– No registra el objeto

Sesión 6: Java RMI. Primeros pasos

6

Clase de Inicio de InicioServidor.java

• Creación Objeto Remoto.
• Registro de Objeto Remoto (bind).
• Heredar en Servidor o Exportar de UnicastRemoteObjet.
• Al finalizar unbind y unexport el objeto remoto.
• No realizamos carga dinámica de clases (RMISecurityManager y

codebase)


Sesión 6: Java RMI. Primeros pasos

7

Clase Cliente. Cliente.java (1/2)

Índice

• Variable de instancia IServidor.
• Dependencia de proyecto común

por IServidor y Mensaje.

• Método leerConsola para interfaz

de usuario.

• Buscamos (lookup) el objeto

en el enlazador local
(devuelve Remote).

• Metodos enviar y recibir permiten:

– enviar: escribir mensaje en chat


recibir: leer mensajes pendientes y
mostrarlos en consola.

• No realizamos carga dinámica
de clases (RMISecurityManager
y codebase)
LocateRegistry.getRegistry(puerto)
en nuestro caso 8888.



Sesión 6: Java RMI. Primeros pasos

8

Clase Cliente. Cliente.java (2/2)
recibir(): Hacemos RMI al servidor y obtenemos una lista con los mensajes
pendientes,
y actualizamos el índice donde controlamos los mensajes recibidos.

Índice



permiten:
– enviar: escribir mensaje en
chat. RMI al método escribir.
recibir: leer mensajes
pendientes y mostrarlos en
consola. RMI al método leer
del servidor.



• Dependencia de proyecto

común por IServidor y
Mensaje.

• Método leerConsola para

interfaz de usuario.

• Métodos enviar y recibir

Sesión 6: Java RMI. Primeros pasos

9

Índice
• Ejecutar el enlazador RmiRegistry de Java.

Ejecución (1/2)

• Ejecutar la clase IniciarServidor desde Eclipse.

– Si no es correcta esta configuración tendréis errores del tipo:

– Desde eclipse con RMI plugin www.genady.net
– Desde consola. Abrimos consola y ejecutamos rmiregistry. Hoy optaremos por esta opción.

RmiRegistry debe poder acceder a las clases de nuestro servidor, para ello podemos:

Incluir el directorio raíz de nuestras clases en la variable CLASSPATH


• Ejecutar rmiregistry desde el directorio raíz. Este directorio es donde estén las clases
compiladas, normalmente el directorio ’bin’ de nuestro proyecto. En nuestro caso del
proyecto común, que es donde esta la interfaz remota.

– Si olvidáis que tenéis la clase corriendo previamente obtendréis una excepción de este

tipo:

Sesión 6: Java RMI. Primeros pasos

10

Ejecución (2/2)

Índice

• Ejecutamos varias instancias del Cliente y en cada una:

– Introducimos nuestro nombre.
– Podremos escribir y leer mensajes.

• Es posible que queramos utilizar la descarga dinámica de

código de clases del servidor, para ello debemos incorporar:
– Un gestor de seguridad

RMISecurityManager

– Establecer la propiedad
java.rmi.server.codebase

• Para facilitar esta tarea incluiremos
dos clases auxiliares en nuestro
proyecto común, y modificaremos
el código de las clases InicioServidor
y Cliente.


Sesión 6: Java RMI. Primeros pasos

11

Nuevas clases PoliticaSeguridad y Codebase

Índice

• La estructura de nuestros proyectos quedará de esta forma:.



Sesión 6: Java RMI. Primeros pasos

12

Policita de Seguridad

Índice

Sesión 6: Java RMI. Primeros pasos

13

Codebase
Índice

• Esta clase nos permitirá definir de forma dinámica donde se
ubican los ficheros .class de las clases Serializables y de los
stubs de las clases Remote, y asignarlo a la propiedad del
sistema java.rmi.server.codebase

• A partir del objeto remoto obtenemos el path.



Sesión 6: Java RMI. Primeros pasos

14

Cambios en InicioServidor y Cliente

Índice



InicioServidor: Añadimos Gestor de Seguridad y carga de
propiedad codebase.

• Cliente: Añadimos gestor de seguridad.

Sesión 6: Java RMI. Primeros pasos

15
  • Links de descarga
http://lwp-l.com/pdf14958

Comentarios de: Sesión 6: Java RMI. Primeros pasos - Sistemas Distribuidos (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