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.