Download RMI eta Java - Adimen Home
Document related concepts
no text concepts found
Transcript
Ingeniería del Software LABORATORIO 4 ATENCION!! Como estmos usando Java 1.6, no tenemos que usar la aplicación rmic para crear las clases stub y eskeleton. ARQUITECTURA FÍSICA EN 3 NIVELES 1. OBJETIVOS • Repartir los 3 niveles lógicos (presentación, lógica de negocio y datos) en una arquitectura física de 3 niveles : un cliente con la presentaicón, una aplicación servidor que sea llamada por el cliente a través de RMI y que implemente la lógica de negocio y una servidor de datos con que almacene la base de datos. 2. TAREAS A REALIZAR Este laboratorio es una continuación del anterior. Vamos a probar una aplicación que ya está implementada. Los archivos fuente de dicha aplicación están en el archivo comprimido codigoFuente.zip 1.- Descargar y descomprimir el archivo codigoFuente.zip. 2.- Abrir Eclipse utilizando el workspace que hemos descomprimido con el archivo anterior. 3.- Comprobar que el proyecto lab4 tiene 4 clases: LanzadorRemotoFrame.java Asigna la lógica de negocio remota al nivel de presentacion (cliente RMI) mediante lookup PresentacionRemota.java Cliente RMI que utiliza la lógica de negocio remota InterfazRemotaLogicaNegocio.java Interfaz remota RMI AccesoSistemaRemotoDB.java Servidor remoto RMI 4.- Realizar los cambios necesarios para que la aplicación compile sin errores. 4.1 No utilizaremos una base de datos Access, si no una base de datos MySQL en un servidor remoto. Por lo tanto, realizad los cambios necesarios. 4.2 Recordad que para utilizar una base de datos MySQL en Java, necesitamos importar el driver MySQL JDBC Connector. 4.3 Utilizaremos la misma base de datos que en el laboratorio 3, que se encuentra en el servidor “jipla0.gi.ehu.es”. El nombre de la base de datos es “cuentas”. Para conectarnos, utilizaremos el usuario “ISO” cuyo password también es “ISO”. 4.4 A la clase LanzadorRemotoFrame le tenemos que añadir un método “main”. 4.5 En la clase PresentacionRemota, el método “hacerLogin” utiliza jPasswordField1.getText(). El método getText() de la clase JpasswordField está obsoleto y Java recomienda cambiarlo. Realizad los cambios necesarios. 5.- Comprobad los nombres de usuario y passwords que están registrados en la base de datos. 1 Ingeniería del Software 6.- No es necesario ejecutar el servicio RMIREGISTRY, (mediante start rmiregistry o rmiregistry), ya que en la clase AccesoSistemaRemotoDB se lanza el servicio en el puerto predeterminado (1099): java.rmi.registry.LocateRegistry.createRegistry(1099); 7.- Lanzar el servicio RMI desde Eclipse de la siguiente manera: run è Run as... Java Application : AccesoSistemaRemotoDB 8.- Ejecutar el lanzador remoto desde Eclipse de la siguiente forma: run è Run as.. Java Application : LanzadorRemotoFrame 9.- Asignar la lógica de negocio utilizando el botón “Asignar lógica de negocio”. Como todas las clases están en la misma máquina, tenemos que escribir localhost. En el archivo solucionLab4.zip encontraréis una solución a este laboratorio. 10.- Finalmente, tenemos que distribuir la aplicación en 3 niveles físicos. A continuación se describen los pasos a seguir: 1. En un ordenador que se encuentre accesible por red (por ejemplo, servidorServicioRemoto), debemos hacer lo siguiente a) La clase RMI en el servidor que lanza el servicio RMIREGISTRY tenemos que ejecutar la clase AccesoSistemaRemotoDB. b) También necesitamos la dirección IP de la máquina que hace de servidor de datos(que almacena la base de datos MySQL) y, en consecuencia, tenemos que cambiar los parámetros de la sentencia DriverManager.getConnection(). 2 Ingeniería del Software 2. En la máquina cliente, tenemos que lanzar la clase LanzadorRemotoFrame y asignarle la lógica de negocio indicando el nombre de host de la máquina servidorServicioRemoto. Para que la aplicación funcione, tenemos que definir un ficher de permisos de nombre java.policy. Por ejemplo, el contenido de este fichero puede ser grant { permission java.security.AllPermision;}; para permitir todas las operaciones. Además, “java.security.policy” de la siguiente forma: debemos editar la propiedad System.setProperty(“java.security.policy”,”HOME/java.policy”); donde HOME es el directorio raíz del proyecto en el que guardaremos el fichero java.policy. Además, la clase que encargada de instanciar y registrar el objeto remoto (AccesoSistemaRemotoDB) debe indicar el path donde se encuentra el objeto remoto de la siguiente forma: System.setProperty(“java.rmi.server.codebase”, ”file://localhost/servidor”); NOTA: en los pasos anteriores, no ha sido necesario editar la política de seguridad ya que el servicio remoto se ejecutaba en la misma máquina que el cliente. Eliminar todos los archivos creados durante el laboratorio. 3