Está en la página 1de 8

UNIVERSIDAD DE CUENCA

POR: PATIO EDISSON, PEALOZA FERNANDO





Objetivos:

Implementar mediante RMI una calculadora que preste su funcionalidad a varios
terminales o clientes que lo requieran.
Maximizar la utilizacin de recursos utilizando software implementado en una
computadora remota.
Compartir los servicios implementados en un servidor a varios clientes que los
requieran verificando su concurrencia.
Aprender el uso de los objetos y sus respectivos mtodos que el paquete de RMI
de java proporciona.
Manejar los Stub y Skeleton para que la invocacin a la funcin remota sea
posible.
Manejar la herramienta de java RMI Registry.

Introduccin:

RMI es un paquete de JAVA que permite manejar objetos (y sus respectivos mtodos)
de manera remota, para utilizar los recursos de un servidor de manera transparente para
el usuario local.
La manera en que RMI (y RPC en general) logra hacer esto, es por medio de lo que se
conoce como STUBs. En el caso del STUB servidor, se conoce como SKELETON. Estos
Stubs y Skeletons permiten que al momento de ser invocada la funcin remota esta
pueda ser "simulada localmente"
Se brinda un mecanismo para la comunicacin RMI se caracteriza por la facilidad de su
uso en la programacin por estar especficamente diseado para Java; proporciona
paso de objetos por referencia, recoleccin de basura distribuida y paso de tipos
arbitrarios.
Para la comunicacin entre el servidor y el cliente, se trabaja con interfaces, que deben
ser implementadas por el servidor y/o cliente, para que los STUBs puedan realizar la
transparencia para ambos. Adems esto evita que deba existir una definicin local real
de la clase remota, vale decir, en el cliente solo debe estar definida la interface, no la
clase remota.






Funcionamiento RMI:

Se ejecuta el RMI Registry, en algn lugar de la red.
El servidor que desea manejar un objeto, se registra en dicho servidor.
El RMI Registry registra el par: OBJETO/SERVIDOR.
El cliente que necesita utilizar un determinado objeto, hace una consulta al RMI
Registry, quien devuelve el STUB listo para la comunicacin.

Implementacin

Implementar mediante RMI un servidor que pueda realizar operaciones matemticas de
manera remota y que varios clientes puedan utilizarla haciendo un llamado. Para el
ejercicio se solicita:
Operaciones Bsicas (Suma, Resta, Multiplicacin, Divisin).
Matrices (Suma de matrices, Multiplicacin de matrices, Transpuesta).
Funciones (Evaluacion de funciones, Derivadas, Integrales, Grafica).
Conversiones (Binarias a Decimales, Decimales a Octales, Hexadecimales a
Decimales).
Implementacin del Servidor

Lo primero ser crear una interfaz la cual debe heredar de la clase Remote y para esto
habr que importar el paquete: java.rmi.Remote, una vez creada la interface se deber
incorporar los mtodos que tendr dicha interface, todos los mtodos debern transferir
una excepcin en caso de que suceda despus del mtodo se deber aadir lo
siguiente: throws java.rmi.RemoteException.
El siguiente paso ser crear una clase la cual implemente la interface creada, se deber
implementar todos los mtodos abstractos ahora creamos una clase servidor la cual
ofrecer todos los mtodos implementados en el paso anterior, usando Libreras
implementamos en el servidor los diferentes mtodos que desensamblan los objetos
recibidos, verificando mediante los signos la operacin solicitada y los parmetros con
los que se va a operar. Una vez identificada la operacin, se ubica y se colocan los
parmetros en el orden en el que el servidor fue codificado para de esta forma operar y
enviar los datos procesados, estos datos se ponen en cola y son enviados en el orden
en el que se obtienen y de esta manera el cliente puede ordenarlos como crea
convenienete para presentarlos como resultado.



Implementacin del Cliente

