Cambiando la manera de diseñar aplicaciones distribuidas Diseño orientado a las comunicaciones: Primero se diseña el protocolo de las comunicaciones y.

Slides:



Advertisements
Presentaciones similares
APLICACIONES DISTRIBUIDAS
Advertisements

Introducción a C#.
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Lenguaje de programación Java
“GUI para Conexiones y Transferencia de Datos Seguros”
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Práctica II: Java RMI.
Arquitectura CLARO-TECNOTREE
"java del lado del servidor" Servlet y JSP Java Server Pages.
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Entornos orientados a objetos
RMI Remote Method Invocation
RMI (Remote Method Invocation)
Aplicación del paradigma orientado a objetos
Diseño y programación de
Objetos Distribuidos – Aplicaciones RMI
Qué pasa cuando varios clientes tratan de conectarse al mismo teimpo a un servidor Una forma es ir atendiéndolos de a uno en un ciclo: como en el programa.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Práctica III: Java RMI con Serialización y Activation Framework
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda.
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
Archivos y Búsqueda Secuencial
ATC-DistribuidasUniversidad de Oviedo / Dpto. de Informática Programación con OSF RPC y Microsoft RPC.
Ejemplo CORBA: Java IDL
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services Thomas Pieper DCC, Universidad de Chile.
Invocación de Métodos Remotos RMI: Remote Method Invocation
Introducción a la Programación. Lenguaje de Máquina.
Tema 11: Excepciones Antonio J. Sierra.
JAVA RMI The Java Remote Method Invocation ELO330 – Programación de Sistemas Cesar Vásquez I
Tema VI: Java RMI Luis López Fernández.
RMI Remote Method Invocation 2da. Clase del 19 de Junio
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
Teoría de Sistemas Operativos
Informática II Interfaces zLas interfaces declaran un tipo que se componen sólo de métodos abstractos y constantes. zLa definición de una clase hace pensar.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CUATRO CONTROL DE FLUJOS, EXCEPCIONES Y ASERSIONES.
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru.
Manuel I. Capel Tuñón Ramón A. Carrasco González
Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Teoría de Sistemas Operativos Sistemas Archivos de Red
Detalles Generales sobre Java
Algoritmos y Programación III
Distributed Component Object Model
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
¿Qué son? – tipos – manejo - ejemplos
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
Patrón de diseño BROKER
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
RMI: Invocación a método remoto, y Java RMI
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
GRUPO N°1 – SISTEMAS OPERATIVOS DISTRIBUIDOS LLAMADA A PROCEDIMIENTO REMOTO.
Java RMI. Entornos orientados a objetos  Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí.  Un programa.
Transcripción de la presentación:

Cambiando la manera de diseñar aplicaciones distribuidas Diseño orientado a las comunicaciones: Primero se diseña el protocolo de las comunicaciones y luego se desarrolla el sistema de acuerdo a él Diseño orientado a ala aplicación: Se diseña y desarrolla la aplicación como si todo estuviera local y luego se divide la aplicación en módulos que correrán en distintas máquinas La primera estrategia implica más complicación en el diseño y la programación pero usa menos recursos El segundo es mejor cuando las comunicacioes son complicadas al punto de hacer difícil el programa

Technologías Alternativas Desarrollo de redes => desarrollo de sistemas distribuidos Desarrollo de middleware (bibliotecas, herramientas, servicios, etc..) que apoyan la programación de sistemas distribuidos Basados en protocolos TCP/IP Resultan en un lenguaje de programación de más alto nivel El problema de la aplicación distribuida no es un caso particular

Remote Procedure Calls (RPC) Motivatción: desarrollo del NFS (SUN) Un cliente puede llamar a una función en la aplicación corriendo en un servidor como si estuviera localmente implementada Pasa los parámetros y recibe los resultados en un formato apropiado (integer, string, float,..) eXternal Data Representation Serialización

Remote Procedure Calls El cliente detiene su ejecución hasta que la lamada retorna Call(parameters) Receive results RPC Server RPC Client Server framework: provisto por el middleware

El archivo de interfaz Especifica el protocolo de la función remota: nombre, parámetros requeridos (cuantos y de que tipo), resultado (tipo). Se llama archivo de interfaz ya que el cliente obtiene de él la información que necesita Cliente usa la interfaz para complilar Servidor la implementa RPC Server RPC Client Interface definition file

Objetos Remotos Reemplazó rápidamente al paradigma anterior Una aplicación puede invocar un método de un objeto ubicado en otra JVM El archivo de interfaz permanece como el concepto clave en la implementación RemoteObjectServer Invoca método Recibe resultado

Archivos necesarios Obtiene una referencia al objeto remoto aplica el método y recibe resultados como si estuviese localizado localmente Client program Server program Define una clase particular para implementar los métodos especificados en la interfaz Crea el objeto remoto a parti de esta clase lo publica en algún servicio de registro para que pueda ser localizado por los clientes Define los métodos (sólo el encabezado) que podrán ser invocados remotamente implementa Usa para la compilación interface

