Home UC3M
Home IT

Software de Comunicaciones - ITT Telemática

Enterprise Java Bean de Sesión sin Estado

 OBJETIVOS

Los objetivos de esta práctica son que los alumnos se enfrenten al desarrollo de aplicaciones empleando la tecnología Java 2 Enterprise Edition (J2EE) y utilizando para ello la herramienta de desarrollo proporcionada por Sun denomina J2EESDK versión 1.4. Las prácticas serán ejemplos que ilustren los tipos de EJB existentes y además los alumnos deberán modificarlos parcialmente, estas modificaciones serán corregidas en las clases prácticas.

En esta primera práctica vamos a abordar el desarrollo de un EJB de Sesión sin Estado, denominado ConverterBean. Este EJB implementa un conversor de moneda y el cliente que accede a sus métodos de negocio será un cliente Web, implementado utilizando la tecnología JSP. El alumno deberá crear una nueva aplicación basada en la anterior pero que permita la conversión entre euros y pesetas.

 APLICACIÓN "ConverterApp"

Introducción

Este primer ejemplo consiste en desplegar y ejecutar un aplicación J2EE denominada ConverterApp que permite al usuario calcular conversiones de moneda entre Yen y Eurodollars. ConverterApp consiste en un EJB de sesión sin estado, que es el que realiza los cálculos y un cliente Web, que nos permitirá a través de un navegador acceder a la funcionalidad proporcionada por el EJB desarrollado. Este cliente Web será un JSP.

El código fuente de la aplicación os lo podeis descargar del siguiente enlace converter.tgz.

Pasos a realizar

Los pasos que vamos seguir para desarrollar nuestra primera aplicación J2EE, denominada ConverterApp son los siguientes:
  1. Arrancar el servidor J2EE

  2. Crear la aplicación J2EE: ConverterApp

  3. Crear el Enterprise Bean: ConverterBean

  4. Crear un cliente Web para la aplicación: ConverterWAR

  5. Desplegar ConverterApp en el servidor
Veamos cada uno de ellos detalladamente.

1. Arrancar el servidor J2EE

NOTA: Para facilitar la ejecución de los comandos de J2EE se recomienda establecer las siguientes variables de entorno: J2EE_HOME a /usr/local/j2ee, JAVA_HOME a ${J2EE_HOME}/jdk. Y añadir a la variable del entorno PATH el ${J2EE_HOME}/bin y ${JAVA_HOME}/bin. Antes de comenzar a crear la aplicación es necesario arrancar el servidor J2EE, para ello es necesario ejecutar:
  $ asadmin start-domain domain1
  
Podeis comprobar que el servidor se ha arrancado correctamente, si os conectais al siguiente enlace http://localhost:8888:



2. Crear ConverterApp

Para crear la aplicación J2EE ConverterApp vamos a utilizar la herramienta deploytool proporcionada en el J2EE SDK. Para arrancar la herramienta es necesario ejecutar:
  $ deploytool &
  
Empleamos el deploytool para almacenar la aplicación en un fichero denominado ConverterApp.ear:
  1. Selecciona "File -> New -> Application".

  2. Click en "Browse":

    1. Seleccionar el directorio en el que habeis descomprimido los fuentes de la aplicación, por ejemplo:
    2.     ${HOME}/swc/practicas/converter/
          
    3. En el campo "File Name", introducir ConverterApp.ear

    4. Click "New Application".

    5. Click "OK"

  3. Comprueba que el fichero ConverterApp.ear existe en directorio indicado en el paso 2.1

3. Crear ConverterBean

