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



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

Modelo de Objetos Distribuidos

1. Visión general de RMI

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

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

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

RMI [Remote Method Invocation]

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

Práctica 5: Common Object Request Broker Architecture CORBA

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

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

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

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

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET

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

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

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

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

Remote Method Invocation (RMI) de Java

JAVA RMI (REMOTE METHOD INVOCATION)

Java RMI. Sistemas distribuidos

Práctica 5: Callbacks RMI.

Código Fuente. Creamos en C:\ una carpeta para ubicar el código fuente del servidor. En mi caso, he creado una carpeta denominada rmi4

Programación Orientada a Objetos con Java

Práctica 7: Invocación Web Services con REST

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

Universidad ORT - Arquitectura de Software. Requisitos

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

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI

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

Las clases Java Socket y ServerSocket

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro

SISTEMAS DISTRIBUIDOS Profesor: José Luis Montoya Restrepo

MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I Facultad de Ingeniería, UBA. Junio Cátedra: Pablo Cosso

Práctica sobre compartición de instancias remotas.

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Java en 2 horas. Rodrigo Santamaría

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

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

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Introducción a la programación orientada a objetos

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

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

Lab 01: Programación de Sockets en TCP

Introducción a la Programación Orientada a Objetos

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

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa

Pruebas de unidad con JUnit

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

11. Algunas clases estándar de Java (II)

Federico Peinado

FACULTAD DE INGENIERÍA

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Tema 4: INVOCACIÓN REMOTA

Tema: Introducción a Java y Netbeans

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

Programación Orientada a Objetos en Java

Modulo 1 El lenguaje Java

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

1. Qué tipos de relación hay entre las siguientes clases?

Programación en Java. Programación en OO

1. Creación del repositorio

PROGRAMACION DISTRIBUIDA

Manual del Protocolo XML-RPC de Mensajería Negocios

SISTEMAS DISTRIBUIDOS

Introducción al lenguaje Java

Introduciendo datos desde el

Curso de Java POO: Programación orientada a objetos

Introducción al lenguaje de programación java

Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...

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

Clases y Objetos. Informática II Ingeniería Electrónica

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase

Java: Clases Abstractas e Interfaces

RMI. Aplicaciones Distribuidas

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

Excepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones

El lenguaje de programación Java

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

Clases y objetos. Objeto Instancia de una clase: Unidad atómica que encapsula estado y comportamiento.

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

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

SISTEMAS DISTRIBUIDOS

Repaso de las características más importantes de la programación Java y su adaptación a Android

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Transcripción:

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 poder, desde una máquina, utilizar métodos de objetos que se encuentran en otra máquina. El lenguaje orientado a objetos Java nos permite trabajar con objetos distribuidos a través de RMI. La idea es la misma del esquema cliente-servidor. Un servidor, el cual crea objetos permitiendo que estas referencias sean accesibles por un cliente, el cual puede invocar métodos de estos objetos. La Interfaz, define el protocolo del objeto remoto. Aquí se encuentra la información que el cliente debe saber, es decir, la información sobre los métodos implementados por el servidor, así como los parámetros y el tipo de retorno. Ejemplo: Al igual que en la práctica 1 construiremos un servidor que entregue la hora actual. Primero debemos definir la interfaz. import java.rmi.*; import java.util.date; public interface FechaInterface extends Remote public Date getdate() throws RemoteException; La interfaz debe hacer un import de java.rmi, extender de Remote y cada método debe hacer un throws RemoteException. El siguiente paso es implementar el servidor: 1

Figure 1: Esquema comunicación cliente servidor 2

import java.rmi.*; import java.rmi.server.*; import java.util.date; public class ServidorFecha extends UnicastRemoteObject implements FechaInterface // constructor de la clase public ServidorFecha() throws RemoteException super(); // metodo que entrega la hora actual public Date getdate() throws RemoteException System.out.println("llamada de un cliente); return new Date(); // main del servidor public static void main( String args[] ) try ServidorFecha servidor = new ServidorFecha (); Naming.rebind( "rmi://localhost/servidor_fecha", servidor ); System.out.println( "Servidor de Fecha..." ); catch ( Exception e ) System.out.println(e); El servidor posee un main que crea un objeto del tipo ServidorFecha. Ahora el cliente: 3

import java.rmi.*; import java.rmi.server.*; import java.util.date; public class ClienteFecha public static void main( String args[] ) try // crea un objeto FechaInterface FechaInterface fechaobj = (FechaInterface)Naming.lookup( "rmi://localhost/servidor_fecha"); Date fecha = fechaobj.getdate(); System.out.println( "Fecha del servidor: " + fecha ); catch ( Exception e ) System.out.println(e);; Hasta el momento el código generado no presenta nada distinto de una implementación local, excepto las librerías empleadas y las líneas: Naming.rebind( "rmi://localhost/servidor_fecha", servidor ); En la implementación del servidor, al ocupar el método rebind lo que hacemos es registrar el objeto servidor (nombre que se asigno a la instacia) en el servidor en la dirección rmi://localhost/servidor fecha. Este parámetro debe ser conocido por el cliente. Luego, la línea: Naming.lookup("rmi://localhost/servidor_fecha" ); Indica que se buscará el objeto en rmi://localhost/servidor fecha. En este caso lo que nosotros creamos es una instancia de la interfaz FechaInterface la cual puede invocar los métodos definidos en la implementación, en este caso, el método getdate(). Una vez que tenemos las clases implementadas debemos compilar usando javac. Al igual que la práctica 1 donde usábamos rpcgen para generar los ficheros que manejan la comunicación cliente servidor, java rmi nos permite generar estos ficheros. Para esto debemos ejecutar el comando rmic sobre la clase que implementa el servidor. En nuestro caso el comando sería: 4

rmic ServidorFecha Esto genera un fichero llamado ServidorFecha Stub.class el cual se encarga de la comunicación entre cliente y servidor. La clase stub es una clase con los mismos métodos que el objeto remoto pero incluye el procesamiento y envío de mensajes por red. La clase stub debe estar visible tanto por el cliente como por el servidor, por lo que debe estar en el servidor en algún lugar público o el cliente debe tener una copia del archivo. RMI Registry Una vez generados los objetos remotos, debemos registrarlos, para eso ejecutamos el comando rmiregistry: [prompt] rmiregistry p Este comando crea y ejecuta un registro de objetos remotos en el puerto p si p es omitido el puerto por defecto es 1099. Finalmente podemos ejecutar nuestro servidor y cliente: [prompt] java ServidorFecha [prompt] java ClienteFecha Ejercicio 1 Implemente y ejecute el servidor de fecha descrito anteriormente. Ejercicio 2 Implemente un servidor que calcule pequeñas estadísticas sobre frases. El servidor debe proveer de un objeto con las siguientes funciones: int getnumerovocales(string a) int getnumeroletras(string a) int getnumeropalabras(string a) int getnumeroconsonantes(string a) El cliente debe proveer el siguiente diálogo: 5

Ingrese una oracion:? _ oracion: ejemplo de oracion Elegir operacion: 1 numero de vocales 2 numero de letras 3 numero de palabras 4 numero de consonantes 0 Salir opcion? _1_ El numero de vocales es: 8 opcion? _3_ El numero de palabras es: 3... Entrega Debe entregar todos los ficheros generados, a través de la sección prácticas del aula global en un fichero comprimido, con el nombre NIA P2.zip, antes de las 24:00 del miércoles 30 de enero. Nota Para la resolución del ejercicio pueden ser útiles las siguientes funciones de la clase String. char charat(int i) Retorna el caracter en el indice i. int indexof(string str, int fromindex) Retorna la ubicación del String str a partir del índice f romindex. Para leer un string desde pantalla. BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese una palabra"); String palabra = in.readline(); Esto escribe en pantalla Ingrese una palabra y luego guarda lo ingresado en la variable palabra. 6