Ejemplo: Remote Date Server El único método que tendrá el objeto Date será getDate(), que entregará como resultado la fecha del computador donde está ubicado Remote Server getDate() Tue Jun 12 17:20:24

El archivo de interfaz import java.rmi.*; import java.util.Date; public interface RemoteDate extends Remote { public Date getDate() throws RemoteException; } Debe importar java.rmi.* debe extender la clase Remote cada método declarado debe lanzar una excepción RemoteException

Definiendo una clase para implementar objetos remotos Definición de la clase para el objeto remoto Remote Interface RemoteObject Implementa Remote Extiende DateServer.java

El programa cliente import java.rmi.*; import java.rmi.server.*; import java.util.Date; public class DateClient { public static void main( String args[] ) { try { RemoteDate dateobj = (RemoteDate)Naming.lookup( "rmi://"+args[0]+"/DateServer" ); Date datum = dateobj.getDate(); System.out.println( “Server Date : " + datum ); } catch ( Exception e ){ System.out.println(e); } }

Los archivos Stub y Skel Las comunicaciones son implementadas por los archivos stub y skel son generados al compilar los archivos class con el comando rmic Client Stub Remote Object Server Skel

El name registry server Un servidor para registrar y hacer públicos los objetos remotos El servidor del objeto remoto registra el objeto en él y los clientes obtienen una referencia al objeto Debe correr en el host servidor y tener acceso a los archivos stub y skel. Debe ser levantado antes de registrar el objeto Client Remote Object Server rmiregistry

¿ Qué archivo dónde ? El cliente necesita el archivo de interfaz y el stub El servidor necesita el Stub y el Skel Client Remote Object Server DateClient.class RemoteDate.class DateServer_stub.class DateServer.class RemoteDate.class DateServer_stub.class DateServer_skel.class

Generando stub & skel El archivo class de la implementación del objeto debe ser compilado nuevamente con el comando rmic DateClient.java RemoteDate.java DateClient.class DateServer.class DateServer_stub.class DateServer_skel.class DateServer.java RemoteDate.class javac rmic

Levantando el rmiregistry desde el programa Es posible levantarlo desde dentro de un programa invocando un método de java El siguiente ejemplo también va a mostrar problemas de concurrencia Remote Number Server Client getNumber() 1 2 3

El chat basado en RMI El cliente debe recibir mensajes del servidor El cliente implementa un objeto remoto que lo pasa como parámetro al servidos !!! The server does not need to locate the client Remote Object Client Remote Object Server addClient(this) sendMessage(text) newMessage(text)

Un servidor de archivos remoto Access to files Client -open file read/write -close file -Read line -Write line Qué pasa si: - se le pide abrir un archivo que no existe - se le pide leer de un archivo no abierto - se generan otros errores

Distribución Automática (stub) El stud puede ser distribuido automáticamente pero se necesita agregar un controlador de seguridad Para esto se necesita escribir un archivo de “politica de seguridad” secutiry policy Cuando se echa andar el servidor se debe especificar una URL para decir de dónde se debe recuperar el archivo java –Djava.security.policy=policy.txt -Djava.rmi.server.codebase= ClientProgram Ver ejemplos PideNumero ReparteNumeros

Distribución automática del stub La recuperación del stub se hace via protocolo URL Un “web-server” debe estar corriendo Se puede usar un pequeño servidor de clases ClassFileServer (extends ClassServer) pasos : –Bajar RFSClient.cass, RFSInterface.class, policy.txt –Echar a correr el servidor de clases con el comando ClassFileServer port path –Echar a correr el servidor de objetos remoto –El cliente contacta al servidor (con parámetros policy y codebase

Activación automática del servidor de objetos A veces no es conveniente tener corriendo muchos objetos servidores a la vez, sólo cuando se necesitan RMI provee un esquema para activar objetos Solo un servidor corre siempre “server” (el rmideamon), que va a despertar al objeto cuando sea necesario (llamada de un cliente) Es necesario escribir y correr un programa “set-up” que va a registrar el servidor de objetos dormido con el rmid que lo despertará Para el cliente no hay diferencia

Pasos para escribir un servidor activable Reescribir el servidor para que extienda una clase “activable” en vez de la RemoteUnicastObject import java.rmi.activation.*; public class MyRemoteClass extends Activable implement MyInterface Reemplazar el constructor por otro que recibe 2 parámetros: public MyRemoteClass(ActivationID id, MarshalledObject data) throws RemoteException { super(id, 0); } compilar con javac y rmic Escribir y copilar el programa setup

Pasos para correrlo Partir el ClassFileServer y rmiregistry Partir el rmid rmid –J-Djava.security.policy=policy.txt correr el programa Setup Java -Djava.security.policy=policy.txt – Djava.rmi.server.codebase= Setup correr el cliente Java -Djava.security.policy=policy.txt – Djava.rmi.server.codebase= client