SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
1
RMI
René Guamán-Quinche
Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables
Carrera de Ingeniería en Sistemas/Computación
Junio, 2021
Loja, Ecuador
3
1. Objetos distribuidos
2. Tecnología
3. RMI
4. Arquitectura Básica
5. Ejemplo
6. Arquitectura RMI
7. Stubs y Skeletons
8. Rmi registry
Contenido
4
Objetos Distribuidos
Son los objetos que dinámicamente asumen el papel de clientes o servidores,
según la necesidad.
Un objeto distribuido es un objeto que puede ser accedido remotamente desde
cualquier lugar en la red, del mismo modo que se haría si estuviese en la misma
máquina
Objetos distribuidos dentro de una red
●
Los objetos proporcionan métodos, los cuales dan acceso a los servicios
5
Objetos Distribuidos
Los objetos distribuidos estarán "unidos" mediante algún mecanismo que permita
saber a los clientes:
●
¿Dónde se encuentran los servidores?
●
¿Cómo acceder a ellos y ?
●
¿Qué se les puede pedir?
Ejemplo
●
Remote method invocation (RMI) de Java
6
Objetos Distribuidos
Este proceso lógico es el que nos hace todo el sistema transparente
Localiza los objetos en los sistemas remotos y transforma las peticiones para que
se entiendan independientemente a la máquina sobre la que se están ejecutando o
en el lenguaje en el que están escritos
7
Objetos Distribuidos
El concepto global de objetos distribuidos puede verse como una red global de
clientes y servidores heterogéneos
8
Tecnología
El mecanismo más usado en el modelo procedural es la llamada a procedimiento
remoto (Remote procedure call, RPC ) que es idéntico a una llamada a un
procedimiento sólo que origen y destino son procesos distintos
9
Tecnología
Los RPCs son un estándar del DCE (Distributed Computed Environment), que
fue creado como un entorno para sistemas abiertos que nos ofrece un conjunto de
servicios como son direccionamiento (naming), administración de tareas
paralelas (thread management) y seguridad
10
Tecnología
Actualmente, algunas de las tendencias principales que se están utilizando dando
soporte a la distribución de objetos son RMI de Sunsoft, CORBA del Object
Management Group y DCOM (Distributed Component Object Model) de
Microsoft
11
RMI
Permite la invocación de métodos de objetos Java que residen en otras
máquinas.
El Remote Method Invocation aparece como parte integrante del JDK
(Java Development Kit) de Java a partir de la versión 1.1
¿Y qué es RMI?
12
RMI
RMI usa un protocolo nativo propio JRMP(Java Remote Method
Protocol) que se sitúa sobre el protocolo de red (TCP/IP, por
ejemplo) que hace que sólo se pueda hablar con otros objetos
Java
La principal diferencia de este mecanismo con respecto a los
RPC es que el RMI forma parte integrante del lenguaje y no
hay que hacer ninguna referencia explícita a ningún nivel
subyacente del sistema sobre el que se va a ejecutar la aplicación
13
RMI
14
RMI
Objetivo: hacer que el software distribuido se programe igual que una
aplicación no distribuida
Mediante el modelo RPC la comunicación se realiza conceptualmente
igual que la invocación de un procedimiento local
15
RMI
Pasos:
●
A llama al procedimiento remoto de B
●
La llamada dispara una acción de un procedimiento de B
●
Al finalizar el procedimiento, B devuelve el valor a A
Simplifica la comunicación entre procesos y la sincronización de
eventos
16
RMI
●
Modelo equivalente a las llamadas a procedimientos remotos
●
Proceso invoca un método local de otro proceso
●
Se envían tanto los argumentos del método como el valor devuelto
por el mismo
17
RMI
18
RMI
Comparación RMI y sockets
Ventajas:
●
Los programas RMI son más sencillos de diseñar
●
Servidor RMI concurrente
Inconvenientes:
●
Sockets tienen menos sobrecarga
●
RMI sólo para plataformas Java
19
Arquitectura
stub
Capa ref. remota
Capa transporte
skeleton
Capa de ref. remota
Capa transporte
Ruta de datos lógica
Ruta de datos física
Interfaz con el programa
Implementa protocolos de ref. remota
Implementa protocolo transporte
objeto
cliente
Objeto
servidor
Servicio directorios
20
Arquitectura
Nivel de resguardo o stub
●
Se encarga del aplanamiento de los parámetros
●
Stub: resguardo local. Cuando un cliente realiza una invocación remota, en
realidad hace una invocación de un método del resguardo local
Nivel de gestión de referencias remotas
●
Interpreta y gestiona las referencias a objetos remotos
●
Invoca operaciones de la capa de transporte
Nivel de transporte
●
Se encarga de las comunicaciones y de establecer las conexiones necesarias
●
Basada en protocolo TCP
21
Arquitectura
22
Arquitectura
23
Ejemplo
Se realizará una aplicación para enviar un mensaje de saludo al servidor. El
servidor recibirá el mensaje y lo imprimirá
24
Ejemplo
Diagrama de arquitectura de RMI básico
25
Ejemplo
Diagrama de arquitectura de RMI
26
Ejemplos
Remote: se envia una referencia al objeto en otro computador(algo así
como un paso por referencia). Los cambios que se hacen se reflejan en la
instancia final
Serializable: se envia una copia exacta del objeto (algo así como un paso por
valor). Los cambios que se hacen en otro computador no se reflejan en el
objeto original (por que es una copia)
Objetos Remotos
27
Ejemplos
Una vez que los métodos han sido
implementados (comportamiento
remoto con Remote o Serializable),
el objeto debe ser exportado
Esto puede hacerse de forma implícita
si el objeto extiende la clase
UnicastRemoteObject (paquete
java.rmi.server), o puede hacerse de
forma explícita con una llamada al
método exportObject() del mismo
paquete
UnicastRemoteObject
28
Ejemplos
InterfazRmi
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface InterfazRmi extends Remote {
public String saludar(String nombre) throws RemoteException;
}
29
Ejemplos
ImplementacionRmi
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class ImplementacionRmi extends UnicastRemoteObject
implements InterfazRmi{
public ImplementacionRmi() throws RemoteException {
super();
}
public String saludar(String nombre) throws RemoteException {
return "hola "+ nombre;
}
}
30
Ejemplos
Servidor
import java.rmi.Naming;
public class Servidor {
public Servidor(){
try{
System.out.println("Estamos en el servidor");
InterfazRmi servidor = new ImplementacionRmi();
Naming.rebind("rmi://localhost/oyente", servidor);
}catch(Exception ex){ }
}
public static void main (String [] args){
new Servidor();
}
}
31
Arquitectur RMI
32
Stubs y Skeletons
Una vez definidas la interfase e implementación de las respectivas funciones es
necesario definir otro elemento para ejecutar e invocar funciones remotas: Stubs y
Skeletons
Estos Stubs y Skeletons permiten que al momento de ser invocada la función remota
esta pueda ser simulada localmente
33
Stubs y Skeletons
El Stub funciona como un simulador para todas las funciones que están siendo
invocadas y pertenecen a la implementación de servidor, mientras el Skeleton
funciona como simulador para recibir parámetros de la implementación de cliente
34
Stubs y Skeletons
Para generar estos "Stubs" y "Skeletons" Java ofrece una herramienta llamada rmic ,
basta ejecutar rmic sobre la implementación de las funciones correspondientes
35
Rmi Registry
Al igual que cualquier otra comunicación de
Red se lleva acabo mediante un puerto
TCP/IP
Esta comunicación requiere definir lo que es
denominado RMI Registry
RMI Registry establece en un puerto
TCP/IP (por default 1099) y mantiene un
mapa de las funciones remotas que serán
utilizadas, esto es, cuando arriva la
requisición para una función remota en el
puerto conocido
36
Rmi Registry
RMI Registry será encargado de redireccionar a la implementación apropiada
37
Ejemplo
Cliente
import java.rmi.Naming;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Cliente{
public static void main(String args[]){
try{
InterfazRmi interfaz = (InterfazRmi)Naming.lookup
("rmi://localhost/saludo");
System.out.println("como te llamas");
Scanner escanner = new Scanner(new
InputStreamReader(System.in));
System.out.println(interfaz.saludar(escanner.next()));
}catch(Exception ex){ }
}
}
38
Ejemplo
Registro del servicio
●
Cualquier programa que quiera instanciar un objeto de esta clase debe realizar el
registro con el servicio de nombrado. Ejemplo:
Sumador misuma =
(Sumador) Naming.lookup("rmi://" + args[0] + "/” + "MiSumador");
●
Antes de arrancar el cliente y el servidor, se debe arrancar el programa rmiregistry
en el servidor para el servicio de nombres.
39
Ejemplo
¿Cómo se ejecuta?
Compilación
javac Sumador.java
javac SumadorImpl.java
javac SumadorClient.java
javac Sumador Server.java
Generación de los esqueletos
rmic SumadorImpl
Copiar SumadorImpl_Stub.class e interfaz remota a clientes
Ejecución del programa de registro de RMI
rmiregistry
Ejecución del servidor
java SumadorServer
Ejecución del cliente
java SumadorCliente <host-del-servidor>
40
Reto
Construya un servidor que soporte las 4 operaciones aritméticas (suma,
resta, multiplicación y división) manipulando variables de tipo long y
regresando a los clientes un resultado de ese mismo tipo
41
Cŕeditos
• Transparencias basadas por:
García-Carballeira F., Tema Java RMI OCW Sistemas Distribuidos
Networking académico:
Correo electrónico: rguaman@unl.edu.ec
Twitter: @rene5254
SlideShare: https://es.slideshare.net/rene5254
42
Gracias

Más contenido relacionado

La actualidad más candente

Introducción a los sistemas distribuidos
Introducción a los sistemas distribuidosIntroducción a los sistemas distribuidos
Introducción a los sistemas distribuidosRene Guaman-Quinche
 
La capa de aplicación
La capa de aplicaciónLa capa de aplicación
La capa de aplicaciónJuan Alvarez
 
Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslogUTP
 
Middleware in Distributed System-RPC,RMI
Middleware in Distributed System-RPC,RMIMiddleware in Distributed System-RPC,RMI
Middleware in Distributed System-RPC,RMIPrajakta Rane
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 
Server system architecture
Server system architectureServer system architecture
Server system architectureFaiza Hafeez
 
Chapter 4 a interprocess communication
Chapter 4 a interprocess communicationChapter 4 a interprocess communication
Chapter 4 a interprocess communicationAbDul ThaYyal
 
Administracion de Proyecto de ti
Administracion de Proyecto de tiAdministracion de Proyecto de ti
Administracion de Proyecto de tiDarthuz Kilates
 
DNS. Resolucion de Nombres
DNS. Resolucion de NombresDNS. Resolucion de Nombres
DNS. Resolucion de NombresJavier Teran
 
SMTP Simple Mail Transfer Protocol
SMTP Simple Mail Transfer ProtocolSMTP Simple Mail Transfer Protocol
SMTP Simple Mail Transfer ProtocolSIDDARAMAIAHMC
 

La actualidad más candente (20)

DHCP presentación
DHCP presentaciónDHCP presentación
DHCP presentación
 
RPC
RPCRPC
RPC
 
1.intro. to distributed system
1.intro. to distributed system1.intro. to distributed system
1.intro. to distributed system
 
TCP Vs UDP
TCP Vs UDP TCP Vs UDP
TCP Vs UDP
 
Introducción a los sistemas distribuidos
Introducción a los sistemas distribuidosIntroducción a los sistemas distribuidos
Introducción a los sistemas distribuidos
 
4. system models
4. system models4. system models
4. system models
 
La capa de aplicación
La capa de aplicaciónLa capa de aplicación
La capa de aplicación
 
Arquitectura cliente servidor y p2p
Arquitectura cliente servidor y p2pArquitectura cliente servidor y p2p
Arquitectura cliente servidor y p2p
 
Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslog
 
Middleware in Distributed System-RPC,RMI
Middleware in Distributed System-RPC,RMIMiddleware in Distributed System-RPC,RMI
Middleware in Distributed System-RPC,RMI
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Election algorithms
Election algorithmsElection algorithms
Election algorithms
 
Server system architecture
Server system architectureServer system architecture
Server system architecture
 
Distributed deadlock
Distributed deadlockDistributed deadlock
Distributed deadlock
 
Chapter 4 a interprocess communication
Chapter 4 a interprocess communicationChapter 4 a interprocess communication
Chapter 4 a interprocess communication
 
Administracion de Proyecto de ti
Administracion de Proyecto de tiAdministracion de Proyecto de ti
Administracion de Proyecto de ti
 
DNS. Resolucion de Nombres
DNS. Resolucion de NombresDNS. Resolucion de Nombres
DNS. Resolucion de Nombres
 
Snmp
SnmpSnmp
Snmp
 
Java rmi
Java rmiJava rmi
Java rmi
 
SMTP Simple Mail Transfer Protocol
SMTP Simple Mail Transfer ProtocolSMTP Simple Mail Transfer Protocol
SMTP Simple Mail Transfer Protocol
 

Similar a RMI (20)

Tema RMI en java e invocación utilizando
Tema RMI en java e invocación utilizandoTema RMI en java e invocación utilizando
Tema RMI en java e invocación utilizando
 
RMI
RMIRMI
RMI
 
algorimo distribuidos
algorimo distribuidosalgorimo distribuidos
algorimo distribuidos
 
Ejemplosencillocon rmi
Ejemplosencillocon rmiEjemplosencillocon rmi
Ejemplosencillocon rmi
 
Java Rmi
Java  RmiJava  Rmi
Java Rmi
 
Java Rmi[1]
Java  Rmi[1]Java  Rmi[1]
Java Rmi[1]
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Rmi remote method invocation
Rmi  remote method invocationRmi  remote method invocation
Rmi remote method invocation
 
Networking
NetworkingNetworking
Networking
 
Semana 13 sistemas distribuidos
Semana 13   sistemas distribuidosSemana 13   sistemas distribuidos
Semana 13 sistemas distribuidos
 
Rmi
RmiRmi
Rmi
 
Trabajo de programacion
Trabajo de programacionTrabajo de programacion
Trabajo de programacion
 
Rmi
RmiRmi
Rmi
 
Drupal8 & Symfony2
Drupal8 & Symfony2Drupal8 & Symfony2
Drupal8 & Symfony2
 
Rmi
RmiRmi
Rmi
 
Sistemas Distribuidos
Sistemas DistribuidosSistemas Distribuidos
Sistemas Distribuidos
 
Rpc te
Rpc teRpc te
Rpc te
 
Remote Procedure Call (RPC)
Remote Procedure Call (RPC)Remote Procedure Call (RPC)
Remote Procedure Call (RPC)
 
Apunte unidad 3
Apunte unidad 3Apunte unidad 3
Apunte unidad 3
 
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptx
 

Más de Rene Guaman-Quinche

Paradigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosParadigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosRene Guaman-Quinche
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfRene Guaman-Quinche
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfRene Guaman-Quinche
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de SoftwareRene Guaman-Quinche
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos DistribuidosRene Guaman-Quinche
 
Unidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosUnidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosRene Guaman-Quinche
 
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaTiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaRene Guaman-Quinche
 
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasTiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasRene Guaman-Quinche
 
Introduccion a la computación paralela
Introduccion a la computación paralelaIntroduccion a la computación paralela
Introduccion a la computación paralelaRene Guaman-Quinche
 

Más de Rene Guaman-Quinche (20)

interfaces.pdf
interfaces.pdfinterfaces.pdf
interfaces.pdf
 
Paradigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosParadigma Programación Orientada a Objetos
Paradigma Programación Orientada a Objetos
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdf
 
Elicitación de requerimientos
Elicitación de requerimientosElicitación de requerimientos
Elicitación de requerimientos
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdf
 
Diagramas componentes
Diagramas componentesDiagramas componentes
Diagramas componentes
 
Diagramas de secuencia
Diagramas de secuenciaDiagramas de secuencia
Diagramas de secuencia
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de Software
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos Distribuidos
 
Unidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosUnidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetos
 
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaTiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
 
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasTiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
 
Ciclo de vida software
Ciclo de vida softwareCiclo de vida software
Ciclo de vida software
 
Requisitos no Funcionales
Requisitos no FuncionalesRequisitos no Funcionales
Requisitos no Funcionales
 
Requisitos funcionales
Requisitos funcionalesRequisitos funcionales
Requisitos funcionales
 
Caracterizacion del paralelismo
Caracterizacion del paralelismoCaracterizacion del paralelismo
Caracterizacion del paralelismo
 
Introduccion a la computación paralela
Introduccion a la computación paralelaIntroduccion a la computación paralela
Introduccion a la computación paralela
 
Diagramas de actividades
Diagramas de actividadesDiagramas de actividades
Diagramas de actividades
 
Diagramas de estado
Diagramas de estadoDiagramas de estado
Diagramas de estado
 
Diagrama de clases y objetos
Diagrama de clases y objetosDiagrama de clases y objetos
Diagrama de clases y objetos
 

RMI

  • 1. 1
  • 2. RMI René Guamán-Quinche Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables Carrera de Ingeniería en Sistemas/Computación Junio, 2021 Loja, Ecuador
  • 3. 3 1. Objetos distribuidos 2. Tecnología 3. RMI 4. Arquitectura Básica 5. Ejemplo 6. Arquitectura RMI 7. Stubs y Skeletons 8. Rmi registry Contenido
  • 4. 4 Objetos Distribuidos Son los objetos que dinámicamente asumen el papel de clientes o servidores, según la necesidad. Un objeto distribuido es un objeto que puede ser accedido remotamente desde cualquier lugar en la red, del mismo modo que se haría si estuviese en la misma máquina Objetos distribuidos dentro de una red ● Los objetos proporcionan métodos, los cuales dan acceso a los servicios
  • 5. 5 Objetos Distribuidos Los objetos distribuidos estarán "unidos" mediante algún mecanismo que permita saber a los clientes: ● ¿Dónde se encuentran los servidores? ● ¿Cómo acceder a ellos y ? ● ¿Qué se les puede pedir? Ejemplo ● Remote method invocation (RMI) de Java
  • 6. 6 Objetos Distribuidos Este proceso lógico es el que nos hace todo el sistema transparente Localiza los objetos en los sistemas remotos y transforma las peticiones para que se entiendan independientemente a la máquina sobre la que se están ejecutando o en el lenguaje en el que están escritos
  • 7. 7 Objetos Distribuidos El concepto global de objetos distribuidos puede verse como una red global de clientes y servidores heterogéneos
  • 8. 8 Tecnología El mecanismo más usado en el modelo procedural es la llamada a procedimiento remoto (Remote procedure call, RPC ) que es idéntico a una llamada a un procedimiento sólo que origen y destino son procesos distintos
  • 9. 9 Tecnología Los RPCs son un estándar del DCE (Distributed Computed Environment), que fue creado como un entorno para sistemas abiertos que nos ofrece un conjunto de servicios como son direccionamiento (naming), administración de tareas paralelas (thread management) y seguridad
  • 10. 10 Tecnología Actualmente, algunas de las tendencias principales que se están utilizando dando soporte a la distribución de objetos son RMI de Sunsoft, CORBA del Object Management Group y DCOM (Distributed Component Object Model) de Microsoft
  • 11. 11 RMI Permite la invocación de métodos de objetos Java que residen en otras máquinas. El Remote Method Invocation aparece como parte integrante del JDK (Java Development Kit) de Java a partir de la versión 1.1 ¿Y qué es RMI?
  • 12. 12 RMI RMI usa un protocolo nativo propio JRMP(Java Remote Method Protocol) que se sitúa sobre el protocolo de red (TCP/IP, por ejemplo) que hace que sólo se pueda hablar con otros objetos Java La principal diferencia de este mecanismo con respecto a los RPC es que el RMI forma parte integrante del lenguaje y no hay que hacer ninguna referencia explícita a ningún nivel subyacente del sistema sobre el que se va a ejecutar la aplicación
  • 14. 14 RMI Objetivo: hacer que el software distribuido se programe igual que una aplicación no distribuida Mediante el modelo RPC la comunicación se realiza conceptualmente igual que la invocación de un procedimiento local
  • 15. 15 RMI Pasos: ● A llama al procedimiento remoto de B ● La llamada dispara una acción de un procedimiento de B ● Al finalizar el procedimiento, B devuelve el valor a A Simplifica la comunicación entre procesos y la sincronización de eventos
  • 16. 16 RMI ● Modelo equivalente a las llamadas a procedimientos remotos ● Proceso invoca un método local de otro proceso ● Se envían tanto los argumentos del método como el valor devuelto por el mismo
  • 18. 18 RMI Comparación RMI y sockets Ventajas: ● Los programas RMI son más sencillos de diseñar ● Servidor RMI concurrente Inconvenientes: ● Sockets tienen menos sobrecarga ● RMI sólo para plataformas Java
  • 19. 19 Arquitectura stub Capa ref. remota Capa transporte skeleton Capa de ref. remota Capa transporte Ruta de datos lógica Ruta de datos física Interfaz con el programa Implementa protocolos de ref. remota Implementa protocolo transporte objeto cliente Objeto servidor Servicio directorios
  • 20. 20 Arquitectura Nivel de resguardo o stub ● Se encarga del aplanamiento de los parámetros ● Stub: resguardo local. Cuando un cliente realiza una invocación remota, en realidad hace una invocación de un método del resguardo local Nivel de gestión de referencias remotas ● Interpreta y gestiona las referencias a objetos remotos ● Invoca operaciones de la capa de transporte Nivel de transporte ● Se encarga de las comunicaciones y de establecer las conexiones necesarias ● Basada en protocolo TCP
  • 23. 23 Ejemplo Se realizará una aplicación para enviar un mensaje de saludo al servidor. El servidor recibirá el mensaje y lo imprimirá
  • 26. 26 Ejemplos Remote: se envia una referencia al objeto en otro computador(algo así como un paso por referencia). Los cambios que se hacen se reflejan en la instancia final Serializable: se envia una copia exacta del objeto (algo así como un paso por valor). Los cambios que se hacen en otro computador no se reflejan en el objeto original (por que es una copia) Objetos Remotos
  • 27. 27 Ejemplos Una vez que los métodos han sido implementados (comportamiento remoto con Remote o Serializable), el objeto debe ser exportado Esto puede hacerse de forma implícita si el objeto extiende la clase UnicastRemoteObject (paquete java.rmi.server), o puede hacerse de forma explícita con una llamada al método exportObject() del mismo paquete UnicastRemoteObject
  • 28. 28 Ejemplos InterfazRmi import java.rmi.Remote; import java.rmi.RemoteException; public interface InterfazRmi extends Remote { public String saludar(String nombre) throws RemoteException; }
  • 29. 29 Ejemplos ImplementacionRmi import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class ImplementacionRmi extends UnicastRemoteObject implements InterfazRmi{ public ImplementacionRmi() throws RemoteException { super(); } public String saludar(String nombre) throws RemoteException { return "hola "+ nombre; } }
  • 30. 30 Ejemplos Servidor import java.rmi.Naming; public class Servidor { public Servidor(){ try{ System.out.println("Estamos en el servidor"); InterfazRmi servidor = new ImplementacionRmi(); Naming.rebind("rmi://localhost/oyente", servidor); }catch(Exception ex){ } } public static void main (String [] args){ new Servidor(); } }
  • 32. 32 Stubs y Skeletons Una vez definidas la interfase e implementación de las respectivas funciones es necesario definir otro elemento para ejecutar e invocar funciones remotas: Stubs y Skeletons Estos Stubs y Skeletons permiten que al momento de ser invocada la función remota esta pueda ser simulada localmente
  • 33. 33 Stubs y Skeletons El Stub funciona como un simulador para todas las funciones que están siendo invocadas y pertenecen a la implementación de servidor, mientras el Skeleton funciona como simulador para recibir parámetros de la implementación de cliente
  • 34. 34 Stubs y Skeletons Para generar estos "Stubs" y "Skeletons" Java ofrece una herramienta llamada rmic , basta ejecutar rmic sobre la implementación de las funciones correspondientes
  • 35. 35 Rmi Registry Al igual que cualquier otra comunicación de Red se lleva acabo mediante un puerto TCP/IP Esta comunicación requiere definir lo que es denominado RMI Registry RMI Registry establece en un puerto TCP/IP (por default 1099) y mantiene un mapa de las funciones remotas que serán utilizadas, esto es, cuando arriva la requisición para una función remota en el puerto conocido
  • 36. 36 Rmi Registry RMI Registry será encargado de redireccionar a la implementación apropiada
  • 37. 37 Ejemplo Cliente import java.rmi.Naming; import java.io.InputStreamReader; import java.util.Scanner; public class Cliente{ public static void main(String args[]){ try{ InterfazRmi interfaz = (InterfazRmi)Naming.lookup ("rmi://localhost/saludo"); System.out.println("como te llamas"); Scanner escanner = new Scanner(new InputStreamReader(System.in)); System.out.println(interfaz.saludar(escanner.next())); }catch(Exception ex){ } } }
  • 38. 38 Ejemplo Registro del servicio ● Cualquier programa que quiera instanciar un objeto de esta clase debe realizar el registro con el servicio de nombrado. Ejemplo: Sumador misuma = (Sumador) Naming.lookup("rmi://" + args[0] + "/” + "MiSumador"); ● Antes de arrancar el cliente y el servidor, se debe arrancar el programa rmiregistry en el servidor para el servicio de nombres.
  • 39. 39 Ejemplo ¿Cómo se ejecuta? Compilación javac Sumador.java javac SumadorImpl.java javac SumadorClient.java javac Sumador Server.java Generación de los esqueletos rmic SumadorImpl Copiar SumadorImpl_Stub.class e interfaz remota a clientes Ejecución del programa de registro de RMI rmiregistry Ejecución del servidor java SumadorServer Ejecución del cliente java SumadorCliente <host-del-servidor>
  • 40. 40 Reto Construya un servidor que soporte las 4 operaciones aritméticas (suma, resta, multiplicación y división) manipulando variables de tipo long y regresando a los clientes un resultado de ese mismo tipo
  • 41. 41 Cŕeditos • Transparencias basadas por: García-Carballeira F., Tema Java RMI OCW Sistemas Distribuidos
  • 42. Networking académico: Correo electrónico: rguaman@unl.edu.ec Twitter: @rene5254 SlideShare: https://es.slideshare.net/rene5254 42 Gracias