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:
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.
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.
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.
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.
1. Modifica el bean y el programa SQL para incluir las siguientes características
String state
, de 2 caracteres,
que puede tener el valor "OK" o "NU" (No Usada), así
como los métodos de negocio setUnused()
y setUsed()
, que permiten cambiar a NU y OK
respectivamente el valor de ese campo. getUsed()
que nos devuelve true o false según la cuenta está usada o no.clearAccounts()
,
que permita poner a 0.00 el balance todas las cuentas de aquellos clientes
que tengan el campo state="NU".2. Escribe una pequeña aplicación cliente que pruebe la modificaciones del bean.