Construir Aplicaciones EJB con JBoss, Lomboz y Eclipse

Este cap�tulo describe c�mo crear los clientes en las capas de cliente/presentaci�n para acceder o comunicarse con la capa de negocio. Los Servlets y las p�ginas JSP son dos ejemplos de clientes web que crearemos. En un patr�n t�pico de Modelo-Vista-Controlador, el servlet act�a como el controlador y las p�ginas JSP como la vista (por supuesto que los datos son el modelo).

.�Crear el Servlet AccessController:

  • Ve al explorador de paquetes y expande el nodo del proyecto Mystore, selecciona src, y pulsa con el bot�n derecho.
  • En el men� desplegalble selecciona New > Lomboz Servlet Wizard:
  • Introduce au.com.tusc.servlet como el nombre del paquete, AccessController como el nombre del servlet y selecciona los m�todos que se muestran en la siguiente figura:
  • Pulsa Next y aparecer� la siguiente ventana. A�ade un Web Module (Pulsa Browse.. y se mostrar� una lista de los m�dulos web para este proyecto), en este caso es OnlineStore, seleccionalo. Introduce access como nombre del servlet y el mapeo de URL como ' /access/* '.
  • Pulsa Finish.

Esto crear� un paquete llamado au.com.tusc.servlet en src y el servlet AccessController dentro de ese paquete:

Como puedes ver se han creado los cuatro m�todos que seleccionamos en el wizard, y s�lo necesitamos sus implementaciones.

Aparte de esto, se han generado algunos descriptores en web.xml, dentro de Web-Module OnlineStore/WEB-INF:

Estas etiquetas las ha generado el Servlet Creation Wizard, donde la etiqueta <url-pattern> especifica el nombre del path por el que se acceder� al servlet. En este caso ser� http://localhost:8080/OnlineStore/access. (No es necesario tener el mismo <servlet-name> y <url-pattern>.)

web.xml contiene todos los descriptores de despliegue necesarios para desplegar servlets.

Lomboz crea dos p�ginas cuando creas un m�dulo web: index.jsp y error.jsp. Antes de ir m�s all� y mancharnos las manos con los servlets, veamos qu� directorios y ficheros ha generado Lomboz dentro de Web Modules, en este caso OnlineStore:

Entre los ficheros de inter�s est� web.xml, que es donde se sit�an los descriptores de despliegue, y targets.xml, que contiene informaci�n sobre el servidor en el que se desplegar� (en este caso JBOSS), como se puede ver en este fragmento de c�digo de targets.xml:

.�A�adir un M�todo de Negocio:

Antes de empezar a implementar nuestro servlet, a�adamos un m�todo de negocio m�s al bean StoreAccess llamado getAllItems() con la siguiente firma:

public java.util.ArrayList getAllItems()

Este m�todo devolver� todos los �tems que hay en MyStore llamando al m�todo finder de ItemsLocalHome llamado findAll:

Ahora empecemos a implementar los m�todos generados en el servlet.

.�Implementar el M�todo init():

Este m�todo es el responsable de inicializar servlets, por eso se le llama cuando un servlet se crea por primera vez y no se le llama de nuevo por cada petici�n de usuario.

Almacenaremos las referencias de nuestro bean StoreAccess en este m�todo, ya que todos los interfaces de cliente disponibles est�n expuestos en StoreAccess.

Por eso, primero crea un contexto. Luego obtiene una referencia a un objeto StoreAccess busc�ndo el bean StoreAccess mediante el API JNDI.

A�ade una variable storeAccessHome del tipo StoreAccessHome para almacenar la referencia obtenida apuntando al objeto.

Crea m�todos de ayuda para obtener el contexto, el objeto Home y asigna la referencia a storeAccessHome como se ve abajo:

Nota:
Tenemos que apuntar a este objeto porque est�mos accediento a un interface remoto. Si fuera un interface local, no necesitar�amos apuntar a este objeto.

.�Implementar los M�todos doGet() y doPost():

Para implementar estos dos m�todos crearemos un m�todo de ayuda para proporcionar la funcionalidad de �mbos. La solicitud se delega a este m�todo donde tiene lugar todo el procesamiento de la informaci�n. Un vez terminado el procesamiento de la l�gica de negocio se reenvia la solicitud a la vista apropiada para su visualizaci�n, por ejemplo una p�gina JSP.

Nota:
Esta aproximaci�n est� basada en el patr�n Front Controller, donde el controlador act�a como punto central de contacto para manejar solicitudes, delegar procesamientos de negocio, y la coordinaci�n con los componentes de reenv�o, pero estos componentes siguen siendo los responsables del control de la vista y de la navegaci�n. Este patr�n sugiere la centralizaci�n del manejo de todas las peticiones de esta forma, pero tambi�n permite que se utilicen diferentes m�todos controladores para diferentes tipos de solicitudes.
  • A�ade un m�todo llamado procesRequest con la siguiente firma:
    protected void processRequest (HttpServletRequest request, 
           HttpServletResponse response)
           throws ServletException, IOException 
    
  • Delega la solicitud desde doGet y doPost a este m�todo:
  • Ahora implementa el m�todo processRequest(). Este m�todo est� estructurado para comprobar el par�metro useraction dentro del objeto request. Si useraction est� vac�o construir� una URL para la pantalla de login y generar� la p�gina adecuada. Si useraction tiene alg�n valor lo examina. Si encuentra que la solicitud es mostrar �tems construye la URL para ello y genera una p�gina que muestra todos los �tems. Finalmente, si hay alg�n error se genera una p�gina especial para mostrarlos.
  • A�ade los siguientes atributos para construir las diferentes URLs:
  • Crea un objeto session y obt�n el valor del par�metro useraction del objeto request como se ve en el siguiente fragmento de c�digo:
  • Si useraction est� vac�o, como lo estar� inicialmente, construye la URL para la pantalla de login y genera la p�gina llamando al m�todo displayLoginScreen. Abajo tienes el c�digo de este m�todo:

    Este m�todo llama a displayLoginDataFields para generar los campos de datos para el env�o del formulario:

  • Una vez enviado el formulario, chequea para ver si la validaci�n es correcta llamando al m�todo loginUser, que llama al m�todo loginUser en el bean StoreAccess:
  • Una vez finalizado esto, como se muestra arriba en el m�todo processRequest, construye la URL para mostrar los items y los errores. Abajo puedes ver el c�digo del m�todo displayAllItems:

    Y abajo est� el c�digo del m�todo displayLoginErrorScreen:

