TEMA 4: PROGRAMACIÓN DISTRIBUIDA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "TEMA 4: PROGRAMACIÓN DISTRIBUIDA"

Transcripción

1 TEMA 4: PROGRAMACIÓN DISTRIBUIDA!" #!$ %! % & '( '')* (+,( -./0%1' 2%1/../ -3% 450 -(.40( %16 2%1/../ -3% /.0-2%..02%% 7-89:08 1! "!;1 %<51=/1+>1499:

2 No existe memoria común Comunicaciones No existe un estado global del sistema Grado de Transparencia Escalables Reconfigurables

3 Modelos de Programación Distribuida Modelo de Paso de Mensajes Operaciones send y receive Analizado en asignatura de S.O. Modelo RPC Stubs de cliente y servidor Visión en Java es RMI Modelos de Objetos Distribuidos DCOM de Microsoft Jini de Sun CORBA de OMG

4 Modelo de Paso de Mensajes Mecanismo para comunicar y sincronizar entidades concurrentes que no pueden o no quieren compartir memoria Llamadas send y receive Tipología de las llamadas: Bloqueadas-No bloqueadas Almacenadas-No almacenadas (en buffer) Fiables-No Fiables En Unix: Pipes con y sin nombre En Java: Sockets. CTJ (Communicating Threads for Java)

5 Modelo General SOLICITUD CLIENTE RESPUESTA SERVIDOR NUCLEO NUCLEO RED

6 % % #>@A$%;% "%% B& CB CLIENTE P U E R T O SERVIDOR TCP/UDP

7 App A App B App C Port xxx Port yyy Port zzz Port kkk PROTOCOLO TCP/UDP Port yyy

8 CLIENTE P U E R T O SERVIDOR Solicitud de conexión CLIENTE P U E R T O P U E R T O SERVIDOR PUERTO

9 D A;% 1% 7 % % %; %%%% 7%%% Socket() Accept() Socket creado y activo

10 ServerSocket " % % & %%Socket "% ServerSocket L = newserversocket (num_puerto) '% B % L.accept(); )%% % B % C%

11 Socket % %% % % % "% Socket (dirección_ip, puerto);

12 4 & ServerSocket / & Socket < InputStream% %% E OutputStream 7 %% 5 2F G %

13 &% #B$ import java.io.*; import java.net.*; public class SocketServidor { public static final int port = 8080; public static void main (String [] args) throws IOException { ServerSocket GenSocket = new ServerSocket(port); System.out.println("El servidor esta escuchando en: "+ GenSocket); try{//espera solicitud conexion desde cliente... Socket enchufe = GenSocket.accept(); } finally { System.out.println("se cierra la conexión..."); GenSocket.close(); } }//main }//SocketServidor

14 4 & Socket / InputStream% %% < OutputStream 7 %% E 2F 5 %