Un Enterprise Bean es un componente en el lado del servidor que contiene la lógica de negocio de una aplicación. En tiempo de ejecución, los clientes ejecutan la lógica de negocio invocando los métodos del enterprise bean. En este primer ejemplo, nuestro enterprise bean es un bean de sesión sin estado denominado ConverterBean. El código fuente está en el directorio src dentro de la carpeta converter. Para crear el EJB ConverterBean es necesario realizar los siguientes pasos:
  1. Codificar las interfaces del Bean y la clase (en este caso se proporciona el código, por lo que debereis editarlo y comprenderlo):

    1. Converter.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 de conversión dollarToYen y yenToEuro. Estos métodos se implementan en el código de la clase del bean.

    2. ConverterHome.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 único método que permite crear el bean, devolviendo un objeto que implementa la interfaz remota definida en Converter.java.

    3. ConverterBean.java: es en este ejemplo el código del "enterprise bean" que implementa los métodos de negocio definidos en el interfaz remoto Converter.

  2. Compilar el código fuente, para ello dentro del directorio src ejecutad:

  3.   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 +--converter +-- Converter.class
                         |
                         +-- ConverterBean.class
                         |
                         +-- ConverterHome.class
      
  4. 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 (ConverterApp.ear).

    Para ejecutar el "wizard" es necesario seleccionar en el deploytool "File -> New -> Enterprise Bean". El "wizard" muestra los siguientes cuadros de dialogo:

    1. "New Enterprise Bean Wizard - Introduction":

      1. Leer el texto explicativo que nos indica las tareas que realiza este "wizard".

      2. Click "Next".

    2. "New Enterprise Bean Wizard - EJB JAR":

      1. En el apartado "JAR Location", seleccionar el botón etiquetado como "Create NewJAR Module Application" y en el combobox inferior seleccionar ConverterApp.

      2. En el apartado "JAR Naming", introducir en el campo "JAR Display Name" el valor ConverterJAR.

      3. En el apartado "Contents", click "Edit": en el arbol de "Available Files", localizar el directorio build/converter y seleccionar los tres ficheros de clase del bean: Converter.class, ConverterBean.class y ConverterHome.class y hacer click en "Add" y después en "OK" para volver a la pantalla anterior.

      4. Click "Next".

    3. "New Enterprise Bean Wizard - General":

      1. En el combobox bajo "Enterprise Bean Class" seleccionar converter.ConverterBean. Automáticamente en los campos "Enterprise Bean Name" aparecerá ConverterBean y en "Enterprise Bean Type" se seleccionará Stateless Session.

      2. En el apartado "Remote Interfaces" seleccionar en el combobox correspondiente a "Remote Home Interface" el valor converter.ConverterHome y en el combobox correspondiente a "Remote Interface" seleccionar el valor converter.Converter.

      3. Click "Next"

    4. "New Enterprise Bean Wizard - Configuration Options":

      1. Click "Next".

    5. "New Enterprise Bean Wizard - Next Steps":

      1. Leer el texto en el que se indican las tareas que puede ser necesario realizar a continuación.

      2. Click "Finish"

    4. Crear el cliente Web ConverterWAR

    El cliente Web que vamos a utilizar para interactuar con el EJB anterior es una página JSP, que podeis encontrar en el directorio web. Editad este fichero index.jsp y fijaros sobre todo en el código del método jspInit en el que podeis ver como se crea un objeto bean, que nos permite acceder a los métodos de negocio del EJB.

    El siguiente paso será empaquetar este cliente Web. 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 cliente Web.

    • Empaquetar el descriptor de despliegue y el cliente Web a un fichero WAR.

    • Añadir el fichero WAR en el fichero (ConverterApp.ear).

    Para ejecutar el "wizard" es necesario seleccionar en el deploytool "File -> New -> Web Component". El "wizard" muestra los siguientes cuadros de dialogo:

    1. "New Web Application Wizard - Introduction":

      1. Leer el texto explicativo que nos indica las tareas que realiza este "wizard".

      2. Click "Next".

    2. "New Web Application Wizard - WAR File":

      1. En el apartado "WAR Location" seleccionar el botón etiquetado como "Create New WAR Module in Application", y en el combobox inferior seleccionar ConverterApp.

      2. En el apartado "WAR Naming", introducir en el campo "WAR Name" el valor ConverterWAR.

      3. En el apartado "Contents", click "Edit": en el arbol debajo de "Available Files" localizar el directorio web y seleccionar el fichero correspondiente a la aplicación web index.jsp y hacer click en "Add" y después en "OK" para volver a la pantalla anterior.

      4. Click "Next".

    3. "New Web Application Wizard - Choose Component Type":

      1. Seleccionar el botón JSP.

      2. Click "Next".

    4. "New Web Application Wizard - Component General Properties":

      1. En el combobox bajo "JSP Filename", seleccionar index.jsp. Automáticamente en los campos "Web Component Name" aparecerá index y en "Web Component Display Name" aparecerá index.

      2. Click "Next".

    5. "New Web Application Wizard - Next Steps":

      1. Leer el texto en el que se indican las tareas que puede ser necesario realizar a continuación.

      2. Click "Finish"

    Antes de pasar al despliegue de la aplicación, es necesario realizar algunos pasos, relacionados con el cliente Web:

    1. Especificar la referencia del cliente Web al Enterprise Java Bean: si nos fijamos en el código del JSP, se busca una referencia al bean mediante el método lookup:

    2.   Object objRef = ic.lookup("java:comp/env/ejb/TheConverter");
        

      Para especificar esta referencia es necesario realizar los siguientes pasos en el deploytool:

      1. En el arbol de la aplicación, seleccionar ConverterWAR.

      2. Seleccionar la pestaña "EJB Refs".

      3. Click "Add":

        1. En el campo "Coded Name", introducir ejb/TheConverter.

        2. En el combobox "EJB Type", seleccionar Session.

        3. En el combobox "Interfaces", seleccionar Remote.

        4. En el campo "Home Interface", introducir converter.ConverterHome.

        5. En el campo "Local/Remote Interface", introducir converter.Converter

        6. Click "OK".

      4. Seleccionando la nueva fila añadida, introducir en el campo "Enterprise Bean Name" ConverterBean.

    3. Especificar el "context root" de la aplicación Web: nos permite establecer un context root para determinar el camino en el servidor Web en el que estará accesible esta aplicación. Para ello es necesario realizar los siguientes pasos en el deploytool:

      1. En el arbol de la aplicación seleccionar ConvertApp.

      2. Seleccionar la pestaña "Web Context".

      3. En el campo "Context Root", introducir /converter.

    5. Desplegar la aplicación en el servidor J2EE

    Antes de pasar al despliegue de la aplicación en el servidor es necesario mapear los nombres JNDI del bean creado, para ello es necesario realizar los siguientes pasos:

    1. En el arbol de la aplicación seleccionar ConverterApp.

    2. Seleccionar la pestaña "JNDI Names".

    3. En el apartado "References" introducir como "JNDI Name" de la referencia al EJB realizada por el cliente Web (ConverterWAR) el nombre ConverterBean.

    A continuación pasamos a desplegar al aplicación resultante, para ello es necesario realizar los siguientes pasos:

    1. En el arbol de la aplicación seleccionar ConverterApp.

    2. Seleccionar "Tools -> Deploy".

      1. En el apartado "Connection Settings" introducir el login y password del administrador del servidor (login:admin y password=admin2004).

      2. En el apartado "Return Client JAR", dejar los campos por defecto.

    3. Click "OK".

    4. En la ventana "Distribute Module" click "Close" cuando finalice el despliegue.

    5. 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 ConverterApp 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 el cliente Web, para ello en un navegador nos conectamos a las URL http://localhost:8888/converter.




 EJERCICIOS

  • Ejercicio 1: A partir del código anterior crear una nueva aplicación EuroConverterApp cuyos métodos de negocio nos permitan la conversion de una cantidad determinada a Euros y a Pesetas. Por ejemplo, si se introduce 600, la respuesta será: "600 euros son 100000 pesetas" y "600 pesetas son 3,6 euros"

  • Ejercicio 2: Realizad una nueva aplicación HolaApp que permita obtener un saludo personalizado para el usuario. Realizad el correspondiente EJB de sesión y cliente Web necesario.


 ENTREGA

De forma presencial a lo largo de esta clase práctica o al principio de la próxima sesión de prácticas se corregirán los ejercicios indicados en el apartado anterior.

El ejercicio 1 es obligatorio y puntuable. El ejercicio 2 es optativo, pero su realización se tendrá en cuenta en la nota final de prácticas.


 LABORATORIO Y SOFTWARE PARA EL DESARROLLO DE LA PRÁCTICA


Las prácticas se realizarán en el laboratorio 4.SD04, en horario de 11:00-14:00 los jueves que se indican en la planificación de la asignatura.

La versión de software disponible en el laboratorio de prácticas es la siguiente: Java 2 Enterprise Edition SDK 1.4 versión para Linux. Y ésta será la versión en la que se prueben las prácticas.

Para entrar en los ordenadores del laboratorio se necesita tener una cuenta abierta. Puede solicitarlo a través del siguiente formulario (login=alumno, password=alumno13). Si ya tiene cuenta de años anteriores debe rellenar igual el formulario para que su cuenta esté asociada a esta asignatura.



 ENLACES


  • Software:

  • APIs:

  • Manuales herramientas:

    • Deploytool: ayuda en la opción del menú "Help -> Contents".