Se crear una interfaz con java para que sea compatible ya que RMI tiene una
implementacin nica para java, en esta interfaz se adecuarn las estructuras tanto para
enviar la informacin como para recibir los datos procesados. Se deber especificar cual
es el tipo de dato a enviar y recibir.
Para cada operacin se deber aadir una clusula para atrapar la excepciones
presentadas como se puede notar: public String suma(String a) throws
java.rmi.RemoteException; y de esta manera podremos enviar como parmetro los
datos a procesar en el servidor y de la misma manera los recibiremos.

Manual de Usuario

Como primer punto debemos verificar que el servidor este corriendo, para que la
conexin se pueda realizar normalmente. El servidor cuenta con una ip y un puerto
habilitado para la conexin que debe ser conocido por el cliente para realizar las
peticiones.




El diseo del cliente implementa ventanas para cada una de las operaciones antes
mencionadas.






Operaciones Bsicas
Las operaciones bsicas son resueltas en la siguiente interfaz. Los datos se insertan en
el espacio especificado y se los pone de manera de ecuacin, estos son enviados como
parmetros al servidor que es el encargado de desempaquetarlos, verifica el signo
enviado que identifica la operacin y los valores son tomados como parmetro para
realizar la operacin, el servidor opera y devuelve el resultado que es presentado en el
mismo campo.

Funciones
En f(x) se debe ingresar una expresin algebraica en la que se va a evaluar, derivar e
integrar. Del mismo modo la expresin es enviada al servidor que este a su vez la
desempaqueta y toma a todas las x como la variable a tratar, dependiendo de esto se
opera y se devuelve de la misma manera el resultado al terminar las operaciones.



Matrices
Esta Pestaa trabaja con matrices, solicita en primera instancia el nmero de filas y de
columnas de cada una de las matrices, luego genera estas matrices para que
posteriormente sean llenadas, una vez terminado eso se envan estas matrices junto a
una operacin que seleccionemos. El servidor procesa la operacin y nos devuelve una
serie de valores que son los resultantes, estos son recibidos y ordenados en la interfaz
de cliente.

Conversiones
Para realizar la conversin de sistemas numricos y alfanumricos la interfaz de cliente
solicita el valor a convertir y basta con presionar el tipo de conversin especificado en
los botones de la parte inferior de la ventana. Las opciones presentadas so: Binario-
Decimal, Octal-Decimal, Hexadecimal-Decimal, Decimal-Binario, Decimal-Octal,
Decimal-Hexadecimal.


Funciones Trigonomtricas
Realizamos en esta interfaz las distintas funciones trigonomtricas, al igual que
operaciones entre ellas. Es similar al ingreso de valores de una calculadora en donde
todo debe ser agrupado por parntesis para que se pueda operar. El resultado despus
de haber clickeado la respuesta aparecer en el campo inferior.









Llamada a Servidor RMI Extrao
Esta ltima interfaz da muestra del poder de RMI ya que debe ser genrica la utilizacin
de un servidor RMI, por lo que se puede llamar a este incluyendo la Ip del servidor que
se quiere referenciar, el puerto de acceso que este habilita, la Interfaz, la Clase a la que
pertenece, el mtodo especificado o que se quiere realizar, el valor que va a retornar, el
valor que recibe y su tipo. Una vez ingresado todo lo especificado anteriormente de
manera correcta presionamos calcular y el resultado deber operarse en el servidor y
devolvernos el resultado en el campo de destino.


Conclusiones.-
RMI puede solucionar varios problemas de hardware de poco rendimiento con la
utilizacin de un servidor remoto que realice de manera gil varias operaciones.
RMI centraliza el desempeo de un sistema ya que depende de un servidor para
operar.
Si un servidor RMI colapsa por alguna razn deja sin funcionamiento a todos
aquellos clientes que lo utilicen.
RMI resuelve el problema planteado anteriormente pudiendo ser instalada la
aplicacin en cualquier PC disponible con java o referenciando una o varias
operaciones a servidores remotos en lugares distintos y distantes mediante una
red.