Vous êtes sur la page 1sur 7

UNIVERSIDAD DE CUENCA

FACULTAD DE INGENIERA
INGENIERA EN SISTEMAS
RMI: PRACTICA #3
DESARROLLO DE SISTEMAS DISTRIBUIDOS
PROFESOR: ING. JOHNNY SOLRZANO
REALIZADO POR: JOS MOYANO

Cuenca, 19 de noviembre de 2015


SISTEMAS DISTRIBUIDOS

RMI: Prctica 3
Objetivos
-

Usar los conocimientos adquiridos en clases sobre RMI


Aplicar conocimientos de RMI en las clases de Java

Marco Terico
Java RMI
Es un mecanismo ofrecido por Java para invocar un mtodo
manera remota. Forma parte del entorno estndar de ejecucin
Java y provee de un mecanismo simple para la comunicacin
servidores en aplicaciones distribuidas basadas exclusivamente
Java.

de
de
de
en

El objetivo principal de RMI es la de permitir a los programadores el


desarrollo de programas distribuidos en JAVA, usando la misma
sintaxis y semntica de los programas no distribuidos.
Diagrama general.

Capas De RMI
La primera capa es la de aplicacin y se corresponde con la implementacin real de las
aplicaciones cliente y servidor
La segunda capa es la capa proxy, o capa stub-skeleton. Esta capa es la que interacta
directamente con la capa de aplicacin. Todas las llamadas a objetos remotos y acciones
junto con sus parmetros y retorno de objetos tienen lugar en esta capa.
La tercera capa es la de referencia remota, y es responsable del manejo de la parte
semntica de las invocaciones remotas.
La cuarta capa es la de transporte. Es la responsable de realizar las conexiones
necesarias y manejo del transporte de los datos de una mquina a otra. El protocolo de
transporte subyacente para RMI es JRMP (Java Remote Method Protocol), que
solamente es "comprendido" por programas Java.

Caractersticas
RMI se caracteriza por la facilidad de su uso en la programacin por
estar especficamente diseado para Java;
Proporciona paso de objetos por referencia (no permitido por SOAP),
Recoleccin de basura distribuida (Garbage Collector distribuido) y
paso de tipos arbitrarios (funcionalidad no provista por CORBA).
Por medio de RMI, un programa Java puede exportar un objeto, lo que
significa que ste queda accesible a travs de la red y el programa
permanece a la espera de peticiones en un puerto TCP. A partir de
este momento, un cliente puede conectarse e invocar los mtodos
proporcionados por el objeto.
Limitaciones
RMI tiene algunas limitaciones debido a su estrecha integracin con Java, la principal
de ellas es que esta tecnologa no permite la interaccin con aplicaciones escritas en otro
lenguaje.
La Invocacin se compone de:
Encapsulado (marshalling) de los
funcionalidad de serializacon de Java).

parmetros

