Introducción
Este segundo ejemplo consiste en desplegar y ejecutar un aplicación
J2EE denominada CartApp que permite al usuario gestionar su
carrito de la compra en un tienda on-line de libros. CartApp
consiste en un EJB de sesión con estado y una aplicación cliente,
que nos permitirá acceder a la funcionalidad proporcionada por el
EJB desarrollado.
El código fuente de la aplicación os lo podeis descargar del
siguiente enlace cart.tgz.
Pasos a realizar
Los pasos que vamos seguir para desarrollar esta aplicación J2EE son
muy similares a los de la clase anterior:
- Arrancar el servidor J2EE
- Crear la aplicación J2EE:
CartApp
- Crear el Enterprise Bean:
CartBean
- Crear un cliente para la aplicación:
CartClient
- Desplegar
CartApp en el servidor
Veamos cada uno de ellos detalladamente.
1. Arrancar el servidor J2EE
Se siguen los mismos pasos que se han detallado en el enunciado de
la primera práctica.
2. Crear CartApp
Para crear la aplicación J2EE CartApp se utiliza la
herramienta deploytool proporcionado el J2EESDK 1.4. Para
arrancar esta herramienta es necesario ejecutar:
$ deploytool &
Empleamos el deploytool para almacenar la aplicación en un
fichero denominado CartApp.ear :
- Selecciona "File -> New -> Application".
- Click en "Browse":
- Seleccionar el directorio en el que habeis descomprimido los
fuentes de la aplicación, por ejemplo:
${HOME}/swc/practicas/cart/
- En el campo "File Name", introducir
CartApp.ear
- Click "New Application".
- Click "OK"
- Comprueba que el fichero
CartApp.ear existe en
directorio indicado en el paso 2.1
3. Crear CartBean
El código fuente correspondiente a este Bean está en el directorio
src dentro de la carpeta cart .
Para crear el EJB CartBean es necesario realizar los
siguientes pasos:
- Codificar las interfaces del Bean y la clase (en este caso se
proporciona el código, por lo que debereis editarlo y comprenderlo):
Cart.java : es en este ejemplo el "remote
interface" que define los métodos de negocio que puede invocar el
cliente. En este caso podeis comprobar que existen dos métodos
addBook , que permite añadir un nuevo libro al carrito
de la compra y getContents , que permite obtener todos
los libros existentes en el carrito. Estos métodos se implementan
en el código de la clase del bean.
CartHome.java : es en este ejemplo el "home
interface" que define los métodos que le permiten al cliente
crear, buscar y eliminar el bean. En este caso podeis comprobar
que esta interfaz proporciona un método que permite crear el bean
a partir del nombre del usuario de la tienda de libros on-line,
devolviendo un objeto que implementa la interfaz remota definida
en Cart.java . Los métodos de creación del bean
permiten inicializar su estado, en este caso el nombre del usuario
al que está asociado el carrito.
CartBean.java : es en este ejemplo el código del
"enterprise bean" que implementa los métodos de negocio definidos
en el interfaz remoto Cart .
- Compilar el código fuente, para ello dentro del directorio
src ejecutad:
javac -classpath ${J2EE_HOME}/lib/j2ee.jar -d ../build *.java
Si este paso se ha realizado correctamente, en el directorio
../build tendreis la siguiente estructura de ficheros:
build +-- Cart.class
|
+-- CartBean.class
|
+-- CartHome.class
- Empaquetar el enterprise bean. Para ello vamos a utilizar un
"wizard" proporcionado por el
deploytool . Gracias a este
"wizard", realizaremos las siguientes tareas de forma más
sencilla:
- Crear el descriptor de despliegue del bean.
- Empaquetar el descriptor de despliegue y las clases del bean en
un ficheoro EJB JAR.
- Añadir el fichero EJB JAR en el fichero
CartApp.ear .
Para ejecutar el "wizard" es necesario seleccionar en el
deploytool "File -> New -> Enterprise Bean". El "wizard"
muestra los siguientes cuadros de dialogo:
- "New Enterprise Bean Wizard - Introduction":
- Leer el texto explicativo que nos indica las tareas que
realiza este "wizard".
- Click "Next".
- "New Enterprise Bean Wizard - EJB JAR":
- En el apartado "JAR Location", seleccionar el botón
etiquetado como "Create NewJAR Module Application" y en el
combobox inferior seleccionar
CartApp .
- En el apartado "JAR Naming", introducir en el campo "JAR
Display Name" el valor
CartJAR .
- En el apartado "Contents", click "Edit": en el arbol de
"Available Files", localizar el directorio
build/
y seleccionar los tres ficheros de clase del bean:
Cart.class , CartBean.class y
CartHome.class y hacer click en "Add" y después en
"OK" para volver a la pantalla anterior.
- Click "Next".
- "New Enterprise Bean Wizard - General":
- En el combobox bajo "Enterprise Bean Class" seleccionar
CartBean . Automáticamente en el campo "Enterprise
Bean Name" aparecerá CartBean y en "Enterprise
Bean Type" aparecerá Stateless Session , este
último campo lo debeis modificar para que ponga Stateful
Session .
- En el apartado "Remote Interfaces" seleccionar en el
combobox correspondiente a "Remote Home Interface" el valor
CartHome y en el combobox correspondiente
a "Remote Interface" seleccionar el valor
Cart .
- Click "Next".
- "New Enterprise Bean Wizard - Configuration Options":
- Click "Next".
- "New Enterprise Bean Wizard - Next Steps":
- Leer el texto en el que se indican las tareas que puede ser
necesario realizar a continuación.
- Click "Finish"
4. Crear un cliente para la aplicación: CartClient
Para interactuar con el EJB anterior vamos a crear un cliente, cuyo
código se encuentra en el directorio
src/CartClient.java . Este cliente se lanzará en un
terminal y su objetivo es permitirnos probar la funcionalidad de la
aplicación CartApp .
Nota: Si este carrito se integrase en una tienda de libros
on-line, el cliente para la aplicación sería un cliente Web (JSP,
Servlet,...)
El primer paso a realizar es compilar el código fuente para ello
desde el directorio src se ejecuta el comando:
$ javac -classpath ${J2EE_HOME}/lib/j2ee.jar:../build -d ../build CartClient.java
El siguiente paso será empaquetar este aplicación cliente. Para
ello vamos a utilizar un "wizard" proporcionado por el
deploytool . Gracias a este "wizard", realizaremos las
siguientes tareas de forma más sencilla:
- Crear el descriptor de despliegue de la aplicación cliente.
- Empaquetar el descriptor de despliegue y los ficheros de la
aplicación en un fichero JAR.
- Añadir el fichero JAR en el fichero
CartApp.ear .
Para ejecutar el "wizard" es necesario seleccionar en el
deploytool "File -> New -> Application Client". El
"wizard" muestra los siguientes cuadros de dialogo:
- "New Application Client Wizard - Introduction":
- Leer el texto explicativo que nos indica las tareas que
realiza este "wizard".
- Click "Next".
- "New Application Client Wizard - JAR File Contents":
- En el apartado "AppClient Location" seleccionar el botón
etiquetado como "Create New AppClient Module in Application", y en el
combobox inferior seleccionar
CartApp .
- En el apartado "AppClient Naming", introducir en el campo
"AppClient Name" el valor
CartClient .
- En el apartado "Contents", click "Edit": en el arbol debajo
de "Available Files" localizar el directorio
build
y seleccionar el fichero correspondiente a la aplicación cliente
CartClient.class y hacer click en "Add" y después
en "OK" para volver a la pantalla anterior.
- Click "Next".
- "New Application Client Wizard - General":
- En el apartado "Application Client", en el combobox debajo
de "Main class" seleccionar
CartClient .
- Click "Next".
- "New Application Client Wizard - Next Steps":
- Leer el texto en el que se indican las tareas que puede ser
necesario realizar a continuación.
- Click "Finish".
Antes de pasar al despliegue de la aplicación, es necesario
especificar la referencia de la aplicación cliente al Enterprise
Java Bean: si nos fijamos en el código de
CartClient.java , se busca una referencia al bean
mediante el método lookup :
Object objRef = ic.lookup("java:comp/env/ejb/SimpleCart");
Para especificar esta referencia es necesario realizar los
siguientes pasos en el deploytool :
- En el arbol de la aplicación, seleccionar
CartClient .
- Seleccionar la pestaña "EJB Refs".
- Click "Add":
- En el campo "Coded Name", introducir
ejb/SimpleCart .
- En el combobox "EJB Type", seleccionar
Session .
- En el combobox "Interfaces", seleccionar
Remote .
- En el campo "Home Interface", introducir
CartHome .
- En el campo "Local/Remote Interface", introducir
Cart .
- Click "OK".
- Seleccionando la nueva fila añadida, introducir en el campo
inferior "JNDI Name"
CartBean .
5. Desplegar la aplicación en el servidor J2EE
A continuación pasamos a desplegar al aplicación resultante, para
ello es necesario realizar los siguientes pasos:
- En el arbol de la aplicación seleccionar
CartApp .
- Seleccionar "Tools -> Deploy".
- En el apartado "Connection Settings" introducir el login y
password del administrador del servidor
(
admin/admin2004 ).
- En el apartado "Return Client JAR", activar el checkbox "Return
Client Jar" y en el campo inferior introducir el directorio en el
que se localiza la aplicación
cart .
- Click "OK".
- En la ventana "Distribute Module" click "Close" cuando finalice
el despliegue.
- Para verificar el despliegue: en el arbol, expandir el nodo de
servidores y seleccionar el host en el que se está ejecutando el
servidor J2EE (localhost). En la tabla "Deployed Objects", debería
aparecer listada la aplicación
CartApp y su estado
debería ser "Running".
Ejecución de la aplicación
Para comprobar el funcionamiento de la aplicación creada, vamos a
utilizar la aplicación cliente desarrollada:
- En un terminal, ir al directorio principal de la aplicación
cart .
- Ejecutar en la línea de comandos:
$ appclient -client CartAppClient.jar
- En el terminal, el cliente mostrará los libros que se han
introducido en el carrito:
Harry Potter: La piedra filosofal
Harry Potter: La cámara secreta
Harry Potter: El caliz de fuego
|