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