miércoles, 19 de junio de 2013

Fin del curso. Videos. Creando una aplicación Java EE 6 completa paso a paso.

Este vídeo es una demostración de cómo emplear la plataforma Java EE 6 para desarrollar una aplicación web completa. Se trata de un catálogo de artículos cuyo nombre y precio están almacenados en una base de datos. Asimismo, las compras quedan registradas en la base de datos junto con los datos del cliente y la relación de artículos comprados. A mayores, se implementa un servicio web RESTful y un Timer para mostrar su funcionamiento. 

Muchos de los aspectos tratados en el vídeo han sido vistos en clase; algunos, en cambio, son novedosos. Trata de identificar todos ellos y de profundizar en el conocimiento de la plataforma.  A modo de repaso general podrías intentar implementar como proyecto final del curso una tienda similar. 

 

 

Estructura de la aplicación, con todos sus componentes enumerados.

 

01:35    Características de las aplicaciones empresariales
03:21    Qué se necesita para construir una aplicación empresarial
04:15    Arquitectura de una aplicación empresarial
06:47    Herramientas empleadas para construir la aplicación de ejemplo
09:20    Creación del proyecto mediante Maven
10:47    Activación de JSF en el servidor JBoss
11:38    Instalación de CDI (Contexts and Dependency Injection) y facelets
12:49    Se muestra en el árbol del proyecto el archivo beans.xml (creado al activar CDI) y faces-config.xml (creado al activar JSF y facelets)
14:34    Se añade una plantilla JSF al proyecto web
15:55    Se crea index.xhtml como faces composite
17:39    Se crea la clase "Product", que posteriormente será declarada como entidad
18:23   Creación del bean "ProductsBean" (etiquetado para inyectar dependencias como @named)
20:30    Edición de index.xhtml para incluir una tabla de artículos.
23:20    Activación de la persistencia.
25:19    Se declara la clase Product como entidad de persistencia y se crea un campo clave 'id'
26:21    Se crea el EJB ProductDao (DAO de Data Access Object) que se encargará de las operaciones de persistencia de la entidad Product.
30:23   Declaración de un atributo en "ProductsBean" en el que se inyectará una instancia del EJB ProductDao.
34:19    Se crea un EJB singleton "TestDataGenerator" para generar directamente algunos productos y así poder probar la aplicación sin tener que hacer inserciones previas en la base de datos.
38:20     Se añade una columna más a index.xhtml para albergar una imagen asociada al producto.
40:20     Se sustituye la consulta original para listar los productos por una consulta basada en la clase CriteriaBuilder
44:41    Se nos muestra cómo usar la herramienta Arquillian para hacer pruebas unitarias a los componentes EJB basadas en aserciones.
54:29    Se empieza a reestructurar el código de "ProductDao" para conseguir que haciendo clic en el precio del producto se pueda alternar entre una ordenación ascendente o descendente de la lista de productos por el campo de precio.
58:14    Se crea el link en el facelet index.xhtml para la ordenación ascendente/descendente por precio.
60:14    Se crea un parámetro de entrada al facelet index.xhtml para controlar el tipo de orden.
61:57    Creación de un nuevo facelet "details.xhtml" para visualizar los detalles del artículo cuando se hace clic en el nombre.
62:23    Se crea un nuevo bean para dar soporte a los detalles del producto llamado "ProductDetailsBean"
64:47    Se crea un parámetro de entrada al facelet details.xhtml que almacenará el id del artículo al que se ha hecho clic junto con un evento para que ProductDetailsBean busque los datos del producto en la base de datos en cuanto se reciba dicho parámetro.
66:16    Se crea el link en el nombre del producto en index.xhtml
69:27    Se empieza a preparar ProductDao para que sea capaz de filtrar las búsquedas de productos ya que se va a incluir un cuadro de texto en el facelet principal para hacer filtrados.
70:50    Se crea el cuadro de texto para el filtro en el facelet y un botón para activarlo.
73:50    Sustitución del botón por el empleo de AJAX
75:35    Se crea el EJB que dará soporte a la cesta de la compra, "Basket.java"
80:36    Se crea el facelet checkout.xml donde el cliente introducirá sus datos antes de confirmar la compra
81:23    Se introduce la clase "Customer" que será la entidad que dé soporte a los datos del cliente.
82:42    Se crea el EJB "OrderProcessor" que se encargará de las operaciones de persistencia relativas a la orden de compra.
83:12    Se crea la entidad "WebOrder" para dar soporte al pedido.
85:35    Se declaran referencias inyectadas a Customer y a la lista de productos del pedido en el EJB Basket
85:54    Se crea un evento en Basket para que sea lanzado cada vez que se confirma un pedido que incluya una referencia a WebOrder.
91:35    Se inician los procesos para validar los campos del cliente.
98:10    Se crear la clase OrderSMSNotifier con la que se nos explicará cómo tratar las tareas asíncronas
106:12   Creación de un Timer de ejemplo.
110:40   Creación de un servicio web RESTful para acceder a los productos de la base de datos.

 

jueves, 13 de junio de 2013

Diapositivas. Clase 14: módulo transversal sobre Gestión de la Innovación

Ejercicios de clase. Clase 13: creando servicios RESTful paso a paso sin asistentes.

Sigue estos dos tutoriales, para crear y consumir sevicios web RESTful sencillos pero, a diferencia del ejercicio anterior, sin valerse de los potentes asistentes de NetBeans, sino desarrollando el proceso paso a paso:

Ejercicios de clase. Clase 13: creando un servicio web RESTful para consultar una base de datos.

Aprovechando la base de datos bdChat creada en un ejercicio anterior, crea un servicio RESTful mediante la opción del asistente de NetBeans para crear servicios RESTful a partir de bases de datos.


Para exponer la base de datos al servicio web sigue estos pasos:




1. Sigue los pasos habituales para crear una aplicación web. No es necesario emplear JSF.

2. Vete a File>New File... y en el apartado Web Services selecciona RESTful Web Services from Database.

3. Añade la única tabla que habíamos creado en la base de datos bdChat (POST) y deja toda la configuración por defecto tal y como se va presentando en el asistente.


Para probar el servicio una vez creado, sigue los siguientes pasos:


1. Hacer clic con el botón secundario del ratón sobre el nombre del proyecto y seleccionar "Test RESTful Web Services"

2. En el cuadro de diálogo emergente cambia la selección a Web Test Client in Project y haz clic en el botón Browse...

3. Marca ServiciosRESTful y pulsa en OK.

4. Se abrirá automáticamente una web de testeo en nuestro navegador donde podemos probar distintas operaciones. Por ejemplo, en la figura se ha hecho un GET sin argumentos para obtener todas las entradas de la tabla del chat; en este caso, sólo tiene una entrada con Id 152 como podemos observar en el código XML de respuesta.




Ejercicios de clase. Clase 12: creando una operación de servicio web SOAP simple

Una vez implementado el servicio se puede probar directamente desde NetBeans, aunque no tengamos un cliente todavía.

En el testeo podemos comprobar que el tipo y el valor de los argumenos y resultados es el correcto, además de todo el código XML de los mensajes SOAP de solicitud y respuesta.

La aplicación cliente invoca el servicio para calcular el cuadrado de un valor constante.

 

 Crea un servicio dentro de un proyecto web que implemente la operación cuadrado() para elevar al cuadrado el número real que se le pase como argumento. Despliégalo en el servidor GlassFish y después crea una aplicación de escritorio que consuma el servicio actuando como cliente. El cliente simplemente mostrará en la consola el resultado de aplicar la operación del servicio a un valor constante. Para realizar el ejercicio puedes apoyarte en la referencia visual paso a paso que te proporcionan estos dos tutoriales de ejemplo: el primero, para crear el servicio web y el segundo para construir la aplicación cliente.





Diapositivas. Clase 12: servicios web


Ejercicios de clase. Clase 12: definición y uso de estereotipos

Los estereotipos, básicamente, nos permiten agrupar conjuntos de anotaciones bajo otra anotación única. En la definición del estereotipo hay que indicar qué anotaciones lo constituyen y luego sólo hay que anotar las clases con el nuevo estereotipo como si, en realidad, estuviesen anotadas con todas y cada una de las anotaciones que conforman el estereotipo.

 

1. El asistente de NetBeans para crear nuevos archivos permite definir rápidamente un estereotipo.

2. Al nombre del estereotipo se van a vincular todas las anotaciones que se incluyan en la definición del mismo. La declaración de estereotipo siempre va precedida de la anotación @Stereotype.

3. Los beans anotados con el nuevo estereotipo tiene una apariencia más limpia, al sustituir todas las anotaciones por un único estereotipo.