(utilizando

la

Invocacin del mtodo (del cliente sobre el servidor). El invocador se


queda esperando una respuesta.
Al terminar la ejecucin, el servidor serializa el valor de retorno (si lo
hay) y lo enva al cliente.
El cdigo cliente recibe la respuesta y contina como si la invocacin
hubiera sido local.
Instrucciones
El trabajo se encontraba dividido en dos partes el ejercicio inicial y el
servidor de juegos utilizando Java RMI en la parte inicial tenemos las
instrucciones que siguen.
1. Ejercicio Inicial
Antes de empezar a trabajar sobre la prctica propiamente dicha, el
alumno debera realizar el siguiente ejercicio. Implica compilar y
ejecutar un programa preexistente con Java RMI. Estdielo
cuidadosamente, y asegrese de que entiende todo lo que en l se
hace. Fjese tambin en los necesarias directivas import.
Haga una copia de los archivos:

1. EcoRMI.java
2. EcoRMICliente.java
3. EcoRMISirviente.java
4. EcoRMIServidor.java
5. generaEcoRMI.sh
6. registra.sh
7. servidor.sh
8. cliente.sh
9. policy.all
Estos archivos contienen un programa distribuido escrito en Java. Es
decir, consiste en un cliente, un servidor y una definicin de interfaz.
Deber compilarlo y ejecutarlo como sigue:
1. Ejecute el script generaEcoRMI.sh (Acurdese de ponerle los
adecuados permisos de ejecucin!).
2. Arranque el servidor de nombres (registry) en mi- mquina,
mediante el script:
./registra.sh
Si se produjese el error cuya primera lnea es la siguiente:
RegistryImpl.main: an exception occurred: Port already in use: 4000
significa que alguien ha arrancado previamente el registry.
Modifique el script registra.sh y los programas EcoRMICliente.java y
EcoRMIServidor.java, haciendo que, en vez de usar el puerto 4000
usen otro de su eleccin.
3. Lance en mi- mquina el servidor de eco, mediante el script:
servidor.bat
4. En una ventana, haga ssh otra- mquina para conectarse a
otra- mquina.
5. Ejecute en otra-mquina el cliente de eco, mediante el script:
cliente.bat mi-mquina

El cliente invita, de forma repetitiva, a introducir cadenas, se las enva


al servidor, y luego muestra en pantalla la cadena recibida. El

servidor, tambin, hace eco local de todo lo que recibe.


2. El servidor de juegos usando Java RMI
En este ejercicio, debe crear una adaptacin del programa
suministrado en la seccin anterior, de forma que implemente la
misma aplicacin de la Prctica 1 con arquitectura clienteservidor,
que permite la gestin de los juegos. Es decir, ahora:
-

Las cadenas que el usuario teclea al cliente son nuestras


operaciones sobre juegos, y el servidor realiza cada operacin y
retorna los resultados.

La comunicacin se realizar mediante invocacin de mtodos


remotos. Recordando el enunciado de la Prctica 1, el cliente y el
servidor son como sigue:
Cliente:
Cada lnea tecleada por el cliente se debe interpretar como una de las
siguientes operaciones para el servidor de juegos: NUEVO, QUITA,
INSCRIBE, PLANTILLA, REPERTORIO, JUEGA, TERMINA, o LISTA.
Esto requiere que la expresin se separe en un operador y los
argumentos de tipo cadena y/o entero. A continuacin, se realizar la
invocacin del mtodo remoto correspondiente a la operacin
solicitada (excepto si se trata de FINAL), y, tras retornar dicha
invocacin, se mostrarn en pantalla los resultados.
Servidor:
Debe implementar los ocho mtodos correspondientes a las
operaciones del cliente (o sea, nuevo, quita, inscribe, plantilla,
repertorio, juega, termina, y lista).
Este servidor NO debe implementar las opciones de prdida y/o
retraso de mensajes. Por tanto, en esta prctica, la sintaxis del
servidor es la siguiente:
(java) nombreprograma -k clave
Como es evidente, adems del cliente y el servidor se deber
codificar la necesaria interfaz Juegos.java, que defina los mtodos
remotos que el servidor implementa y el cliente invoca. Dichos
mtodos deben tener, al menos, todos los argumentos de entrada
definidos.
Resultados El resultado debe ser un servidor capaz de realizar
operaciones sobre los juegos para varios clientes. Entregue los
listados de su cdigo.
Actividades a Desarrollar

Como se pudo observar en el anterior punto en el documento se


encuentran ya descritas las actividades a desarrollar que son las
siguientes:
1. La primera actividad a desarrollar es la de la practica 1 que es
ms que nada que se debe compilar los archivos que se nos
fueron entregados, y, entender su funcionamiento.
2. La segunda actividad es adaptar nuevos peticiones que hace el
cliente al programa, estas deben ser revisadas e
implementadas de forma adecuada tal que cumplan con las
especificaciones de los puntos propuestos con anterioridad.
Resultados

Servidor

Cliente

Conclusiones y Recomendaciones:
Como recomendacin, al momento de ejecutar los archivos .bat es

necesario cambiar el PATH de la ubicacin de su jdk, adems que,


tanto el servidor como el cliente se conecten en el mismo puerto.
Como conclusin se puede decir que los procedimientos de llamadas
remotas son tiles para los casos en los que tengamos varios clientes
conectados a un mismo servidor, adems que facilita la
implementacin de los servicios ofrecidos y la invocacin de los
mismos de tal forma que se muestre solamente lo necesario al
cliente.

Vous aimerez peut-être aussi