Ejercicios sesión 4

Ejercicio 1: Despliegue y prueba del bean SavingsAccountEJB

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

El ejercicio consta de los siguientes pasos:

  1. Creación del dominio weblogic "ejemplos", basado en el servidor de ejemplos.
  2. Creación de la tabla SAVINGSACCOUNT de la base de datos Demo. Esta base de datos está manejada por el servidor PointBase, un servidor de bases de datos escrito en Java que viene incluido en la distribución de Weblogic.
  3. Despliegue del bean.
  4. Compilación y prueba de la aplicación cliente.

Creación del dominio ejemplos

Para crear el dominio ejemplos debemos ejecutar el comando

% WL_HOME/bea/weblogic700/common/bin/dmwiz.sh

donde WL_HOME es el directorio donde se encuentra instalado el servidor de aplicaciones. Aparecerán las ventanas de ayuda del asistente de creación de dominios que nos irá guiando para seleccionar las opciones adecuadas. Debemos seleccionar la plantilla WLS Examples y asignarle como nombre ejemplos. Escogeremos después la opción Single Server (Standalone Server) y aceptaremos el directorio por defecto (WL_HOME\user_projects\ejemplos). Aceptaremos el nombre de servidor por defecto (myserver) y los puertos de escucha. Dejaremos en blanco la dirección de escucha del servidor. Como usuario de administración podemos escribir system y weblogic como contraseña.

Una vez instalado el dominio de ejemplos, lanzaramos el servidor de aplicaciones

% WL_HOME/user_projects/ejemplos/startExamplesServer.sh

y nos conectaremos con el navegador a la dirección http://localhost:7001/examplesWebApp/index.jsp. Allí se encuentra la página principal en la que se pueden probar distintos tipos de ejemplos proporcionados por el servidor de aplicaciones.

Creación de la tabla savingsaccount

Para usar EJB de entidad es necesario crear tablas en alguna base de datos. El servidor de aplicaciones weblogic proporciona el gestor de bases de datos PointBase, escrito en Java y completamente integrado en el servidor de ejemplos. Cuando lanzamos el servidor de aplicaciones, automáticamente se arranca el servidor de bases de datos.

Podemos comprobar cuál es el nombre JNDI de la fuente de datos que usa el servidor de ejemplos. Para ello, entramos en la consola de administración (http://localhost:7001/console) y seleccionamos la opción Tx Data Sources, bajo el apartado Services Configurations. Aparecerán distintas fuentes de datos. La que vamos a usar en los ejemplos es la fuente de datos examples-dataSource-demoPool que tiene ese mismo nombre JNDI. Si seleccionamos el Connection Pool asociado a esa fuente de datos (demoPool) veremos que las características de la base de datos son las siguientes:

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

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

2. Se habrá creado el directorio $HOME/ejb/savingsaccount. En ese directorio se encuentran los subdirectorios java, xml y sql. Dentro del directorio sql, se encuentra el script savingsaccount.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 savingsaccount/sql/savingsaccount.sql $WL_HOME/weblogic700/samples/server/eval/pointbase/tools

4. Vamos a llamar a una aplicación cliente que nos permite ejecutar comandos SQL contra la base de datos. No se encuentra directamente instalada en el directorio tools, pero podemos crearla fácilmente. Nos movemos al directorio tools y copiamos el fichero startPointBaseConsole.sh con el nombre startPointBaseCommander.sh

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

y modificamos su última línea de código. Donde pone

"${JAVA_HOME}/bin/java" -classpath "${CLASSPATH}" com.pointbase.tools.toolsConsole

lo cambiamos por

"${JAVA_HOME}/bin/java" -classpath "${CLASSPATH}" com.pointbase.tools.toolsCommander

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

./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 "savingsaccount.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 savingsaccount-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/savingsaccount y seleccionar el fichero savingsaccount-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/ejb/savingsaccount/src
  % javac *.java

4. Ejecuta la aplicación cliente

% java SavingsAccountClient

Vuelve a ejecutarla otra vez; esta segunda vez tiene que arrojar una excepción de tipo InsuficientBalanceException, porque se intenta hacer un cargo de una cantidad superior a la que tiene una cuenta de balance.

Ejercicio 2: Modificación del bean

1. Modifica el bean y el programa SQL para incluir las siguientes características

2. Escribe una pequeña aplicación cliente que pruebe la modificaciones del bean.