SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Tema 6
Invocación de métodos remotos en Java
(RMI)
Sistemas Distribuidos
Grado en Ingeniería Informática
Universidad Carlos III de Madrid
F. García Carballeira, Sistemas Distribuidos
Modelo de objetos en sistemas distribuidos
2
Máquina A Máquina B Máquina C
F. García Carballeira, Sistemas Distribuidos
Invocación de métodos remotos
3
§ Primera aproximación al uso de un
modelo orientado a objetos sobre aplicaciones
distribuidas
§ Objetos distribuidos dentro de una red
} Los objetos proporcionan métodos,
los cuales dan acceso a los servicios
§ Ejemplo:
q Remote method invocation (RMI) de Java
q CORBA Common Object Request Broker Adapter
} Ofrece interfaces de programación independientes de la plataforma y
modelos para aplicaciones portables basadas en objetos distribuidos.
F. García Carballeira, Sistemas Distribuidos
Remote method invocation (Java RMI)
4
} 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
método1
método2
Proceso 1
Proceso 2
Objeto remoto
RMI
F. García Carballeira, Sistemas Distribuidos
} El soporte para RMI en Java está basado en las interfaces y clases definidas
en los paquetes java.rmi y java.rmi.server.
} RMI ofrece:
} Mecanismos para crear servidores y objetos cuyos métodos se puedan
invocar remotamente.
} Mecanismos que permiten a los clientes localizar los objetos remotos.
} Servicio de directorios:
} rmiregistry, servicio de directorios de Java
} Se ejecuta en la máquina servidor objeto
Java RMI (Remote Method Invocation)
5
F. García Carballeira, Sistemas Distribuidos
Java RMI (Remote Method Invocation)
6
F. García Carballeira, Sistemas Distribuidos
Comparación RMI y sockets
7
} 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
F. García Carballeira, Sistemas Distribuidos
Arquitectura de Java RMI
8
stub
Referencia remota
Transporte
skeleton
Referencia remota
Transporte
Ruta de datos lógica
Ruta de datos física
Cliente de
objetos
Servidor
de objetos
Servicio de directorios
F. García Carballeira, Sistemas Distribuidos
Arquitectura de RMI
9
} Nivel de stub
} Se encarga del aplanamiento de los parámetros.
} Stub: proxy local. Cuando un cliente realiza una invocación remota,
en realidad hace una invocación de un método de un objeto proxy
} 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.
stub
Referencia remota
Transporte
skeleton
Referencia remota
Transporte
Cliente de
objetos
Servidor
de objetos
Servicio de directorios
F. García Carballeira, Sistemas Distribuidos
Arquitectura de RMI
10
skeleton
empaquetamiento
Envío petición
desempaquetamiento
Invoca método
Método
Remoto
Ejecución del código
Devuelve valor
Recibe el valor retorno
empaquetamiento
Envía la respuesta
desempaquetamiento
Devuelve el valor retorno
tiempo
stub
cliente
llamada a método
remoto
F. García Carballeira, Sistemas Distribuidos
Diseño de aplicaciones RMI
11
javac
(.java)
1
2
3
4
10
9
5
6
7
8
(.java)
usa
Cliente
Ejectuar
Cliente
(.class)
CLIENTE SERVIDOR
(.class)
Esqueleto
(.class)
Implementación de la
interfaz remota
stub
(.class)
Servidor
(.class)
Arrancar RMIRegistry
Crear los objetos
Registrar los objetos
javac
rmic
Definición de la
interfaz remota
F. García Carballeira, Sistemas Distribuidos
Diseño de aplicaciones RMI
12
javac
(.java)
1
2
3
4
10
9
5
6
7
8
(.java)
usa
Cliente
Ejectuar
Cliente
(.class)
CLIENTE SERVIDOR
(.class)
Esqueleto
(.class)
stub
(.class)
Servidor
(.class)
Arrancar RMIRegistry
Crear los objetos
Registrar los objetos
javac
rmic
Definición de la
interfaz remota
Implementación de la
interfaz remota
F. García Carballeira, Sistemas Distribuidos
Diseño de aplicaciones RMI
13
} Interfaz remota:
} Clase que sirve de plantilla para otras clases.
import java.rmi.*;
public interface SomeInterface extends Remote {
// Cabecera del primer método remoto
public String someMethod1( )
throws java.rmi.RemoteException;
// Cabecera del segundo método remoto
public int someMethod2( float parameter) throws
java.rmi.RemoteException;
}
F. García Carballeira, Sistemas Distribuidos
Diseño de aplicaciones RMI
14
} Implementación de la interfaz remota
} Realizado por el servidor
import java.rmi.*;
import java.rmi.server.*;
public class SomeImpl extends UnicastRemoteObject
implements SomeInterface
{
public SomeImpl() throws RemoteException { super( ); }
public String someMethod1( ) throws RemoteException
{ /* Código fuente */ }
public int someMethod2(float a) throws RemoteException
{ /* Código fuente */ }
}
F. García Carballeira, Sistemas Distribuidos
Diseño de aplicaciones RMI
15
UnicastRemoteObject
SomeInterface
SomeImpl
Method1
Method2
Method2
Method1
...
...
F. García Carballeira, Sistemas Distribuidos
Diseño de aplicaciones RMI
16
javac
(.java)
1
2
3
4
10
9
5
6
7
8
(.java)
usa
Ejectuar
Cliente
(.class)
CLIENTE SERVIDOR
(.class)
Implementación de la
interfaz remota
Arrancar RMIRegistry
Crear los objetos
Registrar los objetos
javac
Definición de la
interfaz remota
rmic
Cliente
Esqueleto
(.class)
stub
(.class)
Servidor
(.class)
F. García Carballeira, Sistemas Distribuidos
Diseño de aplicaciones RMI
17
} Diseño por parte del servidor:
} Implementación de la interfaz remota
} Generar el stub y el esqueleto
# rmic SomeImpl
# ls SomeImp*.class
!
"#$%&$'()*+%(,-(.**
"#$%&$'()*/01,-(.**
nombre de la clase de la implementación de la interface remota
F. García Carballeira, Sistemas Distribuidos
Invocación remota
18
Servidor de objetos
SomeInterface.class
SomeImpl.class
SomeServer.class
Skel.class
SomeClient.class
Cliente de objetos
SomeInterface.class
Stub.class
F. García Carballeira, Sistemas Distribuidos
Diseño de aplicaciones RMI
19
javac
(.java)
1
2
3
4
10
9
5
6
7
8
(.java)
usa
Ejectuar
Cliente
(.class)
CLIENTE SERVIDOR
(.class)
Esqueleto
(.class)
Implementación de la
interfaz remota
stub
(.class)
Arrancar RMIRegistry
Crear los objetos
Registrar los objetos
javac
rmic
Definición de la
interfaz remota
Servidor
(.class)
Cliente
F. García Carballeira, Sistemas Distribuidos
Plantilla de clase de servidor de objeto
20
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
public class SomeServer {
public static void main(String args[]) {
try{
SomeImpl exportedObj = new SomeImpl();
int portNum=1099;
startRegistry(portNum);
registryURL = "rmi://localhost:"+portNum+"/some";
Naming.rebind(registryURL, exportedObj);
System.out.println("Some Server ready.");
}
}
catch (Exception ex) {
System.out.println(“Exception: “+ex);
}
F. García Carballeira, Sistemas Distribuidos
Plantilla de clase de servidor de objeto
21
private static void startRegistry(int RMIPortNum)
throws RemoteException
{
try {
Registry registry= LocateRegistry.getRegistry(RMIPortNum);
registry.list( );
}
catch (RemoteException ex)
{
System.out.println("RMI registry cannot be located at port" + RMIPortNum);
Registry registry= LocateRegistry.createRegistry(RMIPortNum);
System.out.println("RMI registry created at port " + RMIPortNum);
}
}
Alternativa: activar el registro manualmente con
rmiregistry <número de puerto>
F. García Carballeira, Sistemas Distribuidos
Plantilla de clase de cliente de objeto
22
import java.rmi.*;
public class SomeClient
{
public static void main(String args[])
{
try {
int portNum=1099;
String registryURL ="rmi://serverhost:" + portNum + "/some";
SomeInterface h = (SomeInterface)Naming.lookup(registryURL);
String message = h.someMethod1();
System.out.println(message);
}
catch (Exception e) {
System.out.println("Exception in SomeClient: " + e);
}
}
}
F. García Carballeira, Sistemas Distribuidos
Invocación remota
23
Cliente
Servidor
rmiregistry
RMI
RMI RMI
Máquina 1
Máquina 2
F. García Carballeira, Sistemas Distribuidos
Ejemplo (RMI)
24
resultado = 7
F. García Carballeira, Sistemas Distribuidos
Modelización de la interfaz remota
(Sumador)
25
public interface Sumador
extends java.rmi.Remote
{
public int sumar(int a, int b)
throws java.rmi.RemoteException;
public int restar(int a, int b)
throws java.rmi.RemoteException;
}
F. García Carballeira, Sistemas Distribuidos
Clase que implementa la interfaz
(SumadorImpl)
26
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class SumadorImpl
extends UnicastRemoteObject implements Sumador {
public SumadorImpl(String name) throws RemoteException {
super();
try {
System.out.println("Rebind objeto " + name);
Naming.rebind(name, this);
} catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
e.printStackTrace();
}
}
public int sumar (int a, int b) throws RemoteException
{ return a + b; }
public int restar (int a, int b) throws RemoteException
{ return a - b; }
}
F. García Carballeira, Sistemas Distribuidos
Registro del servicio
27
} Cualquier programa que quiera instanciar
un objeto de esta clase debe realizar el registro
con el servicio de nombrado. Ejemplo:
Naming.rebind(name, this);
} Antes de arrancar el cliente y el servidor,
se debe arrancar el programa rmiregistry
en el servidor para el servicio de nombres.
F. García Carballeira, Sistemas Distribuidos
Código del servidor
(SumadorServer)
28
import java.rmi.*;
import java.rmi.server.UnicastRemoteobjeto;
public class SumadorImpl
extends UnicastRemoteobjeto implements Sumador {
public SumadorImpl(String name)
throws RemoteException {
super();
try {
System.out.println("Rebind objeto " + name);
Naming.rebind(name, this);
}
import java.rmi.*;
import java.rmi.server.*;
public class SumadorServer {
public static void main (String args[]) {
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try{
SumadorImpl misuma = new SumadorImpl("MiSumador");
} catch(Exception excr) {
System.out.println("Excepcion: "+excr);
}
}
}
F. García Carballeira, Sistemas Distribuidos
Código en el cliente
(SumadorCliente)
29
public interface Sumador
extends java.rmi.Remote
{
public int sumar(int a, int b)
throws java.rmi.RemoteException;
}
import java.rmi.*;
public class SumadorClient {
public static void main(String args[]) {
int res = 0;
try {
System.out.println("Buscando Objeto ");
Sumador misuma = (Sumador)Naming.lookup(
"rmi://" + args[0] + "/" +"MiSumador");
res = misuma.sumar(5, 2);
System.out.println("5 + 2 = " + res);
} catch(Exception e) {
System.err.println(" System exception");
}
System.exit(0);
}
}
host
F. García Carballeira, Sistemas Distribuidos
¿Cómo se ejecuta?
30
1. Compilación
n javac Sumador.java
n javac SumadorImpl.java
n javac SumadorClient.java
n javac Sumador Server.java
2. Generación de los esqueletos
n rmic SumadorImpl
3. Copiar SumadorImpl_Stub.class e
interfaz remota a clientes
4. Ejecución del programa de registro de RMI
n rmiregistry &
5. Ejecución del servidor
n java -classpath . -Djava.security.policy=./policy SumadorServer
6. Ejecución del cliente
n java SumadorClient <host-del-servidor>
F. García Carballeira, Sistemas Distribuidos
policy
grant {
// Allow everything for now
permission java.security.AllPermission;
};
31

Más contenido relacionado

Similar a Tema RMI en java e invocación utilizando

Similar a Tema RMI en java e invocación utilizando (20)

Java Rmi
Java RmiJava Rmi
Java Rmi
 
Java Rmi
Java  RmiJava  Rmi
Java Rmi
 
Java Rmi[1]
Java  Rmi[1]Java  Rmi[1]
Java Rmi[1]
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
RMI
RMIRMI
RMI
 
Mq conceptos y programacion as400
Mq conceptos y programacion as400Mq conceptos y programacion as400
Mq conceptos y programacion as400
 
Comandos de red
Comandos de redComandos de red
Comandos de red
 
Comunicación distribuida
Comunicación distribuidaComunicación distribuida
Comunicación distribuida
 
Comunicación distribuida
Comunicación distribuidaComunicación distribuida
Comunicación distribuida
 
RPC
RPCRPC
RPC
 
Networking
NetworkingNetworking
Networking
 
COMUNICACIÓN DISTRIBUIDA
COMUNICACIÓN DISTRIBUIDACOMUNICACIÓN DISTRIBUIDA
COMUNICACIÓN DISTRIBUIDA
 
Remote Procedure Call (RPC)
Remote Procedure Call (RPC)Remote Procedure Call (RPC)
Remote Procedure Call (RPC)
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
RMI en java
RMI en javaRMI en java
RMI en java
 
algorimo distribuidos
algorimo distribuidosalgorimo distribuidos
algorimo distribuidos
 
Rmi
RmiRmi
Rmi
 
Curso: Redes y telecomunicaciones 08 Redes LAN
Curso: Redes y telecomunicaciones 08 Redes LANCurso: Redes y telecomunicaciones 08 Redes LAN
Curso: Redes y telecomunicaciones 08 Redes LAN
 
CQRS .NET Conf Chile 2018
CQRS .NET Conf Chile 2018CQRS .NET Conf Chile 2018
CQRS .NET Conf Chile 2018
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 

Último

Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxluisvalero46
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosfranchescamassielmor
 
Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)dianamateo1513
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaSebastianQP1
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRyanimarca23
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana5extraviado
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptxNayeliZarzosa1
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCarlos Delgado
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasLeonardoMendozaDvila
 
Espontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosEspontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosOscarGonzalez231938
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidasNelsonQuispeQuispitu
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...Arquitecto Alejandro Gomez cornejo muñoz
 
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...esandoval7
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxEtse9
 

Último (20)

Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptx
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negocios
 
Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieria
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric Project
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
 
Espontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosEspontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneos
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidas
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
 
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptx
 

Tema RMI en java e invocación utilizando

  • 1. Tema 6 Invocación de métodos remotos en Java (RMI) Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de Madrid
  • 2. F. García Carballeira, Sistemas Distribuidos Modelo de objetos en sistemas distribuidos 2 Máquina A Máquina B Máquina C
  • 3. F. García Carballeira, Sistemas Distribuidos Invocación de métodos remotos 3 § Primera aproximación al uso de un modelo orientado a objetos sobre aplicaciones distribuidas § Objetos distribuidos dentro de una red } Los objetos proporcionan métodos, los cuales dan acceso a los servicios § Ejemplo: q Remote method invocation (RMI) de Java q CORBA Common Object Request Broker Adapter } Ofrece interfaces de programación independientes de la plataforma y modelos para aplicaciones portables basadas en objetos distribuidos.
  • 4. F. García Carballeira, Sistemas Distribuidos Remote method invocation (Java RMI) 4 } 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 método1 método2 Proceso 1 Proceso 2 Objeto remoto RMI
  • 5. F. García Carballeira, Sistemas Distribuidos } El soporte para RMI en Java está basado en las interfaces y clases definidas en los paquetes java.rmi y java.rmi.server. } RMI ofrece: } Mecanismos para crear servidores y objetos cuyos métodos se puedan invocar remotamente. } Mecanismos que permiten a los clientes localizar los objetos remotos. } Servicio de directorios: } rmiregistry, servicio de directorios de Java } Se ejecuta en la máquina servidor objeto Java RMI (Remote Method Invocation) 5
  • 6. F. García Carballeira, Sistemas Distribuidos Java RMI (Remote Method Invocation) 6
  • 7. F. García Carballeira, Sistemas Distribuidos Comparación RMI y sockets 7 } 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
  • 8. F. García Carballeira, Sistemas Distribuidos Arquitectura de Java RMI 8 stub Referencia remota Transporte skeleton Referencia remota Transporte Ruta de datos lógica Ruta de datos física Cliente de objetos Servidor de objetos Servicio de directorios
  • 9. F. García Carballeira, Sistemas Distribuidos Arquitectura de RMI 9 } Nivel de stub } Se encarga del aplanamiento de los parámetros. } Stub: proxy local. Cuando un cliente realiza una invocación remota, en realidad hace una invocación de un método de un objeto proxy } 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. stub Referencia remota Transporte skeleton Referencia remota Transporte Cliente de objetos Servidor de objetos Servicio de directorios
  • 10. F. García Carballeira, Sistemas Distribuidos Arquitectura de RMI 10 skeleton empaquetamiento Envío petición desempaquetamiento Invoca método Método Remoto Ejecución del código Devuelve valor Recibe el valor retorno empaquetamiento Envía la respuesta desempaquetamiento Devuelve el valor retorno tiempo stub cliente llamada a método remoto
  • 11. F. García Carballeira, Sistemas Distribuidos Diseño de aplicaciones RMI 11 javac (.java) 1 2 3 4 10 9 5 6 7 8 (.java) usa Cliente Ejectuar Cliente (.class) CLIENTE SERVIDOR (.class) Esqueleto (.class) Implementación de la interfaz remota stub (.class) Servidor (.class) Arrancar RMIRegistry Crear los objetos Registrar los objetos javac rmic Definición de la interfaz remota
  • 12. F. García Carballeira, Sistemas Distribuidos Diseño de aplicaciones RMI 12 javac (.java) 1 2 3 4 10 9 5 6 7 8 (.java) usa Cliente Ejectuar Cliente (.class) CLIENTE SERVIDOR (.class) Esqueleto (.class) stub (.class) Servidor (.class) Arrancar RMIRegistry Crear los objetos Registrar los objetos javac rmic Definición de la interfaz remota Implementación de la interfaz remota
  • 13. F. García Carballeira, Sistemas Distribuidos Diseño de aplicaciones RMI 13 } Interfaz remota: } Clase que sirve de plantilla para otras clases. import java.rmi.*; public interface SomeInterface extends Remote { // Cabecera del primer método remoto public String someMethod1( ) throws java.rmi.RemoteException; // Cabecera del segundo método remoto public int someMethod2( float parameter) throws java.rmi.RemoteException; }
  • 14. F. García Carballeira, Sistemas Distribuidos Diseño de aplicaciones RMI 14 } Implementación de la interfaz remota } Realizado por el servidor import java.rmi.*; import java.rmi.server.*; public class SomeImpl extends UnicastRemoteObject implements SomeInterface { public SomeImpl() throws RemoteException { super( ); } public String someMethod1( ) throws RemoteException { /* Código fuente */ } public int someMethod2(float a) throws RemoteException { /* Código fuente */ } }
  • 15. F. García Carballeira, Sistemas Distribuidos Diseño de aplicaciones RMI 15 UnicastRemoteObject SomeInterface SomeImpl Method1 Method2 Method2 Method1 ... ...
  • 16. F. García Carballeira, Sistemas Distribuidos Diseño de aplicaciones RMI 16 javac (.java) 1 2 3 4 10 9 5 6 7 8 (.java) usa Ejectuar Cliente (.class) CLIENTE SERVIDOR (.class) Implementación de la interfaz remota Arrancar RMIRegistry Crear los objetos Registrar los objetos javac Definición de la interfaz remota rmic Cliente Esqueleto (.class) stub (.class) Servidor (.class)
  • 17. F. García Carballeira, Sistemas Distribuidos Diseño de aplicaciones RMI 17 } Diseño por parte del servidor: } Implementación de la interfaz remota } Generar el stub y el esqueleto # rmic SomeImpl # ls SomeImp*.class ! "#$%&$'()*+%(,-(.** "#$%&$'()*/01,-(.** nombre de la clase de la implementación de la interface remota
  • 18. F. García Carballeira, Sistemas Distribuidos Invocación remota 18 Servidor de objetos SomeInterface.class SomeImpl.class SomeServer.class Skel.class SomeClient.class Cliente de objetos SomeInterface.class Stub.class
  • 19. F. García Carballeira, Sistemas Distribuidos Diseño de aplicaciones RMI 19 javac (.java) 1 2 3 4 10 9 5 6 7 8 (.java) usa Ejectuar Cliente (.class) CLIENTE SERVIDOR (.class) Esqueleto (.class) Implementación de la interfaz remota stub (.class) Arrancar RMIRegistry Crear los objetos Registrar los objetos javac rmic Definición de la interfaz remota Servidor (.class) Cliente
  • 20. F. García Carballeira, Sistemas Distribuidos Plantilla de clase de servidor de objeto 20 import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; public class SomeServer { public static void main(String args[]) { try{ SomeImpl exportedObj = new SomeImpl(); int portNum=1099; startRegistry(portNum); registryURL = "rmi://localhost:"+portNum+"/some"; Naming.rebind(registryURL, exportedObj); System.out.println("Some Server ready."); } } catch (Exception ex) { System.out.println(“Exception: “+ex); }
  • 21. F. García Carballeira, Sistemas Distribuidos Plantilla de clase de servidor de objeto 21 private static void startRegistry(int RMIPortNum) throws RemoteException { try { Registry registry= LocateRegistry.getRegistry(RMIPortNum); registry.list( ); } catch (RemoteException ex) { System.out.println("RMI registry cannot be located at port" + RMIPortNum); Registry registry= LocateRegistry.createRegistry(RMIPortNum); System.out.println("RMI registry created at port " + RMIPortNum); } } Alternativa: activar el registro manualmente con rmiregistry <número de puerto>
  • 22. F. García Carballeira, Sistemas Distribuidos Plantilla de clase de cliente de objeto 22 import java.rmi.*; public class SomeClient { public static void main(String args[]) { try { int portNum=1099; String registryURL ="rmi://serverhost:" + portNum + "/some"; SomeInterface h = (SomeInterface)Naming.lookup(registryURL); String message = h.someMethod1(); System.out.println(message); } catch (Exception e) { System.out.println("Exception in SomeClient: " + e); } } }
  • 23. F. García Carballeira, Sistemas Distribuidos Invocación remota 23 Cliente Servidor rmiregistry RMI RMI RMI Máquina 1 Máquina 2
  • 24. F. García Carballeira, Sistemas Distribuidos Ejemplo (RMI) 24 resultado = 7
  • 25. F. García Carballeira, Sistemas Distribuidos Modelización de la interfaz remota (Sumador) 25 public interface Sumador extends java.rmi.Remote { public int sumar(int a, int b) throws java.rmi.RemoteException; public int restar(int a, int b) throws java.rmi.RemoteException; }
  • 26. F. García Carballeira, Sistemas Distribuidos Clase que implementa la interfaz (SumadorImpl) 26 import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class SumadorImpl extends UnicastRemoteObject implements Sumador { public SumadorImpl(String name) throws RemoteException { super(); try { System.out.println("Rebind objeto " + name); Naming.rebind(name, this); } catch (Exception e) { System.out.println("Exception: " + e.getMessage()); e.printStackTrace(); } } public int sumar (int a, int b) throws RemoteException { return a + b; } public int restar (int a, int b) throws RemoteException { return a - b; } }
  • 27. F. García Carballeira, Sistemas Distribuidos Registro del servicio 27 } Cualquier programa que quiera instanciar un objeto de esta clase debe realizar el registro con el servicio de nombrado. Ejemplo: Naming.rebind(name, this); } Antes de arrancar el cliente y el servidor, se debe arrancar el programa rmiregistry en el servidor para el servicio de nombres.
  • 28. F. García Carballeira, Sistemas Distribuidos Código del servidor (SumadorServer) 28 import java.rmi.*; import java.rmi.server.UnicastRemoteobjeto; public class SumadorImpl extends UnicastRemoteobjeto implements Sumador { public SumadorImpl(String name) throws RemoteException { super(); try { System.out.println("Rebind objeto " + name); Naming.rebind(name, this); } import java.rmi.*; import java.rmi.server.*; public class SumadorServer { public static void main (String args[]) { if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } try{ SumadorImpl misuma = new SumadorImpl("MiSumador"); } catch(Exception excr) { System.out.println("Excepcion: "+excr); } } }
  • 29. F. García Carballeira, Sistemas Distribuidos Código en el cliente (SumadorCliente) 29 public interface Sumador extends java.rmi.Remote { public int sumar(int a, int b) throws java.rmi.RemoteException; } import java.rmi.*; public class SumadorClient { public static void main(String args[]) { int res = 0; try { System.out.println("Buscando Objeto "); Sumador misuma = (Sumador)Naming.lookup( "rmi://" + args[0] + "/" +"MiSumador"); res = misuma.sumar(5, 2); System.out.println("5 + 2 = " + res); } catch(Exception e) { System.err.println(" System exception"); } System.exit(0); } } host
  • 30. F. García Carballeira, Sistemas Distribuidos ¿Cómo se ejecuta? 30 1. Compilación n javac Sumador.java n javac SumadorImpl.java n javac SumadorClient.java n javac Sumador Server.java 2. Generación de los esqueletos n rmic SumadorImpl 3. Copiar SumadorImpl_Stub.class e interfaz remota a clientes 4. Ejecución del programa de registro de RMI n rmiregistry & 5. Ejecución del servidor n java -classpath . -Djava.security.policy=./policy SumadorServer 6. Ejecución del cliente n java SumadorClient <host-del-servidor>
  • 31. F. García Carballeira, Sistemas Distribuidos policy grant { // Allow everything for now permission java.security.AllPermission; }; 31