Ejercicios sesión 5

Ejercicio 1: Despliegue y prueba del bean CustomerEJB

En este primer ejercicio probaremos y desplegaremos el bean CustomerEJB. Se trata de un bean de entidad con persistencia gestionada por el contenedor.

Para el ejercicio usaremos el dominio weblogic "ejemplos" creado en el ejercicio anterior. El ejercicio consta de los siguientes pasos:

  1. Creación de la tabla CUSTOMER de la base de datos Demo.
  2. Compilación y despliegue del bean.
  3. Compilación y prueba de la aplicación cliente.

Creación de la tabla customer

Vamos a crear la tabla que necesitamos en la base de datos demo:

1. Descargamos el fichero ejercicio5.zip, y lo descomprimimos en el directorio de trabajo $HOME/ejb

2. Se habrá creado el directorio $HOME/ejb/customer. En ese directorio se encuentran los subdirectorios java, xml y sql. Dentro del directorio sql, se encuentra el script customer.sql con el que vamos a crear la base de datos.

3. Copiar ese script al directorio $WL_HOME/weblogic700/samples/server/eval/pointbase/tools

% cp customer/sql/customer.sql $WL_HOME/weblogic700/samples/server/eval/pointbase/tools

4. Ejecutamos la aplicación cliente del gestor de bases de datos con la instrucción

% cd $WL_HOME/weblogic700/samples/server/eval/pointbase/tools
% ./startPointBaseCommander.sh

Introducimos los siguientes valores

Do you wish to create a "New/Overwrite" Database? [default: N]: 
  Select product to connect with: Embedded (E), or Server (S)? [default: E]: S
  Please enter the driver to use: [default: [com.pointbase.jdbc.jdbcUniversalDriver]: 
  
  Please enter the database URL to use: [default: [jdbc:pointbase:server://localhost/sample]: 
  jdbc:pointbase:server://localhost/demo
  Username: [default: PBPUBLIC]: examples
  Password: [default: PBPUBLIC]: examples
  PointBase Commander 4.2ECF build 183 SERVER
  Interactive SQL command language. Mac OS X/10.1.5(C) Copyright 1998 - 2002 PointBase(R), 
  Inc. All rights reserved
  SQL>

6. Una vez en la consola SQL, ejecutaremos el comando

SQL > run "customer.sql";

(Recuerda el punto y coma!!). Ahora ya se habrá creado la tabla necesaria para el probar el bean de entidad.

Despliegue del bean

1. Vuelve al directorio ejb, donde se encuentran todos los ficheros necesarios para el bean y comprueba que se encuentra el fichero EJB JAR customer-ejb.jar.

2. Accede desde el navegador a la consola de administración y realiza el despliegue del bean savingsaccount-ejb.jar. Debes seleccionar la opción EJB > Configure a new EJB y pasar directamente al paso 2 para moverte por el árbol de directorios hasta el directorio $HOME/ejb/customer y seleccionar el fichero customer-ejb.jar. Selecciona el servidor myserver y pulsa Configure and Deploy.

Compilación y prueba de la aplicación cliente

1. Añade el directorio WL_HOME/weblogic700/server/bin al path:

% export PATH=$PATH:WL_HOME/weblogic700/server/bin

2. Actualiza las variables del entorno

% . setWLSEnv.sh
% export CLASSPATH=$CLASSPATH:.

3. Vuelve al directorio donde se encuentra los fuentes y compila todos los ficheros

% cd $HOME/customer/src
% javac *.java

4. Ejecuta la aplicación cliente para añadir registros de customers

% java AddCustomers

5. Ejecuta la aplicación cliente para buscar customers

% java FindCustomer

Ejercicio 2: Modificación del bean

1. Modifica la aplicación cliente FindCustomer para que actualice a False el valor del campo hasGoodCredit, con el método de negocion setHasGoodCredit(False).

2. Modifica los ficheros del bean para añadir el campo Integer edad, así como los métodos de acceso setEdad(Integer) y getEdad(). Debes modificar también el fichero de creación de la base de datos. Recompila y reconstruye el fichero customer-ejb.jar.

3. Modifica las aplicaciones clientes AddCustomers y FindCustomer para que actualicen e impriman respectivamente la edad del Customer.

4. Añade un nuevo método de búsqueda

public Collection findByGoodCredit() throws javax.ejb.FinderException;

en la clase CustomerHomeRemote.java. Añade la cláusula EJB-QL correspondiente a esta búsqueda en el fichero ejb-jar.xml:

<query>
  <query-method>
    <method-name>findByGoodCredit</method-name>
  <method-params/>
  </query-method>
  <ejb-ql>
     SELECT OBJECT(c) FROM Customer c
     WHERE c.hasGoodCredit = TRUE
  </ejb-ql>
</query>

5. Escribe una aplicación cliente que llame a findByGoodCredit() y muestre todos los customers que tienen ese campo a true.