SlideShare a Scribd company logo
1 of 9
RMI
Geovanny Mendoza González
geovanny0401@gmail.com
http://geovanny0401.blogspot.com.co/
Código: https://github.com/Geovanny0401/rmi.git
febrero de 2016
1
Remote Method Invocation (RMI)
• La tecnología RMI (Remote Method Ivocation,
Invocación Remota de Métodos), permite hacer que un
objeto que se está ejecutando en una máquina virtual
invoque métodos de otro objeto que se está ejecutando
en otra máquina virtual distinta, en la misma
computadora o no. A este último lo llam
• A grandes rasgos, un programa que utiliza RMI para
obtener un objeto remoto e invocar sus métodos se ve
así:
UnaInterface objRemoto = ... // referencia al objeto
remoto
// invoco sus metodos como con cualquier otro objeto
String saludo = objRemoto.obtenerSaludo(“Geovanny");
// ya obtuve lo que esperaba... muestro el resultado
System.out.println("Respuesta: " + saludo)
febrero de 2016
2
Componentes de una aplicación RMI
• Una aplicación RMI se compone de tres partes:
clientes, servidor y los objetos remotos.
• El servidor es el programa que instancia los objetos remotos y los hace
accesibles al cliente publicándolos en un repositorio de objetos: el
rmiregistry.
• El cliente es el programa que, luego de realizar una búsqueda en el
repositorio, obtiene una referencia al objeto remoto y le invoca sus
métodos.
• Los objetos remotos son los objetos publicados por el server a los que el
cliente podrá acceder remotamente.
febrero de 2016
3
Ejemplo de una aplicación utilizando
RMI
ubica y
utiliza
<<interface>>
ObjetoRemoto
-------
obtenerSaludo
<<class>>
ObjetoRemotoImple
-------
obtenerSaludo
<<class>>
ServerRMI
instancia y
publica en el
rmiregistry
<<class>>
ClienteRMI
febrero de 2016
4
Compilar y Ejecutar la aplicación RMI
Parte 1
• Las clases stub debemos generarlas nosotros mismos
utilizando una herramienta provista con el JDK: el rmic
(RMI compiler). Lo hacemos de la siguiente manera:
rmic ObjetoRemotoImple
• Luego de esto obtendremos la clase
ObjetoRemotoImple_Stub.
• El objeto stub es para el cliente una especie de
representación local del objeto remoto y su función es la
de resolver la comunicación con el servidor.
febrero de 2016
5
Compilar y Ejecutar la aplicación RMI
Parte 2
• Una vez generado el stub el próximo paso será ejecutar el
rmiregistry que implementa un repositorio de objetos
sobre el cual el server publicará los objetos remotos. El
rmiregistry se provee con el JDK y para levantarlo
simplemente debemos ejecutar el comando así:
start rmiregistry
febrero de 2016
6
Compilar y Ejecutar la aplicación RMI
Parte 3
• Por defecto la registry atenderá en el port 1099,
pero podemos especificar un puerto diferente
pasándolo como argumento en línea de
comandos:
rmiregistry 2020
• Ahora la registry atenderá en el puerto 2020.
febrero de 2016
7
RMI y Serialización de Objetos
• El server publica objetos remotos en la registry para
que el cliente, luego de ubicarlos, invoque sus
métodos.
• Los métodos de los objetos remotos pueden recibir y
retornar objetos siempre y cuando estos sean
instancias de clases seriabliables. Es decir, objetos
cuyas clases implementen la interface
Serializable. También podemos enviar y recibir
valores de tipos de datos primitivos como int,
double, boolean, etc.
febrero de 2016
8
Gracias
febrero de 2016
9

More Related Content

What's hot (20)

Networking
NetworkingNetworking
Networking
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
Curso c sharp
Curso c sharpCurso c sharp
Curso c sharp
 
Serializacion
SerializacionSerializacion
Serializacion
 
Unidad 2 Sintaxis en java
Unidad 2 Sintaxis en javaUnidad 2 Sintaxis en java
Unidad 2 Sintaxis en java
 
Java
JavaJava
Java
 
Capítulo 04 objetos fijos
Capítulo 04 objetos fijosCapítulo 04 objetos fijos
Capítulo 04 objetos fijos
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threads
 
Utp sirn_2015-1 lab1
 Utp sirn_2015-1 lab1 Utp sirn_2015-1 lab1
Utp sirn_2015-1 lab1
 
C sharp intro1
C sharp intro1C sharp intro1
C sharp intro1
 
Capítulo 03 ambiente trabajo simio
Capítulo 03 ambiente trabajo simioCapítulo 03 ambiente trabajo simio
Capítulo 03 ambiente trabajo simio
 
SCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/OSCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/O
 
Practica1
Practica1Practica1
Practica1
 
04 j flex
04 j flex04 j flex
04 j flex
 
Suarez l 2001 el paquete java io
Suarez l 2001 el paquete java ioSuarez l 2001 el paquete java io
Suarez l 2001 el paquete java io
 
Destructores
Destructores Destructores
Destructores
 
Poo 1
Poo 1Poo 1
Poo 1
 
Lab5 guia
Lab5 guiaLab5 guia
Lab5 guia
 
Kit de supervivencia para Java 8 : como prepararse para Java 9
Kit de supervivencia para Java 8 :  como prepararse para Java 9Kit de supervivencia para Java 8 :  como prepararse para Java 9
Kit de supervivencia para Java 8 : como prepararse para Java 9
 

Similar to Rmi

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 utilizandoAntonioFloresLara
 
Presentacion PDA
Presentacion PDAPresentacion PDA
Presentacion PDASaul Gausin
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLabFIB
 
Tema intro a la programación (robomind) (informática 4ºeso)
Tema intro a la programación (robomind) (informática 4ºeso)Tema intro a la programación (robomind) (informática 4ºeso)
Tema intro a la programación (robomind) (informática 4ºeso)jribalt1
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Gitmoisesgallego
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidosJaziel Torres
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Ricard Luquero
 
SISTEMAS DE MONITOREO LINUX
SISTEMAS DE MONITOREO LINUXSISTEMAS DE MONITOREO LINUX
SISTEMAS DE MONITOREO LINUXDiego Caceres
 
Manual básico de android v2.0
Manual básico de android v2.0Manual básico de android v2.0
Manual básico de android v2.0KaReena Lee Eun RI
 
Manual básico de android v2.0
Manual básico de android v2.0Manual básico de android v2.0
Manual básico de android v2.0KaReena Lee Eun RI
 

Similar to Rmi (20)

Rmi
RmiRmi
Rmi
 
Rmi
RmiRmi
Rmi
 
Ejemplosencillocon rmi
Ejemplosencillocon rmiEjemplosencillocon rmi
Ejemplosencillocon rmi
 
RMI
RMIRMI
RMI
 
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
 
Aplicación RMI
Aplicación RMIAplicación RMI
Aplicación RMI
 
Presentacion PDA
Presentacion PDAPresentacion PDA
Presentacion PDA
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
 
Tema intro a la programación (robomind) (informática 4ºeso)
Tema intro a la programación (robomind) (informática 4ºeso)Tema intro a la programación (robomind) (informática 4ºeso)
Tema intro a la programación (robomind) (informática 4ºeso)
 
Java Rmi
Java RmiJava Rmi
Java Rmi
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
Cacti
CactiCacti
Cacti
 
JVM Reactive Programming
JVM Reactive ProgrammingJVM Reactive Programming
JVM Reactive Programming
 
SISTEMAS DE MONITOREO LINUX
SISTEMAS DE MONITOREO LINUXSISTEMAS DE MONITOREO LINUX
SISTEMAS DE MONITOREO LINUX
 
Dns spoofing kali linux
Dns spoofing kali linuxDns spoofing kali linux
Dns spoofing kali linux
 
Manual básico de android v2.0
Manual básico de android v2.0Manual básico de android v2.0
Manual básico de android v2.0
 
Manual básico de android v2.0
Manual básico de android v2.0Manual básico de android v2.0
Manual básico de android v2.0
 

Rmi

  • 2. Remote Method Invocation (RMI) • La tecnología RMI (Remote Method Ivocation, Invocación Remota de Métodos), permite hacer que un objeto que se está ejecutando en una máquina virtual invoque métodos de otro objeto que se está ejecutando en otra máquina virtual distinta, en la misma computadora o no. A este último lo llam • A grandes rasgos, un programa que utiliza RMI para obtener un objeto remoto e invocar sus métodos se ve así: UnaInterface objRemoto = ... // referencia al objeto remoto // invoco sus metodos como con cualquier otro objeto String saludo = objRemoto.obtenerSaludo(“Geovanny"); // ya obtuve lo que esperaba... muestro el resultado System.out.println("Respuesta: " + saludo) febrero de 2016 2
  • 3. Componentes de una aplicación RMI • Una aplicación RMI se compone de tres partes: clientes, servidor y los objetos remotos. • El servidor es el programa que instancia los objetos remotos y los hace accesibles al cliente publicándolos en un repositorio de objetos: el rmiregistry. • El cliente es el programa que, luego de realizar una búsqueda en el repositorio, obtiene una referencia al objeto remoto y le invoca sus métodos. • Los objetos remotos son los objetos publicados por el server a los que el cliente podrá acceder remotamente. febrero de 2016 3
  • 4. Ejemplo de una aplicación utilizando RMI ubica y utiliza <<interface>> ObjetoRemoto ------- obtenerSaludo <<class>> ObjetoRemotoImple ------- obtenerSaludo <<class>> ServerRMI instancia y publica en el rmiregistry <<class>> ClienteRMI febrero de 2016 4
  • 5. Compilar y Ejecutar la aplicación RMI Parte 1 • Las clases stub debemos generarlas nosotros mismos utilizando una herramienta provista con el JDK: el rmic (RMI compiler). Lo hacemos de la siguiente manera: rmic ObjetoRemotoImple • Luego de esto obtendremos la clase ObjetoRemotoImple_Stub. • El objeto stub es para el cliente una especie de representación local del objeto remoto y su función es la de resolver la comunicación con el servidor. febrero de 2016 5
  • 6. Compilar y Ejecutar la aplicación RMI Parte 2 • Una vez generado el stub el próximo paso será ejecutar el rmiregistry que implementa un repositorio de objetos sobre el cual el server publicará los objetos remotos. El rmiregistry se provee con el JDK y para levantarlo simplemente debemos ejecutar el comando así: start rmiregistry febrero de 2016 6
  • 7. Compilar y Ejecutar la aplicación RMI Parte 3 • Por defecto la registry atenderá en el port 1099, pero podemos especificar un puerto diferente pasándolo como argumento en línea de comandos: rmiregistry 2020 • Ahora la registry atenderá en el puerto 2020. febrero de 2016 7
  • 8. RMI y Serialización de Objetos • El server publica objetos remotos en la registry para que el cliente, luego de ubicarlos, invoque sus métodos. • Los métodos de los objetos remotos pueden recibir y retornar objetos siempre y cuando estos sean instancias de clases seriabliables. Es decir, objetos cuyas clases implementen la interface Serializable. También podemos enviar y recibir valores de tipos de datos primitivos como int, double, boolean, etc. febrero de 2016 8