15 ! import java.io.*; import java.net.*; public class SocketCliente { public static void main (String [] args) throws IOException { //llamando ordenador despacho de al lado... InetAddress dir_ip = InetAddress.getByName(" "); Socket enchufe = new Socket (dir_ip, 8080); System.out.println("Datos socket creado: "+enchufe); }//main }//SocketCliente

16 " socket A; % D1 > % & socket!@ %%socket getinputstream() getoutputstream() %%!&% 7%& F (3 & %% SocketChannel

17 #$" # %& '( )***+ % % "% % 3 8% read-only 8% 7% % %% "> % & 3F7 %!> %B"% # 8!$ SE ELIMINA LA MEMORIA COMÚN!

18 wait(), notify(), notifyall() A > %"% 7 3 (synchronized). %% ;7 D%3 % %rendezvous % ; % %3 & > % Emisor Listo Canal Receptor Listo

19 , send (B, mensaje) Proceso A rendezvous Proceso B receive (A, mensaje) tiempo

20 & % 7;!@ run() & % & %% Canal de Salida public void run() { //codigo ejec. } Canal de Entrada

21 #- ", Process interfaz csp.lang.process (análoga a java.lang.runnable) public interface csp.lang.process{ public void run(); } Procesos de usuario implementan la interfaz: public class mi_proceso implements Process{ //dato locales al proceso public mi_proceso(channels y parametros){ //codigo del constructor } public void run() //sobreescritura de run {//código del proceso} }

22 ", # read >write % % #H7$3 # ; ;$ % H7 3

23 import csp.lang.*; import csp.lang.process.*; import csp.lang.integer.* class Producer implements Process{ ChannelOutput_of_Integer channel; Integer object; public Producer (ChannelOutput_of_Integer out){ channel = out; object = new Integer(); } public void run(){ object.value=100; channel.write(object); } }

24 import csp.lang.*; import csp.lang.process.*; import csp.lang.integer.* class Consumer implements Process{ ChannelInput_of_Integer channel; Integer object; public Consumer (ChannelInput_of_Integer out){ channel = in; object = new Integer(); } public void run(){ channel.read(object); System.out.println(object); } }

25 import csp.lang.*; import csp.lang.process; import csp.lang.integer; public class P_C_Main{ public static void main (String [] args){ Channel channel = new Channel(); Process modo = new Parallel(new Process[] new Producer(channel), new Consumer(channel)); modo.run(); }//main }// P_C_Main

26 # # ' %(Channel_of_Boolean)+read/write '>(Channel_of_Byte)+read/write "(Channel_of_Char)+read/write %(Channel_of_Double)+read/write +% (Channel_of_Float)+read/write (Channel_of_Integer)+read/write ) (Channel_of_Long)+read/write " (Channel_of_Short)+read/write 7(Channel_of_Reference)+read/write &(Channel_of_Object)+read/write (>(Channel_of_Any)+read/write

27 # Sequential (Process[] procesos) Parallel (Process[] procesos) PriParallel (Process[] procesos) Con guardas: Alternative PriAlternative

28 ./ 01 csp.io.linkdrivers.tcpip (ó UDP) % public TCPIP(remotehost, remoteport, TCPIP.tipo) REALTIME # ASYNCHRONOUS %%% %%

29 import csp.lang.*; import csp.lang.process; import csp.lang.integer; Import csp.io.lindrivers.tcpip; public class Prod{ public static void main (String [] args){ final Channel_of_Integer canal = new Channel_of_Integer new( TCPIP( sargo.uca.es, 1701, TCPIP.REALTIME)); Process par = new Parallel(new Process[] {new Producer(canal)}); par.run(); }//main }//Prod

30 import csp.lang.*; import csp.lang.process; import csp.lang.integer; Import csp.io.lindrivers.tcpip; public class Cons{ public static void main (String [] args){ final Channel_of_Integer canal = new Channel_of_Integer new TCPIP( ( delfin.uca.es, 1701, TCPIP.REALTIME)); Process par = new Parallel(new Process[] {new Consumer(canal)}); par.run(); }//main }//Cons!I+!(J

31 2 3 3 Mayor nivel de abstracción Llamadas a procedimiento local o remoto indistintamente Necesita de stubs/skeletons ( OCULTAMIENTO!) Registro del servicio En Unix: Biblioteca rpc.h Representación estándar XDR Automatización parcial: especificación-compilador rpcgen En Java: Objetos remotos. Serialización Paquete java.rmi Automatización parcial: interfaz-compilador rmic

32 % % % func() func(void) {//codigo. } '8 4 7%% C% % / % < KL % % MN 2 % % 2

33 7H% $ C '% B%%%% % & 7 %% A

34 B % % % + callrpc rpcreturn llamada normal return %% % RED H% % H%

35 ./ 1 7 % 7 C 77 %7; 7O37 rpcgen#pd$frmic#$

36 4 5 Especificación Formal Interface Cliente Ejecutable Precompilador rpcgen o rmic Servidor Ejecutable C O M P I L A R Resguardo Stub Cliente Ficheros compartidos Representación de datos Resguardo Skeleton Servidor C O M P I L A R

37 Especificación Formal Interface Generador de Resguardos Interfaz del servidor+asa create, read delete, write Res. Del Servidor Read(f,d) Res. Del Cliente CONECTOR SERVIDOR d CLIENTE Petición de asa del servidor Envío de asa

38 6 3 7%7;% 7" 7.x /*rand.x*/ program RAND_PROG{ version RAND_VER{ void inicia_aleatorio(long)=1; double obtener_aleat(void)=2; }=1; }=0x ; *C $rpcgen rand.x > %7" %CB% %;Q '% xdr.h

39 32 3 2$ Permite disponer de objetos distribuidos utilizando Java Un objeto distribuido se ejecuta en una JVM diferente o remota Objetivo: lograr una referencia al objeto remoto que permita utilizarlo como si el objeto se estuviera ejecutando sobre la JVM local Es similar a RPC, si bien el nivel de abstracción es más alto Se puede generalizar a otros lenguajes utilizando JNI RMI pasa los parámetros y valores de retorno utilizando serialización de objetos. Objeto Servidor Objeto Cliente JVM JVM

40 3 32 RPC Carácter y Estructura de diseño procedimental Es dependiente del lenguaje Utiliza la representación externa de datos XDR El uso de punteros requiere el manejo explícito de los mismos NO hay movilidad de código RMI Carácter y Estructura de diseño orientada a objetos Es dependiente del lenguaje Utiliza la serialización de objetos en Java El uso de referencias a objetos locales y remotos es automático El código es móvil, mediante el uso de bytecodes.

41 ' Un objeto remoto es aquél que se ejecuta en una JVM diferente, situada potencialmente en un host distinto. RMI es la acción de invocar a un método de la interfaz de un objeto remoto. //ejemplo de llamada a método local int dato; dato = Suma (x,y); //ejemplo de llamada a método remoto (no completo) IEjemploRMI1 ORemoto = (IEjemploRMI1)Naming.lookup( //sargo:2005/ejemplormi1 ); ORemoto.Suma(x,y);

42 7! 32 Cliente Stub Referencia Remota Transporte Servidor Skeleton Referencia Remota El servidor debe extender RemoteObject El servidor debe implementar una interfaz diseñada previamente El servidor debe tener como mínimo un constructor (nulo) que lanzará la excepción RemoteException El método main del servidor debe lanzar un gestor de seguridad El método main crea los objetos remotos El compilador de RMI (rmic) genera el stub y el skeleton. Los clientes de objetos remotos se comunican con interfaces remotas (diseñadas antes de ) Los objetos remotos son pasados por referencia Los clientes que llaman a métodos remotos deben manejar excepciones.

43 java.rmi.naming public static void bind(string name, Remote obj) public static String[] list(string name) public static Remote lookup(string name) public static void rebind(string name, Remote obj) public static void unbind(string name)

44 K % % N public interfaz extends Remote {signaturas métodos} implements resultado Cliente ref.metodo(param) Implementación de la interfaz new referencia a interfaz SERVIDOR 6 3" lookup " bind ó rebind

45 Definir Interfaz Remota implements Implementar Interfaz Remota $ rmic.class Skeleton Stub JVM JVM Implementar Servidor Implementar Cliente

46 87 9: 32 ;<6#387 Escribir el fichero de la interfaz remota. Debe ser public y extender a Remote. Declara todos los métodos que el servidor remoto ofrece, pero NO los implementa. Se indica nombre, parámetros y tipo de retorno. Todos los métodos de la interfaz remota lanzan obligatoriamente la excepción RemoteException El propósito de la interface es ocultar la implementación de los aspectos relativos a los métodos remotos. De esta forma, cuando el cliente logra una referencia a un objeto remoto, en realidad obtiene una referencia a una interfaz. Los clientes envían sus mensaje a los métodos de la interfaz

47 2: 8&3: 6#387= /**Ejemplo del interfaz remoto para implementar un RMI Antonio Tomeu *Es un servidor remoto aritmético. */ //se importan las clases del paquete rmi import java.rmi.*; //toda interface remota debe extender la clase Remote public interface IEjemploRMI1 extends Remote { //todo metodo de la interfaz remota debe lanzrar la //excepcion RemoteException int Suma(int x, int y) throws RemoteException; int Resta(int x, int y) throws RemoteException; int Producto(int x, int y) throws RemoteException; float Cociente(int x, int y) throws RemoteException; }

48 87 9: 32 )<226#7>6 La implementación del servidor es un fichero que realiza la implementación de la interfaz definida previamente. El servidor debe contener una clase que extienda a UnicasRemoteObject. Esa misma clase debe implementar a la interfaz remota (implements) Debe tener un constructor que lance RemoteException. El método main debe lanzar un gestor de seguridad. El método main debe crear los objetos remotos deseados. El método main debe registrar al menos unos de los objetos remotos.

49 2: 226#7>6 6#387= / 3?:3 /**Ejemplo de implementacion del interfaz remoto para un RMI Antonio Tomeu */ //se importan los paquetes necesarios import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; import java.net.*; //el servidor debe siempre extender a UnicastRemoteObject //el servidor debe simpre implementar la interfaz remota public class EjemploRMI1 extends UnicastRemoteObject implements IEjemploRMI1 {

50 //aquí viene la implementación de los métodos que se //declararon en la interfaz public int Suma(int x, int y) throws RemoteException {return x+y;} public int Resta(int x, int y) throws RemoteException {return x-y;} public int Producto(int x, int y) throws RemoteException {return x*y;} public float Cociente(int x, int y) throws RemoteException { if(y == 0) return 1; else return x/y; } //a continuacion viene el codigo del servidor. Hemos optado //por incluirlo de manera conjunta, pero podia haber ido en //un fichero aparte.

51 //es necesario que haya un constructor (nulo) como minimo, ya //que debe lanzar RemoteException public EjemploRMI1() throws RemoteException {//super();} //el metodo main siguiente realiza el registro del servicio public static void main(string[] args) throws Exception { //crea e instala un gestor de seguridad que soporte RMI. //el usado es distribuido con JDK. Otros son posibles. System.setSecurityManager( new RMISecurityManager()); //Se crea el objeto remoto. Podriamos crear mas si interesa. EjemploRMI1 ORemoto = new EjemploRMI1(); //Se registra el objeto en la máquina remota. No hay que dar //nombre de host, y se asume el puerto Naming.bind( Servidor",ORemoto); System.out.println("Servidor Remoto Preparado"); } }

52 87 9: 4 #A / B#:6 Fichero de implementación de Interfaz compilado (Imp.class) Compilador de RMI $ rmic imp Fichero de stub (Imp_Stub.class) Fichero de skeleton (Imp_Skel.class) $ rmic EjemploRMI1 Es necesario que en la máquina remota donde se aloje el servidor se sitúen también los ficheros de stub y skeleton. Con todo ello disponible, se lanza el servidor llamando a JVM del host remoto. En nuestro caso, el servidor remoto se activó en hercules.uca.es sobre el puerto $ java EjemploRMI1 &

53 87 9: 32 Naming.bind( Servidor",ORemoto); para registrar el objeto remoto creado requiere que el servidor de nombres esté activo. El nombre de ese servidor es rmiregistry Dicho servidor se activa con start rmiregistry en Win32 Dicho servidor se activa con rmiregistry & en Unix. Se puede indicar como parámetro adicional el puerto que escucha. Si no se indica, por defecto es el puerto El parámetro puede ser el nombre de un host como en Naming.bind( //sargo.uca.es:2005/servidor",oremoto);

54 87 9: 32 D<6# El objeto cliente procede siempre creando un objeto de interfaz remota. Posteriormente efectúa una llamada al método Naming.lookup cuyo parámetro es el nombre y puerto del host remoto junto con el nombre del servidor. Naming.lookup devuelve una referencia que se convierte a una referencia a la interfaz remota. A partir de aquí, a través de esa referencia el programador puede invocar todos los métodos de esa interfaz remota como si fueran referencias a objetos en la JVM local.

55 2: 6# /**Ejemplo de implementacion de un cliente para RMI Antonio Tomeu */ import java.rmi.*; import java.rmi.registry.*; public class ClienteEjemploRMI1 { public static void main(string[] args) throws Exception { int a = 10; int b = -10; //Se obtiene una referencia a la interfaz del objeto remoto //SIEMPRE debe convertirse el retorno del metodo Naming.lookup //a un objeto de interfaz remoto IEjemploRMI1 RefObRemoto = (IEjemploRMI1)Naming.lookup("//hercules.uca.es/Servidor"); //Llamamos a los metodos del interfaz remoto. System.out.println(RefObRemoto.Suma(a,b)); System.out.println(RefObRemoto.Resta(a,b)); System.out.println(RefObRemoto.Producto(a,b)); System.out.println(RefObRemoto.Cociente(a,b)); } }

56 ", Serializable %; & % 1 % & % H% & %&! %; & %& %%7; Serializable #7%$ %;

57 , import java.io.*; import java.util.*; public class cuentabanca implements Serializable { int ccc; float saldo; String Titular; public cuentabanca(int codigo, float deposito, String nombre) {ccc = codigo; saldo = deposito; Titular = nombre;} public String tostring() {return("codigo = "+ccc+" saldo= "+saldo+" titular= "+Titular);} }

58 ", import java.io.*; import java.rmi.*; public interface intefaz extends Remote { boolean deposito(int codigo, float cantidad) throws RemoteException; boolean reintegro(int codigo, float cantidad) throws RemoteException; String nomtit(int codigo) throws RemoteException; } int codtit(string nom) throws RemoteException; /aquí la serializacion es necesaria*/ cuentabanca [] listado() throws RemoteException;

59 4 - policytool % System.setSecurityManager(new RMISecurityManager()); &% > & SecurityManager )% %@ setsecuritymanager (clase System) %RMISecurityManager &%%% Policy Policy.getPolicy() %% Policy.setPolicy() 7& %3 7" 37 / "%policytool

60 (&% %3 % %> %&% 7".policy /* AUTOMATICALLY GENERATED ON Fri May 28 19:23:13 CEST 2004*/ /* DO NOT EDIT */ grant { permission java.net.socketpermission "*: ", "connect,accept, listen, accept, connect, listen, resolve"; permission java.net.socketpermission "*:80", "connect, accept"; permission java.security.allpermission; }; (% && % %3 Java Djava.security=fichero.policy servidor cliente & RMISecurityManager >& SetSecurityManager % &

61 2 : Microsoft DCOM Utiliza DCE RPC Está orientado a un solo sistema operativo Sin acuerdo Jini de Sun Basado en RMI de Java Muy ligado al lenguaje Java En sistemas empotrados CORBA de OMG Independiente del lenguaje Marco arquitectónico común EJB

62 :37 : 3! 7$ ES una tecnología de integración Resuelve RPC con independencia del lenguaje. Se puede hacer RPC a métodos remotos de objetos Java y no-java No es necesario conocer la ubicación física del objeto servidor Marco de interacción entre objetos distribuidos estándar e independiente del lenguaje Especificación de objetos remotos común a todos los lenguajes a través de IDL Desarrollado por el OMG (produce especificaciones, no productos)

63 Elementos de CORBA OMA (Object Management Architecture): es la especificación de la interoperabilidad entre objetos Core Object Model (Core Object Model): establece los concepto básicos sobre un objeto, interfaz, operación. OMA Reference Architecture: define la infraestructura de servicios y los mecanismos subyacentes que permiten la interacción entre objetos. ORB (Object Request Broker): es el canal de comunicación a través del cual los objetos se solicitan servicios con independencia de la ubicación física. Existen varias?( implementaciones. (JavaIDL) >

64 Todos los elementos de CORBA son objetos Cada objeto tiene una interfaz e identidad únicos Cada objeto se puede implementar en un lenguaje distinto y ejecutarse sobre cualquier HW y SO CORBA define el bus software que permite la interoperabilidad entre esta diversidad de objetos

65 Modelo de Referencia OMA No estandarizados Por OMG APPLICATION INTERFACES Bussines Healthcare Finance Telecom DOMAIN INTERFACES Compound Object Linking Help MOF COMMON FACILITIES OBJECT REQUEST BROKER Naming Persistence Transactions Concurrency SERVICIOS A OBJETOS Security Time Properties Externalization

66 Cliente Implementación del objeto ORB

67 Estructura del ORB

68 Invocación Estática Cliente rebobjeto.metodo(param) metodo(param) Servidor IDL Stub marshalling unmarshalling IDL Skeleton Object Adapter ORB Core Interface dependiente del ORB Stub para cada tipo de objeto

69 Lenguaje de Definición de Interfaces (IDL) Es un lenguaje de definición de interfaces orientado a objetos Especificación común a todos los lenguajes de una interfaz (métodos y atributos) de objeto Construye una representación del objeto distribuido común a cliente y servidor Soporta herencia Sintaxis parecida a Java y C++ Precompila (map) a C, C++, Java, Ada, etc. Ver:

70 JavaIDL Tecnología que integra CORBA en el lenguaje Java En java, $idltojava fichero.idl A partir de J2SE v1.4 es $idlj Genera el stub del cliente y el skeleton del servidor (con -fall)+otros ficheros Ambos automatizan las siguientes tareas (junto con el ORB): Ordenamiento y serialización de parámetros (marshalling) Generan la implementación de la clase de interfaz Registro y activación de objetos Localización y conexión (binding) a objetos

71 Herramientas JavaIDL idlj: compilador de IDL a Java orbd: proceso demonio que contiene: Boostrap Service Servicio de Nombres Transitorios. Servicio de Nombres Persistentes. Un Gestor de Servidores servertool:permite a los programadores de aplicaciones registrar, dar de baja, arrancar y parar servidores tnameserv:servicio de Nombres Transitorio en versiones previas de JavaIDL. Se incluye por compatibilidad hacia atrás.

72 API JavaIDL Básica org.omg.corba org.omg.cosnaming org.omg.portableserver org.omg.corba.orb org.omg.portableinterceptor org.omg.dynamicany

73 Compilando IDL Interfaz IDL Stubs Cliente -fclient Aplicación Cliente Compilador de IDL ($idltojava) ($idlj) en J2SE -fserver -fall Skeletons Servidor Aplicación Servidor -fserver A partir de J2SE v1.4 POA Servidor Implemen. Servidor

74 Portable Object Adapter (POA) El adaptador de objetos conecta una solicitud de cliente al código que le da servicio (servant) utilizando una referencia a objeto. Java2SE da soporte POA a través del API correspondiente POA establece el nexo entre un objeto CORBA y su implementación (servant) Establece la correspondencia entre peticiones de entrada y las diferentes instancias de un mismo objeto. POA define un espacio de nombres para los servants Un POA puede tener varios servants Un servant solo pertenece a un POA Un servidor puede tener varios POAs activos Al menos existe el POA raíz Las relaciones entre un POA y sus servants vienes descritas por las políticas del POA POA es un tipo de OA particular, definido en la especificación CORBA, para lograr: Implementaciones de objetos portables entre diferentes ORB Soporte a objetos de identidad persistente Soporte a la activación transparente de objetos Servant que soporte identidades simultáneas.

75 Servants POA POA Manager ORB

76 El Servicio de Nombres El servicio nombre guarda pares <nombre, referencia a objeto> Los nombres están organizados jerárquicamente (tree-type) en un S.N. Servidor, crea un servant y lo registra en SN asociando (bind) una referencia a objeto con un nombre Cliente pide al SN que a partir de un nombre le dé (resolve) una referencia a objeto CORBA En JavaIDL el SN se activa ejecutando tnameserv. Por defecto, escucha al puerto 900 No es persistente y está derogado A partir de J2SE 1.4 orbd proporciona persistencia si se desea

77 Servidor resolve(a) Cliente x bind(x, ref) Jeraquía de Nombres ref x NamingContext ncref = NamingContext ncref = NamingContextHelper.narrow(refObj); NamingContextHelper.narrow(refObj); NameComponent nc = new NameComponent nc = new NameComponent("Impresor Remoto", NameComponent("Impresor Remoto", ""); ""); NameComponent [] ruta ={nc}; NameComponent [] ruta = { nc }; HolaMundoDistribuido ObjImpresor = ncref.rebind(ruta, IRem); HolaMundoDistribuidoHelper.narrow(ncR ef.resolve(ruta));

78 Interacción Cliente/Servidor-Servicio de Nombres '

79 Hola Mundo Distribuido Con CORBA 1 Especificación IDL de la Interfaz Remota /**Ejemplo de fichero de especificacion IDL Antonio Tomeu *Es una especificacion de un objeto servidor remoto que recibe como parametro *una cadena de caracteres y la imprime en la salida estandar del servidor * */ interface HolaMundoDistribuido { void Imprimir (in string mensaje); }; 1 Utilizando el servicio de nombres no persistente tnameserv ya derogado. Se explica por compatiblidad hacia atrás.

80 Hola Mundo Distribuido Con CORBA Servidor /**Ejemplo de fichero que implanta un servidor via CORBA Antonio Tomeu */ //CosNaming contiene aspectos relacionados con el servicio de nombre de JavaIDL import org.omg.cosnaming.*; import org.omg.cosnaming.namingcontextpackage.*; import org.omg.corba.*; //Implementación del objeto servidor remoto. Es el codigo del futuro servant //Debe extender siempre al skeleton generado con el compilador idlj class ImpresorRemoto extends _HolaMundoDistribuidoImplBase { public void Imprimir(String mensaje) {System.out.println(mensaje);} } //Ahora se implementa la aplicación remota, que realiza las siguientes tareas: //(1) Crea e inicializa el ORB //(2) Crea un objeto servidor remoto (servant) //(3) Lo registra en el ORB //(4) Lo registra en el servidor de nombre //(5) Queda a la espera de solicitudes del cliente

81 public class ServidorRemoto { public static void main(string[] args) throws Exception { //se crea e inicializa el ORB El identificador orb es una referencia al //ORB creado. Utilizamos el ORB propocionado con la distribución JavaIDL //aunque otros son posibles. ORB orb = ORB.init(args, null); //crea un objeto servidor. Por ahora es un objeto java ImpresorRemoto IRem = new ImpresorRemoto (); //Se produce el registro de este objeto java en el servicio de nombres //una vez concluida, es un objeto CORBA (servant) orb.connect(irem); org.omg.corba.object refobj= orb.resolve_initial_references ("NameService"); //La referencia a tal servicio debe convertirse a una referencia a //objetos NamingContext. NamingContext ncref = NamingContextHelper.narrow(refObj); //Ahora damos un nombre que sera el utilizado por los clientes para //enviar solicitudes al objeto servidor NameComponent nc = new NameComponent("Impresor Remoto", ""); NameComponent [] ruta = { nc }; //Se vincula la referencia pasada a String con la referencia a objeto ncref.rebind(ruta, IRem); //Se esperan peticiones de clientes. java.lang.object sinc = new java.lang.object(); synchronized (sinc) {sinc.wait();} } }

82 Hola Mundo Distribuido Con CORBA Cliente /**Ejemplo de fichero que implanta un servidor via CORBA Antonio Tomeu */ import org.omg.cosnaming.*; import org.omg.corba.*; public class ClienteHolaMundoDistribuido { public static void main(string[] args) throws Exception { //Se crea el ORB del cliente. Se utiliza el proporcionado con JavaIDL. //Otros son posibles. ORB orb = ORB.init(args, null); org.omg.corba.object refobj = orb.resolve_initial_references ("NameService"); NamingContext ncref = NamingContextHelper.narrow(refObj); //Se le pide al Servicio de Nombres que resuelva la referencia para el //servidor. NameComponent nc = new NameComponent("Impresor Remoto", ""); NameComponent [] ruta = { nc }; HolaMundoDistribuido ObjImpresor = HolaMundoDistribuidoHelper.narrow(ncRef.resolve(ruta)); ObjImpresor.Imprimir("Hola Mundoooooooooooooo"); } }

83 Hola Mundo Distribuido Con CORBA Ejecutando el Servicio de Nombres

84 Hola Mundo Distribuido Con CORBA 2 Especificación IDL 2 Utilizando el servicio de nombres persistente orbd. Es el estándar de Java IDL a partir de J2SE y versiones del jdk 1.4 o superiores.

TEMA 7: Paso de Mensajes con RMI

TEMA 7: Paso de Mensajes con RMI CONTENIDO: TEMA 7: Paso de Mensajes con RMI Conceptos de Programación Distribuida Remote Method Invocation (RMI) en Java El Nivel de Resguardos La Responsable de que Todo Funcione: la interfaz El precompilador

Más detalles

1. Visión general de RMI

1. Visión general de RMI 1. Visión general de RMI Java RMI permite al programador ejecutar métodos de objetos remotos utilizando la misma semántica que si fueran invocaciones locales (Véase Figura 1). Máquina Local (Cliente) Máquina

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2 Tema 9 Llamada a métodos remotos (RMI). Departament d Informàtica. Índice 1. Introducción 2 1.1. Cómo funciona RMI?.......................................... 2 2. Usando RMI 4 2.1. Fase de desarrollo:

Más detalles

Práctica 5: Common Object Request Broker Architecture CORBA

Práctica 5: Common Object Request Broker Architecture CORBA Práctica 5: Common Object Request Broker Architecture CORBA Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es entender mejor el funcionamiento de CORBA (Common Object Request Broker

Más detalles

RMI [Remote Method Invocation]

RMI [Remote Method Invocation] RMI [Remote Method Invocation] Cuando utilizamos sockets, hemos de preocuparnos de cómo se transmiten físicamente los datos entre los extremos de una conexión (a nivel de bytes, ya que usamos los streams

Más detalles

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina Máquina A Máquina B Máquina C Lo ideal sería tener un sistema distribuido orientado a objetos que permita: 1)Invocar un método de un objeto que se localiza en otra máquina exactamente de la misma manera

Más detalles

JAVA RMI (REMOTE METHOD INVOCATION)

JAVA RMI (REMOTE METHOD INVOCATION) JAVA RMI (REMOTE METHOD INVOCATION) RMI RMI (Remote Method Invocation) Mecanismo RPC de Mecanismo mediante el cual los procesos cliente y servidor en una aplicación distribuida se comunican Una aplicación

Más detalles

Puertos (Breve repaso) No existe memoria común Comunicaciones No existe un estado global del sistema Grado de Transparencia Escalables Reconfigurables

Puertos (Breve repaso) No existe memoria común Comunicaciones No existe un estado global del sistema Grado de Transparencia Escalables Reconfigurables CNTENID: TEMA 7: aso de Mensajes con MI Conceptos de rogramación n Distribuida Conceptos de rogramación Distribuida emote Method Invocation (MI) en Java El Nivel de esguardos La esponsable de que Todo

Más detalles

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos Invocación de Métodos Remotos RMI: Remote Method Invocation Prof Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos

Más detalles

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java Java RMI Remote Method Invocation Invocación Remota de Métodos en Java Contenido Introducción Implementación Diseño de la interfaz remota. Implementación de la interfaz remota. Obtención de las clases

Más detalles

JAVA - Serializacíon / RMI. (C) Philippe Roose - 2004, 2005

JAVA - Serializacíon / RMI. (C) Philippe Roose - 2004, 2005 JAVA - Serializacíon / RMI (C) Philippe Roose - 2004, 2005 Serializar objetos- concepto Desde el JDK 1.1 Serializar objetos permite de escribir un objeto en un fichero como un flujo de octets (archivo

Más detalles

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Java RMI. Sistemas Distribuidos Rodrigo Santamaría + Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en

Más detalles

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA José Luis Pastrana Brincones (pastrana@lcc.uma.es) Dpto. Lenguajes y Ciencias de la Computación. Universidad de Málaga

Más detalles

Remote Method Invocation (RMI) de Java

Remote Method Invocation (RMI) de Java Remote Method Invocation (RMI) de Java Concurrencia y Distribución Programación Avanzada Posgrado en Ciencia e Ingeniería de la Computación, UNAM 1. Introducción El mecanismo RMI (Remote Method Invocation)

Más detalles

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción CORBA desde Java Diego Sevilla Ruiz Sistemas Distribuidos Índice 1. Introducción 1 2. Primeros pasos 1 2.1. Fichero IDL................................... 1 2.2. Cliente......................................

Más detalles

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs CONTENIDO RMI AVANZADO Carga dinamica de stubs Callbacks Carga dinámica de Stubs Para tener acceso a un objeto remoto mediante RMI, el cliente debe recibir un stub serializado y deserializarlo. El stub

Más detalles

Práctica 2: Java Remote Method Invocation (RMI)

Práctica 2: Java Remote Method Invocation (RMI) Práctica 2: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es conocer un poco más sobre el paradigma de objetos remotos. La idea principal es

Más detalles

Ingeniería del Software Arquitectura Física en 3 niveles

Ingeniería del Software Arquitectura Física en 3 niveles Introducción En este laboratorio desplegaremos en 3 niveles físicos una aplicación que verifica si una cuenta y un password son correctos, basada en la que fue presentada en el laboratorio Separación entre

Más detalles

Tema 1. Introducción a JAVA

Tema 1. Introducción a JAVA Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems

Más detalles

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI Héctor Pérez 2 MobileTracker: Especificación El computador de la torre de control ejecuta el servicio Follower que registra los

Más detalles

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid las RPC de Java. Parte I Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid de marzo de 006 RMI y RPC RPC: Remote Procedure Call. RMI y RPC RPC: Remote Procedure Call.

Más detalles

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V Bibliografía Tema V Tecnología de objetos distribuidos y arquitectura de componentes. Szyperski, C. 1998. Component Software. Addison-Wesley. Ruiz Cortés, 1998. A. CORBA: Una visión general. http://www.lsi.us.es/~aruiz

Más detalles

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Contenido Interfaz Implementación Servidor Cliente Puesta en marcha de la aplicación: Compilador

Más detalles

Práctica 4: Java Remote Method Invocation (RMI)

Práctica 4: Java Remote Method Invocation (RMI) Práctica 4: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción Hasta el momento hemos visto aplicaciones remotas donde un cliente utiliza un objeto remoto que ha sido publicado

Más detalles

Interacción entre Aplicaciones: objetos distribuidos e invocación remota

Interacción entre Aplicaciones: objetos distribuidos e invocación remota Interacción entre Aplicaciones: objetos distribuidos e invocación remota En la anterior práctica se ha visto cómo extender la funcionalidad de un servidor web incorporando servlets que atienden peticiones

Más detalles

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría + Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión

Más detalles

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET 3.1- ARQUITECTURA DE COMPONENTES GIS La presente tesis trata del diseño y desarrollo de una aplicación basado en el Web para servir datos geográficos

Más detalles

TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA

TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA II. Objetos distribuidos y CORBA 1. Objetos Distribuidos 2. CORBA 1. Características 2. Modelo de trabajo 3. ORB 4. Arquitectura

Más detalles

OMG - CORBA. Object Management Group. Common Object Request Broker (CORBA) http://www.omg.org. http://www.corba.org

OMG - CORBA. Object Management Group. Common Object Request Broker (CORBA) http://www.omg.org. http://www.corba.org OMG - CORBA Object Management Group http://www.omg.org Common Object Request Broker (CORBA) http://www.corba.org OMG - CORBA Objetivo OMG proveer un marco de arquitectura común n para aplicaciones orientadas

Más detalles

servicios. El API es definido al nivel de código fuente y proporciona el nivel de

servicios. El API es definido al nivel de código fuente y proporciona el nivel de GLOSARIO API Application Program -ming- Interface Es la interfaz por la cual una aplicación accede al sistema operativo u a otros servicios. El API es definido al nivel de código fuente y proporciona el

Más detalles

Tema 3. Objetos distribuidos

Tema 3. Objetos distribuidos Tema 3. Objetos distribuidos SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs octubre 2008 FJRP, FMBR 2008/09 ccia SCS 3.1 Modelo de objetos distribuidos Objetivo: Extender

Más detalles

Sistemas Distribuidos (Capítulo 8 de Distributed Computing de M. L. Liu)

Sistemas Distribuidos (Capítulo 8 de Distributed Computing de M. L. Liu) Devoluciones de llamada en RMI (Callbacks) Sistemas Distribuidos (Capítulo 8 de Distributed Computing de M. L. Liu) Devolución de llamadas, introducción Cliente-servidor clásico servidorpasivo Tipo pull.

Más detalles

CORBA con Java IDL. Francisco Charte Ojeda ! " !# $ "$ % &'(!!! ) % #* %! " +,',' $! '(! $ - # " "! " '( %!.%# %%! +#! '(!! $!!#

CORBA con Java IDL. Francisco Charte Ojeda !  !# $ $ % &'(!!! ) % #* %!  +,',' $! '(! $ - #  !  '( %!.%# %%! +#! '(!! $!!# CORBA con Java IDL Francisco Charte Ojeda Sumario " Introducción # $ "$ % &'( ) % #* % " +,',' $ '( $ - # " " " '( %.%# %% +# '( $ # + $ '( '( ) " / % $ $ "'( El compilador idltojava ). * + #)$ '(". #)00"&'(

Más detalles

Introducción Descripción del servicio

Introducción Descripción del servicio 507953 1 Contenido Contenido Cambios Introducción Descripción del servicio Introducción Arquitectura Paso a paso Capa de negocio Adapter Interface Service Proxy Fichero de propiedades Despliegue del servicio

Más detalles

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida } REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets Uso de Sockets Este pequeño manual, le muestra cómo funciona el Socket Server para crear un pequeño servidor web que envía una página HTML a cualquier Navegador Web como Firefox, Internet Explorer, etc..

Más detalles

FSD Práctica Invocación Remota: JavaRMI. Estudio Previo. Información

FSD Práctica Invocación Remota: JavaRMI. Estudio Previo. Información FSD Práctica Invocación Remota: JavaRMI Tipo de entrega: por grupos de prácticas Fecha límite: sesión de laboratorio Lugar: Campus Digital Comentario: No hay que entregar el estudio previo Objetivo de

Más detalles

Lección 8 Introducción a las llamadas a procedimientos remotos (RPC) Universidad de Oviedo / Dpto. de Informática

Lección 8 Introducción a las llamadas a procedimientos remotos (RPC) Universidad de Oviedo / Dpto. de Informática Lección 8 Introducción a las llamadas a procedimientos remotos (RPC) Objetivo Extender a los sistemas distribuidos el mecanismo de llamadas a procedimientos y subrutinas de los lenguajes de programación.

Más detalles

2.1. Introducción al lenguaje Java

2.1. Introducción al lenguaje Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

PROGRAMACION DISTRIBUIDA

PROGRAMACION DISTRIBUIDA PROGRAMACION DISTRIBUIDA Distribución basada en el patrón proxy-servant Héctor Pérez 2 Distribución de aplicaciones basadas en objetos Objetivo: rediseño de una aplicación orientada a objetos para ser

Más detalles

Manual del Protocolo XML-RPC de Mensajería Negocios

Manual del Protocolo XML-RPC de Mensajería Negocios Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...

Más detalles

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría Generalidades Desarrollado por Sun Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas

Más detalles

CORBA. Carpe Diem Quam Minimum Credula Postero. Manual de CORBA (Common Object Request Broker Architecture)

CORBA. Carpe Diem Quam Minimum Credula Postero. Manual de CORBA (Common Object Request Broker Architecture) Manual de CORBA (Common Object Request Broker Architecture) La arquitectura común de intermediarios en peticiones a objetos (CORBA) es una arquitectura de comunicaciones entre sistemas heterogéneos que

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS Sesión 5: Tema 8: Objetos Distribuidos e Invocación Remota. Java RMI SISTEMAS DISTRIBUIDOS GRADO EN INGENIERÍA INFORMÁTICA UNED Introducción Índice (1/2) Modelos de programación de aplicaciones distribuidas.

Más detalles

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI 5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI Contenidos Tutorial de Java RMI Caso de estudio: diseño e implementación de la capa modelo de MiniBank con Java RMI Arquitectura

Más detalles

Java RMI. Sistemas distribuidos

Java RMI. Sistemas distribuidos Java RMI Sistemas distribuidos Entornos orientados a objetos Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí. Un programa solicita servicios invocando los

Más detalles

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Introducción a Java LSUB. 15 de enero de 2015 GSYC Introducción a LSUB GSYC 15 de enero de 2015 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada

Más detalles

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA Qué es la arquitectura cliente servidor? La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten

Más detalles

INF 473 Desarrollo de Aplicaciones en

INF 473 Desarrollo de Aplicaciones en INF 473 Desarrollo de Aplicaciones en Java Unidad II El Lenguaje de Programación Java Prof. José Miguel Rubio jose.rubio.l@ucv.cl jrubio@inf.ucv.cl PUCV Marzo 2008 1 Orígenes del Lenguaje Java 1991. James

Más detalles

SISTEMAS DISTRIBUIDOS DE REDES 3.- ESTANDAR CORBA. 3.1. Características

SISTEMAS DISTRIBUIDOS DE REDES 3.- ESTANDAR CORBA. 3.1. Características SISTEMAS DISTRIBUIDOS DE REDES 3.- ESTANDAR CORBA 3.1. Características La tendencia hacia el futuro es el de lograr la integración total de componentes realizados por terceras partes, para lo cual es necesario

Más detalles

Federico Peinado www.federicopeinado.es

Federico Peinado www.federicopeinado.es Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

El lenguaje de programación Java

El lenguaje de programación Java Departament d Arquitectura de Computadors El lenguaje de programación Java Java (I) Orientado a objetos Ejecutado por una maquina virtual Independiente de la plataforma Multithreaded Orientado a la red

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor Creación de Sockets Cliente/Servidor Sockets en TCP Sockets en UDP Definición de DAEMON Concepto de Hilos Qué es un socket? Un socket

Más detalles

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes.

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes. SISTEMAS DISTRIBUIDOS DE REDES 2.- MODELOS ORIENTADOS A OBJETOS DISTRIBUIDOS 2.1. Tecnologías de sistemas distribuidos Para la implementación de sistemas distribuidos se requiere de tener bien identificados

Más detalles

5.1 Introducción a Servicios Web

5.1 Introducción a Servicios Web 5.1 Introducción a Servicios Web Introducción Continuando con el ejemplo de intercambio de información de películas... => Actualmente ya no es necesario implementar la solución sugerida a mano Se han estandarizado

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta. Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO LAEFF - INTA raul@laeff.inta.es Qué es Java? Java es un lenguaje de programación orientado a objetos desarrollado por Sun

Más detalles

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

Lab 01: Programación de Sockets en TCP

Lab 01: Programación de Sockets en TCP UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO Departamento Académico de Informática REDES Y TELECOMUNICACIONES 2 Lab 01: Programación de Sockets en TCP Ingº Manuel Peñaloza Figueroa Dime y lo olvidaré.

Más detalles

PROGRAMACION DISTRIBUIDA

PROGRAMACION DISTRIBUIDA PROGRAMACION DISTRIBUIDA Ejemplo de uso de estrategias de diseño con RMI Héctor Pérez 2 Ejemplo de callback: SwiftEagle shot() setdirection() Target nearnessreport(target,observer) signal? explode() SwiftEagle

Más detalles

Web Services en Java. Taller de Programación. Instituto de Computación Facultad de Ingeniería Universidad de la República

Web Services en Java. Taller de Programación. Instituto de Computación Facultad de Ingeniería Universidad de la República Web Services en Java Taller de Programación Instituto de Computación Facultad de Ingeniería Universidad de la República Contenido Motivación y Conceptos Funcionamiento Annotations Desarrollando una aplicación

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Práctica sobre compartición de instancias remotas.

Práctica sobre compartición de instancias remotas. Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta

Más detalles

Práctica 5: Callbacks RMI.

Práctica 5: Callbacks RMI. Práctica 5: Callbacks RMI. Ejercicio 1. (Será realizado en la Sala de Computo) El siguiente ejercicio describe los pasos a seguir para aplicar el mecanismo Callback con Java RMI. En este ejercicio se requiere

Más detalles

3.9 Patrón Distributed callback

3.9 Patrón Distributed callback 3.9 Patrón Distributed callback Motivación (1) Queremos que la aplicación de administración de los termostatos Monitorize la temperatura de algunos termostatos, avisándonos si ésta baja o sube por encima

Más detalles

1.- FUNDAMENTOS...2 2.- FUNCIONAMIENTO GENÉRICO...3 3.- JAVA SOCKETS... 4. 3.4.1.- Creación de Streams de Entrada...7

1.- FUNDAMENTOS...2 2.- FUNCIONAMIENTO GENÉRICO...3 3.- JAVA SOCKETS... 4. 3.4.1.- Creación de Streams de Entrada...7 1.- FUNDAMENTOS...2 2.- FUNCIONAMIENTO GENÉRICO...3 3.- JAVA SOCKETS... 4 3.1.- INTRODUCCION... 4 3.2.- MODELO DE COMUNICACIONES CON JAVA...5 3.3.- APERTURA DE SOCKETS... 6 3.4.- CREACIÓN DE STREAMS...

Más detalles

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1. Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;

Más detalles

Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru.

Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru. Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru. 1 Paradigmas de desarrollo Desarrollo basado en protocolos Se diseña el protocolo Se elaboran los módulos para manejo

Más detalles

SISTEMAS DISTRIBUIDOS Profesor: José Luis Montoya Restrepo

SISTEMAS DISTRIBUIDOS Profesor: José Luis Montoya Restrepo SISTEMAS DISTRIBUIDOS Profesor: José Luis Montoya Restrepo AGENDA El modelo Cliente Servidor. Introducción a RMI Practica Cliente Servidor utilizando RMI. Modelo Cliente Servidor El modelo Cliente Servidor

Más detalles

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA Sockets para servidor Daniel Díaz Sánchez Florina Almenárez Andrés Marín Departamento de Ingeniería Telemática Universidad Carlos

Más detalles

INTRODUCCIÓN A JAVA. Índice

INTRODUCCIÓN A JAVA. Índice INTRODUCCIÓN A JAVA Índice Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador? Bibliografía 2 1 Qué es Java? La tecnología Java

Más detalles

Introducción al lenguaje Java

Introducción al lenguaje Java Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno

Más detalles

Red LSUB. 4 de marzo de 2015 GSYC

Red LSUB. 4 de marzo de 2015 GSYC Red LSUB GSYC 4 de marzo de 2015 (cc) 2015 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada

Más detalles

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la Servicios web Introducción Un servicio web es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes

Más detalles

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

TELEPROCESO Y SISTEMAS DISTRIBUIDOS Universidad Nacional del Nordeste TELEPROCESO Y SISTEMAS DISTRIBUIDOS La Interfaz Socket Lic. Vanesa S. Roffé Año 2009 Introducción - Origen de la INTERFAZ SOCKET La Interfaz Socket es una API para redes

Más detalles

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA SOCKETS EN JAVA Los sockets son puntos finales de enlaces de comunicaciones entre procesos. Los procesos los tratan como descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

Más detalles

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Que deseamos hacer con objetos remotos Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru. Cliente Result = Obj.method1(val1) Servidor Def Obj { int method1(int v) { string

Más detalles

Práctica 5: Servidor web concurrente en Java

Práctica 5: Servidor web concurrente en Java Práctica 5: Servidor web concurrente en Java Esta práctica pretende familiarizar al alumno con la programación de servidores que emplean sockets TCP. Para ello partiremos del servidor web básico visto

Más detalles

Cliente/Servidor en Java

Cliente/Servidor en Java Cliente/Servidor en Java Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid Contenidos 1. Introducción: 1. Paradigma cliente/servidor 2. Entorno

Más detalles

Capítulo 1. Componentes de CORBA.

Capítulo 1. Componentes de CORBA. Capítulo 1. Componentes de CORBA. La OMA (Object Management Architecture) define en alto nivel de abstracción las reglas necesarias para la distribución de la computación orientada a objetos (OO) en entornos

Más detalles

Seminario de Java. Contenido

Seminario de Java. Contenido Seminario de Java Programación Orientada a Objetos Curso 2006/2007 Contenido 1. Introducción 2. Primeros pasos con Java. El entorno Eclipse 3. La sintaxis del lenguaje Java 4. Clases y objetos 5. Cadenas

Más detalles

El sueño de todo sistema distribuido

El sueño de todo sistema distribuido Cómputo Distribuido Mediante RMI (Remote Method Invocation) ) Modelo de objetos Modelo de objetos en sistemas distribuidos El sueño de todo sistema distribuido Máquina A Máquina B Máquina C Lo ideal sería

Más detalles

Uso de excepciones en Java

Uso de excepciones en Java Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que

Más detalles

JAVA RMI: ESTRUCTURA INTERNA RMI

JAVA RMI: ESTRUCTURA INTERNA RMI Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas Desarrollo de Aplicaciones Distribuidas AUTORES: Alejandro Calderón Mateos Javier García Blas David Expósito Singh Laura Prada Camacho Departamento

Más detalles

Invocación de métodos remotos en Java: JAVA - RMI

Invocación de métodos remotos en Java: JAVA - RMI Diseño Y Aplicaciones de Sistemas Distribuidos Invocación de métodos remotos en Java: JAVA - RMI Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València

Más detalles

COMUNICACIÓN ENTRE PROCESOS SOCKETS

COMUNICACIÓN ENTRE PROCESOS SOCKETS COMUNICACIÓN ENTRE PROCESOS SOCKETS Diseño de Sistemas Operativos Curso 2007/08 Grupo: Mi30 Martín Santana, A. David Martínez Santana, Luis Ignacio Qué son?(definición) n) Los sockets son mecanismos de

Más detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!

Más detalles

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar Sockets en Java Prof. Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos situados en diferentes máquinas? Sockets

Más detalles

SOR -::- Prácticas -::- Curso 05/06. RCP es un estándar desarrollado por Sun Microsystems y usado por muchos distribuidores de sistemas UNIX.

SOR -::- Prácticas -::- Curso 05/06. RCP es un estándar desarrollado por Sun Microsystems y usado por muchos distribuidores de sistemas UNIX. RPC RCP es un estándar desarrollado por Sun Microsystems y usado por muchos distribuidores de sistemas UNIX. El RPC es una interfaz de programación de aplicación (API) disponible para el desarrollo de

Más detalles

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA EJEMPLOS PROGRAMACIÓN SOCKET - JAVA 1.- Calcular el Cuadrado TCP En esta aplicación el cliente se conecta al servidor, para ello debe introducir la dirección IP del servidor y los parámetros sobre los

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

Arquitectura cliente/servidor

Arquitectura cliente/servidor Departamento de Lenguajes y Sistemas Informáticos Arquitectura cliente/servidor Programación en Internet Curso 2007-2008 Índice Introducción Tipos de servidores Ventajas Desventajas Arquitectura de una

Más detalles

19. Packages o paquetes

19. Packages o paquetes Programación orientada a objetos con Java 201 19. Packages o paquetes Objetivos: a) Definir el concepto de paquete b) Interpretar el código fuente de una aplicación Java donde se utilicen paquetes c) Construir

Más detalles

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases

Más detalles

Programación en Java. Programación en OO

Programación en Java. Programación en OO Programación en OO Lección 4:Programación en OO 1. Herencia 2. Modificadores de Acceso 3. Interfaces Herencia Es la acción en la que una clase obtiene los métodos y propiedades definidos en otra clase,

Más detalles