Todos estos m�todos de ayuda se utilizan en el m�todo processRequest, que est� actuando como Controller y despacha la solicitud a la vista apropiada, como a la pantalla de login o a la pantalla que muestra los �tems.

Ya est� terminado nuestro servlet, la implementaci�n del resto de m�todos se deja como ejercicio.

.�Desplegar el Servlet AccessController:

  • Para poder desplegar el servlet ve a LombozJ2EE view.
  • Selecciona el m�dulo web OnlineStore pulsa con el bot�n derecho y selecciona Deploy module, aseg�rate de que el servidor se est� ejecutando:

El estado del despliegue aparece en la consola con mensajes como estos:

.�Probar el Servlet:

Ve a tu navegador y accede al servlet utilizando la siguiente URL:

http://localhost:8080/OnlineStore/access

Donde access es la url de mapeo que se asigno al crear el servlet utilizando el Servlet Creation Wizard, y OnlineStore es el m�dulo web, donde reside el servlet.

Se mostrar� la pantalla de login. Introduce ANDY como nombre de usuario y PASSWD como password. La siguiente pantalla ser� una lista de todos los �tems que hay en MyStore:

Ahora que ya hemos creado un servlet, vamos a acceder a este cat�logo mediante una p�gina JSP.

.�Crear una P�gina JSP:

  • Ve a Package Explorer y expande el nodo del m�dulo Web OnlineStore, pulsa con el bot�n derecho y aparecer� un men� desplegable.
  • En ese men� selecciona New > Lomboz JSP Wizard:
  • A�ade un fichero llamado showItems.jsp:
  • Pulsa Next > Menu, aparecer� el formulario Set JSP details, selecciona Select Add.. bajo la secci�n Beans, como se ve en la siguiente imagen. Aparecer� el men� para seleccionar beans, selecciona Add ID como itemData, Scope como page y Class como ItemData.
  • Pulsa OK. Ahora se podr�n ver los detalles JSP seleccionados despu�s de seleccionar las distintas opciones:
  • Pulsa Finish. Se crear� un nuevo fichero llamado showItems.jsp dentro del m�dulo web OnlineStore:

.�Modificar el m�todo processRequest en el Servlet AccessController:

Ahora, para poder mostrar los �tems de MyStore desde una p�gina JSP, tenemos que modificar el m�todo proccessRequest del servlet AccessController.

  • Modificia el String ITEMS_SCREEN a "/showItems.jsp":
  • comenta la llamda al m�todo displayAllItems de processRequest.
  • A�ade un atributo Session llamado itemsList con el valor listItems.
  • A�ade un Request Dispatcher y pas�le buildUrl como argumento, que tiene la URL de la p�gina showItems.jsp.
  • Reenvia esta solicitud al despachador para dibujar la p�gina JSP.

Abajo puedes ver un fragmento de c�digo del m�todo processRequest modificado:

.�A�adir HTML y Etiquetas JSP:

  • Primero importa los siguientes paquetes: au.com.tusc.cmp.*, java.util.ArrayList y java.util.Iterator.
  • A�ade el HTML y las etiquetas JSP necesarias para acceder a los �tmes de MyStore.
  • Obt�n itemsList del atributo session en el servlet AccessController.
  • Selecciona itemData como un atributo de p�gina mediante pageContext.
  • Ahora muestra los atributos de itemData usando las etiquetas de acceso a propiedades de JSP:

La p�gina JSP est� completa.

  • Ve al m�dulo web OnlineStore, pulsa con el bot�n derecho y selecciona Lomboz J2EE..
  • En el men� selecciona Check All JSP Syntax.
  • Mira si hay alg�n error.
  • Ve al nodo OnlineStore, pulsa con el bot�n derecho y selecciona Lomboz J2EE..
  • En el men� selecciona Add WEB-INF/lib JARs to the Classpath:

.�Desplegar el M�dulo OnlineStore:

  • Para desplegar ve a LombozJ2EE view.
  • Selecciona el m�dulo web OnlineStore, pulsa con el bot�n derecho y selecciona Deploy module, aseg�rate de que el servidor se est� ejecutando.

En la consola podr�s ver el estado del despliegue.

.�Probar la p�gina JSP:

Ve a tu navegador y accede al servlet utilizando la siguiente URL:

http://localhost:8080/OnlineStore/access

Donde access es la url de mapeo que se asigno al crear el servlet utilizando el Servlet Creation Wizard, y OnlineStore es el m�dulo web, donde reside el servlet.

Se mostrar� la pantalla de login. Introduce ANDY como nombre de usuario y PASSWD como password. La siguiente pantalla ser� una lista de todos los �tems que hay en MyStore:

Felicidades! has creado una p�gina JSP utilizando todos los componentes J2EE, que hab�as creado y se ha ejecutado con �xito.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO