Download CursoJ2EE_2014

Document related concepts
no text concepts found
Transcript
Introducción a la programación J2EE
2014/15
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA (Hibernate / EclipseLink)
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué es Fundeweb?
• Framework de desarrollo de aplicaciones J2EE diseñado
por MNCS y con inicio en el año 2008.
• Facilita el proceso de desarrollo de software.
• Abstrae a los programadores de las dependencias de las
tecnologías que se usan.
• Provee de un conjunto de facilidades que adaptan el
desarrollo a las características del Framework.
• Abstrae de la base de datos sobre la que se trabaja.
• Automatiza las tareas de despliegue de proyectos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué es Fundeweb?
• Automatiza el despliegue en servidores de desarrollo y/o
producción.
• Provee ayudas para el control de calidad y supervisión de
código.
• En resumen:
•
Fundeweb es un framework de desarrollo de aplicaciones
que facilita a los programadores la gestión y despliegue de
proyectos.
•
Incorpora un conjunto de tecnologías suficientes para el
desarrollo de aplicaciones J2EE.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Modelos de programación
• Aplicaciones J2EE.
•
Uso del patrón MVC.
• Aplicaciones de ServiciosWeb / REST.
•
•
Capa de servicios.
Sin interfaz gráfica.
• Aplicaciones de EJB.
•
•
Capa de servicios.
Sin interfaz gráfica.
• Aplicaciones J2EE + ServiciosWeb + EJB
•
Combinación de anteriores.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrones de diseño J2EE
• ¿Por qué utilizar patrones de diseño?
•
Hacen que las aplicaciones sean fácilmente extensibles.
•
Mejoran la escalabilidad de la aplicación (rendimento).
•
Mejoran la fiabilidad y la depuración de las aplicaciones.
•
Hacen las aplicaciones más claras y uniformes.
• Existen un gran número de patrones dependiendo de qué
capa de la aplicación queremos tratar.
• Deben tenerse en cuenta en la fase de análisis de la
aplicación para mejorar el diseño final.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrones de diseño J2EE
• Patrones en Fundeweb
•
MVC: Modelo Vista Controlador
•
Singleton
•
Factoría Abstracta
•
Adapter
•
Observer
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón MVC (Modelo Vista Controlador)
• Patrón de programación de aplicaciones.
• División de la aplicación en bloques:
•
Modelo: Bloque encargado de la persistencia de datos.
•
Control: Bloque encargado de la gestión del flujo de la
aplicación.
•
Vista: Bloque encargado de la capa de presentación de la
aplicación.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón MVC (Modelo Vista Controlador)
POJs
(Plain Old Java Object)
Html, xhtml
Clases Java
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón MVC (Modelo Vista Controlador)
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El modelo
• Formado por clases sin lógica de negocio llamadas POJO.
• Mapea la estructura de las tablas de BBDD en clases
Java.
• Sirve de intermediario entre el programador y la BBDD,
facilitando el acceso y manejo de los datos.
• Permite leer, persistir y actualizar los datos de manera
sencilla para el programador.
• Define, no sólo la estructura de las tablas, sino las
relaciones entre ellas (Pk, Fk, one-to-one, many-toone…).
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El modelo
• Adapta al “estilo Java” la gestión de los datos que maneja.
• Requiere un motor de persistencia que sea capaz de
traducir esta capa a sentencias SQL.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: La vista
• Gestiona la capa visual de la aplicación, también
denominada "Front-End".
• Es el enlace entre el usuario y la aplicación.
• Especialmente sensibles a ataques de seguridad.
• Debe estar modelada de una manera que fomente la
usabilidad y accesibilidad.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El controlador
• Gestiona toda la lógica de la aplicación.
• Ejerce de enlace entre la vista y el modelo.
• Encargado de las tareas de:
•
Validación de datos.
•
Flujo de navegación.
•
Gestión de errores.
•
Gestión de autenticación y autorización.
•
Gestión de la persistencia.
•
Conexión con servicios externos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El controlador
• Validación de datos:
•
Comprueba que los datos introducidos son acordes a lo
que se espera (tipo de dato, tamaño…).
•
Evita ejecución de comandos maliciosos introducidos en la
capa de la vista. Ej: Inyección SQL.
•
Informa al usuario de los errores producidos por la
aplicación y/o los datos de entrada (Mensajes informativos,
no de debug).
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El controlador
• Flujo de navegación:
•
Fija las condiciones para navegar a una determinada vista
u otra.
•
Permite fijar reglas complejas para calcular a qué vista se
va a navegar tras una determinad acción.
•
Fija las vistas a las que hay que navegar en caso de error,
falta de permisos, etc.
•
Impide el acceso a vistas no autorizadas para el usuario
actual.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El controlador
• Gestión de errores:
•
Detecta situaciones de error y detiene el flujo de la
aplicación.
•
Reacciona ante errores producidos en la aplicación
dejándola lo más estable posible.
•
Debe proporcionar mensajes suficientes y adecuados tanto
a nivel de usuario como de depuración.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El controlador
• Autenticación y autorización:
•
Autenticación es el proceso por el cual se comprueba que
el usuario es quien dice ser.
•
Autorización es el proceso por el cual se restringe el
acceso del usuario a las áreas que tenga permitidas.
•
Es crítico que ambos pasos no presenten problemas de
seguridad.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El controlador
• Autenticación y autorización:
•
Asegura que las credenciales introducidas por el usuario
son válidas para nuestro sistema.
•
Carga el perfil del usuario definiendo a qué áreas de la
aplicación puede acceder, a parte de otros datos de interés
de su perfil (nombre completo, edad…).
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El controlador
Gestión de la persistencia
Gestiona que los datos se persistan de manera correcta.
Asegura que en caso de error, los datos persistidos son
coherentes.
Deshace cambios en caso que sea necesario.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Patrón MVC: El controlador
• Conexión con servicios externos
•
Permite la conexión con:
• Servicios Web externos.
• EJB remotos.
•
Gestiona la autenticación y autorización con los servicios
externos.
•
Expone servicios propios para que otras aplicaciones
puedan acceder a ellos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón Singleton
• Este patron asegura que sólo habrá una única instancia
del objeto requerido.
• Evita tener instancias duplicadas en memoria.
• Optimiza el uso de los recursos del sistema.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón Factoría Abstracta
•
Contexto: Tenemos objetos de la misma familia pero con
diferencias estructurales.
•
Este patrón nos permite crear una estructura general para
crear cualquier objeto de la misma familia.
•
Estructura:
•
Clase cliente: Quien invoca a la factoría.
•
Factoría abstracta: Interfaz que define los métodos de las
factorías concretas.
•
Factoría concreta: Familia de objetos. Instancia concreta que se
encarga de crear el objeto deseado.
•
Objeto abstracto: Interfaz que define los objetos de una familia.
•
Objeto concreto: Implementación de un objeto abstracto.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón Factoría Abstracta
• Este patrón es utilizado por Fundeweb para soportar el
mecanismo de autenticación múltiple.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón Adapter
• Consiste en transformar la interfaz de un componente en
otra que soporte una determinada clase cliente.
• En ocasiones no podemos modificar los métodos que
requiere una clase cliente.
• Es necesario "adaptar" dicha funcionalidad para que
cliente y proveedor de servicio se entiendan.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón Adapter
• Visto con un ejemplo:
•
•
Supongamos que tenemos un cliente que requiere los
métodos:
•
Suma(op1,op2)
•
Resta(op1,op2)
La clase que sirve estas operaciones, en cambio sólo tiene
este método:
•
RealizaOperacion(op1,op2,operación)
• Como podemos ver en este ejemplo cliente y servidor no
podrían comunicarse pese a que el servidor puede
realizar las operaciones que requiere el cliente.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón Adapter
• La solución que propone el patrón Adapter es crear una
clase intermedia que exponga la interfaz que requiere el
cliente.
• Esta clase en su implementación llamará al servidor como
él espera.
• Así pues:
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón Observer
• Necesario cuando los cambios de estado de un elemento
deben ser contemplado por un conjunto de los mismos.
• Muy extendidos debido a las múltiples interdependencias
de estados entre componentes.
• Un objecto se registra como "listener" de un objeto
concreto.
• Cuando el objeto padre modifica su estado, envía una
notificación a todos sus "listener" para que estos actúen
como deban.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
El patrón Observer
• Esquemáticamente
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse
• IDE de desarrollo de aplicaciones.
• Basado en un core y un paquete de extensión o plugins.
• Eclipse se puede adaptar mediante la instalación de
plugins a diferentes lenguajes de programación.
• Concentra toda la funcionalidad necesaria para que los
programadores desarrollen sus proyectos.
• Contiene un gestor de plugins que permite instalar nuevos
o actualizar los existentes.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• Maven:
•
Permite la gestión de las librerías que requiere el proyecto.
•
Especifica cuando se deben cargar las librerías:
•
En Compliación.
•
En runtime.
•
En test.
•
No cargar: existente en el servidor de antemano.
•
Gestiona la construcción de proyectos.
•
Requiere tener acceso a un repositorio Maven donde
buscar las dependencias del proyecto.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• Subclipse:
•
Cliente de Subversion para eclipse.
•
Permite comparaciones entre ficheros locales y del servidor
SVN.
•
Ayuda a la resolución de conflictos entre ficheros
desincronizados.
•
Visualiza de manera rápida las diferencias entre nuestro
contenido local y el del repositorio.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• Ant:
•
Nos permite ejecutar tareas concretas para manejar
nuestros proyectos.
•
Puede interactuar con todos los componentes de nuestro
entorno:
•
•
Código fuente
•
Servidores
•
Test
Creadas tareas Ant en Fundeweb para automatizar tareas
de despliegue y empaquetados de proyectos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
•
TestNG:
•
Framework de testing para Java.
•
Basado en Junit (realización de pruebas unitarias).
•
Permite paso de parámetros.
•
Nos permite comprobar que nuestro código hace lo que debe.
•
Permite Cubrir todo tipo de pruebas:
•
Unitarias.
•
Funcionales.
•
End-to-end.
•
Integración.
•
Etc…
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• CheckStyle:
•
Permite chequear si el código programado tiene defectos de
forma.
•
Comprueba:
•
Que se programa de acuerdo a estándares.
•
Que el código producido sea eficiente.
•
Que los comentarios sean correctos y adecuados.
•
Que el código sea legible para otros desarrolladores.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• FindBugs:
•
•
•
Chequea el código generado para prevenir errores en
tiempo de ejecución.
Para ello hace uso de patrones de error buscando en el
código las ocurrencias de los mismos.
Algunos ejemplos de comprobaciones:
•
•
•
•
•
Null pointers.
Clases no serializables cuando el contexto requiere que se
serialicen.
Posibles divisiones por cero.
Comparaciones entre clases que no sobrescriben equals.
Etc…
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Maven
• Maven es una herramienta que automatiza la construcción
de y pruebas de proyectos.
• Provee un conjunto de estándares de construcción, un
modelo de repositorio de artefactos y un motor de
software que administra y describe los proyectos.
• Permite el empaquetado y despliegue de proyectos
abstrayendo a los programadores del proceso.
• Combinado con tareas Ant, cubre todas las necesidades
para la gestión de proyectos en Fundeweb.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Maven
• Las partes del ciclo de vida principal del proyecto Maven
son:
•
•
•
•
•
Compile: Genera los ficheros .class compilando los fuentes
.java
Test: Ejecuta los test automáticos existentes, abortando el
proceso si alguno de ellos falla.
Package: Genera el fichero .jar con los .class compilados
Install: Copia el fichero .jar a un directorio para que
dispongamos de él en caso de ser necesario.
Deploy: Copia el fichero .jar a un servidor remoto,
poniéndolo disponible para cualquier proyecto maven con
acceso a ese servidor remoto.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Maven
• POM (Project Object Model)
•
Es el fichero o ficheros que permite describe cómo es un
proyecto.
•
Describe la meta-información del proyecto.
•
Describe las librerías y dependencias que requiere.
•
Describe dónde y cómo usar dichas librerías.
• Esta descripción se encuentra en los ficheros pom.xml.
• Los pom.xml en fundeweb están distribuidos en un pom
general y otro dentro de cada módulo del proyecto
(ejb,web y ear).
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Maven
• Esquema de la estructura de un fichero pom.xml
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Maven
• Arquetipo:
•
Es una plantilla personalizada para agrupar un conjunto de
tecnologías.
•
Permite crear una estructura de proyecto acorde a una
tecnología concreta.
•
Sirve para fijar estándares estructurales a nivel de
desarrollo de proyectos.
•
Permite establecer dependencias fijas y librerías.
•
Fudeweb dispone de dos arquetipos creados: Proyectos
J2EE y Proyectos de Servicios Web.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Lenguaje de programación orientado a objetos.
• Diseñado para tener las mínimas dependencias con una
implementación concreta.
• El objetivo es programar para cualquier dispositivo
independientemente de su arquitectura.
• Las aplicaciones java se ejecutan sobre una máquina
virtual (JVM) instalada en cada dispositivo.
• Actualmente Java es uno de los lenguajes de
programación más extendidos cubriendo el ámbito: Web,
móvil y de aplicaciones de escritorio.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Clases:
•
Define todas las propiedades concretas de una entidad que
queremos modelar.
•
Agrupa toda la funcionalidad (métodos) que podemos
ejecutar sobre esa entidad.
•
Define relaciones entre entidades diferentes.
•
Han de tener un método especial llamado "constructor"
encargado de inicializar las nuevas clases.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Un ejemplo:
package action.vehiculos;
Nos indica a qué conjunto de clases pertenece
public class Coche { Inicio de la definición de la clase "Coche"
private int puertas;
private String modelo;
Propiedades de la clase coche
private String matricula;
private boolean tieneSeguro;
public Coche() { Constructor de la clase coche (vacío)
}
public int getPuertas() { Método para obtener el parámetro "puertas"
return puertas;
}
public void setPuertas(int puertas) { Método para asignar valor al parámetro
this.puertas = puertas;
"puertas"
}
Importante: Java es "case sensitive" por lo que no será lo mismo coche que Coche.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Objetos:
•
•
•
Un objeto es la instancia de una clase en un momento
determinado. Es decir una fotografía de una clase en un
instante dado.
En ese momento, la clase tendrá unos datos y un estado
concreto.
En el ejemplo anterior, una instancia de la clase coche
podría ser:
•
•
•
•
puertas = 4
modelo = Seat
matrícula = 0000 XXX
tieneSeguro = True
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Implementación:
•
Existe un tipo especial de clases llamadas "interfaz" que
describen una funcionalidad determinada.
•
Las clases pueden decidir abordar dicha funcionalidad. A
este proceso se le llama "implementación"
•
La clase está obligada a cumplir con toda la funcionalidad
que expone la interfaz.
•
Una clase puede implementar más de una interfaz a la vez.
•
Para indicar que una clase implementa una interfaz se
especifica poniendo "implements NombreInterfaz" en el
encabezado de la clase.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Interfaz:
•
Una interfaz es una clase que sólo contiene la definición de
los métodos.
•
No contiene ninguna propiedad del tipo de objeto que
pretende definir.
•
Sólo se incluye el encabezado de los métodos.
•
Una interfaz pretende definir un "índice" de métodos que
deben implementar las clases que quieran ser consideradas
acorde a esa interfaz.
•
Una interfaz representa algo más genérico que un objeto
concreto.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Ejemplo:
package action.interfaces;
Nos indica a qué conjunto de clases pertenece
public interface Vehiculo { Inicio de la definición de la interfaz "Vehiculo"
public boolean tieneSeguro();
Definición de un método
public void recorreDistancia(int numKilometros);
public double getCombustibleRestante();
}
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Definición de un método
Definición de un método
Java
• Herencia:
•
Cuando una clase hereda de otra, obtiene todas sus
propiedades y métodos.
•
La clase "hija" puede:
•
Definir nuevas propiedades y métodos propios.
•
Redefinir los métodos heredados de la clase "padre".
•
Una clase sólo puede heredar de una única clase padre.
Java no posee herencia múltiple.
•
Cuando una clase hereda de otra se indica poniendo
"extends NombrePadre" en el encabezado de la clase hija.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Herencia:
•
•
•
•
•
Cuando una clase quiere sobrescribir un método del padre,
se marca el nuevo método con la anotación @Override.
El método de la clase hija ha de tener la misma definición
que el de la clase padre.
En caso de no sobrescribirse un método, se ejecutará el de
la clase padre.
Si una clase padre quiere obligar a que los hijos
implementen un método, lo marca con la palabra "abstract"
y no implementa su contenido.
En este caso la clase padre ha de marcarse también como
"abstract".
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Ejemplo:
//Clase padre
public abstract class VehiculoMotor {
public abstract void echarGasolina(double litros);
}
//Clase hija
public class Coche extends VehiculoMotor{
public Coche() {
}
@Override
public void echarGasolina(double litros){
}
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Referencias:
•
Cuando creamos un objeto java internamente se está
creando una referencia a ese objeto.
•
Si asignamos ese objeto creado a otra variable, lo que
realmente se está copiando es la referencia.
•
Si modificamos un objeto, esa modificación afecta a todas
las variables que lo referencien.
•
Si queremos copiarlo, debemos clonarlo en un objeto nuevo
y que la nueva variable apunte a él.
•
Mientras que un objeto tenga alguna referencia, no se
liberará de memoria su contenido.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java
• Recolector de basura:
•
•
•
•
•
Es un mecanismo de Java para gestionar de manera
automática la memoria.
Abstrae a los programadores del proceso de reserva y
liberación de memoria.
Cuando crea un objeto reserva memoria en función de sus
características y la amplia cuando sea necesario.
Cuando detecta que un objeto no tiene ninguna referencia
(nadie apunta a él) lo elimina liberando la memoria
ocupada.
Gran parte de los problemas de memoria se producen por
acumulación de objetos que ya no se usan, pero existe aún
alguna referencia en el código hacia ellos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JPA (Java Persistence Api)
• Especificación Java para definir un estándar de mapeo de
datos BBDD a objetos java, junto con su gestión.
• JPA es sólo el estándar, el resultado de su aplicación
depende de la implementación concreta que se utilice.
• Todas las implementaciones cumplen el estándar pero
tienen sus peculiaridades a la hora de interactuar con la
aplicación.
• Los componentes principales son:
•
EntityManager
•
POJO's
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JPA (Java Persistence Api)
•
Los POJO's (Plain Old Java Object)
•
Objetos java que representan "filas" de una tabla BBDD.
•
Encapsulan la estructura y dependencias de las tablas BBDD.
•
Permiten interactuar desde Java directamente con datos de la
BBDD sin necesidad de sentencias SQL.
•
Abstraen a los programadores de las particularidades de la
BBDD sobre la que se base la aplicación.
•
Incluye el tratamiento de restricciones de los datos:
•
Columnas no nulas
•
Tamaño máximo
•
Etc…
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JPA (Java Persistence Api)
• Los POJO's:
•
Contienen la definición de las claves primarias.
•
No se deben completar con lógica de la aplicación ya que
su finalidad es el mapeo de tablas a objetos Java.
•
Permite la introducción de atributos que no existen en la
tabla (que no se persisten) con la anotación @Transient.
•
El EntityManager es el encargado de crearlos a partir del
contenido de las tablas de BBDD.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JPA (Java Persistence Api)
• EntityManager:
•
Gestiona el contexto de persistencia.
•
Es el encargado de:
•
•
Recuperar y persistir datos.
•
Buscar instancias determinadas.
•
Gestionar las transacciones.
•
Validar los datos a ser persistidos.
•
Revertir cambios.
•
Refrescar objetos con contenido de la BBDD.
Debe haber sólo uno en toda la aplicación.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Framework de desarrollo de aplicaciones web en Java.
• Formado por:
•
•
Api e implementación de referencia para componentes UI.
•
Maneja el estado.
•
Realiza validación.
•
Controla eventos.
•
Provee navegación.
•
Tratamiento de datos.
Librería de etiquetas JSF para dibujar los componentes
dentro de nuestra página web.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Aplicación JSF:
•
Se ejecuta dentro de un contenedor Servlet Java.
•
Contiene JavaBeans (objetos del modelo que gestionan la
aplicación).
•
Oyentes de eventos.
•
Páginas (xhtml)
•
Clases de utilidad para acceder a funcionalidad avanzada
(acceso a BBDD).
•
Librerías de etiquetas.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Estructura básica:
•
Objetos del modelo, que mapean las tablas BBDD.
•
Controlador/es de la aplicación, que gestionan el flujo de la
aplicación y las acciones a realizar según los datos de
entrada.
•
Parte visual de la aplicación, que se encarga de mostrar al
usuario los componentes e interactuar con la parte del
servidor enviando los datos introducidos.
•
Ficheros de configuración, que configuran todos los
componentes de la aplicación (BBDD, interceptores,
librerías, módulos, flujos de páginas, seguridad…)
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Ciclo de vida JSF:
1. Reconstrucción del árbol de procesamiento con los datos
introducidos por el usuario.
2. Aplicación de los valores reconstruidos en el servidor.
3. Procesamiento de eventos.
4. Validación de valores introducidos.
5. Actualización del modelo.
6. Invocar aplicación (calcular respuesta, redirección, etc…).
7. Renderizado de la respuesta al cliente.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
los valores reconstruidos
enintroducidos
el servidor. por el usuario.
Reconstrucción Aplicación
del árbol dedeprocesamiento
con los datos
Procesamiento
de
Validacióneventos
de valores introducidos.
Invocar aplicación
Actualización del modelo.
Renderizado de la respuesta
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
•
Reconstrucción del árbol de procesamiento
•
Tras un submit se restaura el árbol de contenido.
•
El controlador examina el contenido y crea los
componentes que se requieran por el contenido recibido.
•
El controlador examina el contenido recibido para saber si
es una nueva vista o está en una ya creada de antemano.
•
El controlador almacena los ID de las vistas que ha recibido
para saber qué objetos debe inicializar y cuales recargar.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Aplicación de los valores reconstruidos en el servidor
•
Cada componente creado en el paso anterior obtiene su
valor en base a lo recibido en el paso anterior.
•
Los valores recibidos se convierten a los esperados por sus
respectivos componentes.
•
Si un componente es marcado como inmediato, se asigna el
valor y se pasa a la etapa de validación antes de tratar el
resto de componentes.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Procesamiento de eventos.
•
En este punto han podido lanzarse errores de conversión de
tipos o de validación en caso de valores inmediatos.
•
Estos eventos se capturan y se le indican al controlador.
•
El controlador redirigirá el flujo hacia un estado seguro
devolviendo un evento de error en caso de proceder.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Validación de valores introducidos.
•
Se procede a comprobar si los valores introducidos cumplen
las restricciones definidas.
•
Estos eventos se capturan y se le indican al controlador.
•
El controlador redirigirá el flujo hacia un estado seguro
devolviendo un evento de error en caso de proceder.
•
Se ejecutarán los validadores estándar y los definidos por el
usuario en el código fuente.
•
En caso de no cumplirse alguna restricción se lanzará un
evento de error y se redirigirá el flujo.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Actualización del modelo.
•
Una vez validados los datos se procede a actualizar el
modelo.
•
Se copian los datos procesados en las clases Java que los
representa pasando la información a la parte de control de
la aplicación.
•
En este punto los valores copiados son válidos desde el
punto de vista de la corrección, aunque pueden ser
inválidos para la lógica de negocio.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Invocar aplicación.
•
Con los valores introducidos procedemos a invocar a la
lógica de negocio de la aplicación.
•
Tras procesar los datos pasaremos a generar una
respuesta o bien a un estado de error.
•
En este punto se persistirán los datos, calculará la
redirección, se harán las llamadas a servicios externos,
etc…
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JSF (Java Server Faces)
• Renderizado de la respuesta al cliente.
•
Se genera la página de respuesta al cliente en base al
resultado obtenido en la fase anterior.
•
Se tratará el árbol de respuesta para mostrar los elementos
que así sean necesarios como sus valores.
•
En caso de haberse producido un error deberá notificarse al
cliente en esta redirección.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
EJB
• Enterprise Java Beans (EJB) es una plataforma que nos
permite modularizar lógica de nuestras aplicaciones.
• Es una porción de código alojada en un contenedor EJB y
accesible por las aplicaciones que así lo requieran.
• Su misión es la de deslocalizar operaciones comunes a
varias aplicaciones, favoreciendo la reutilización.
• Las aplicaciones sólo deben localizarlo en el contenedor
EJB para poder tener acceso a la funcionalidad que
provee.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
EJB: Funcionamiento
• Basado fundamentalmente en el contenedor EJB.
• Este contenedor almacena todas las clases y objetos
necesarios para el funcionamiento de los EJB que
contiene.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
EJB: Funcionamiento
• El proceso que describe la figura anterior es el siguiente:
•
El cliente inicia la solicitud de ejecución de un método.
•
El contenedor EJB comprueba si el cliente cumple con los
permisos para ejecutar dicho método.
•
El contenedor EJB busca los EJB u objetos adicionales que
se necesiten para ejecutar el método.
•
Se realiza la ejecución y se devuelve el resultado al cliente.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
EJB: Tipos
• Los EJB's están formados por al menos dos
componentes:
•
Interface: Puede ser Local o remota y es la encargada de
exponer los métodos que implementa el EJB.
•
POJO: Es la implementación real del EJB.
• La interfaz es el punto de enlace entre la aplicación cliente
y el EJB.
• Sin interfaz no se podrá acceder de manera remota a la
funcionalidad del EJB.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
EJB:Tipos
• Existen tres tipos de EJB:
•
Session Beans
•
Message-Driven Beans
•
Entites Beans
• El primer tipo englobará los EJB que proveerán servicios
independientes a nuestra aplicación.
• El segundo tipo son similares al anterior pero se usan
para procesos que requieran ser síncronos.
• El tercer tipo representa a los POJO's de la capa de
persistencia vistos en JPA.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
EJB:Tipos
• De los tres tipos anteriores los más importantes son los
Session Beans que pueden ser:
•
Stateless: Sin estado, no almacenan ningún valor y en cada
ejecución se deberán inicializar los valores que se quieran
usar.
•
Statefull: Guarda estado entre ejecuciones por lo que
podremos recuperar datos pasados y operar con ellos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
EJB: Usos frecuentes
• Existen principalmente dos usos en aplicaciones
Fundeweb:
•
EJB internos a la aplicación.
•
•
Proporciona una funcionalidad definida en nuestra aplicación
que queremos que sea accesible desde varios componentes.
EJB externos a la aplicación.
•
Proporciona una funcionalidad general que queremos exponer
para que sea usado por nuestra aplicación o por cualquier
otra que así lo desee.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
EJB: Ventajas
• Reduce la cantidad de memoria necesaria para ejecutar
determinada lógica de negocio.
• Favorece la reutilización de código.
• Mejora la legibilidad del proyecto.
• Abstrae de la creación y eliminación de los objetos de
control.
• Siempre podemos externalizar una determinada
implementación si así lo quisieramos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JMeter
• JMeter es una herramienta de software libre proporcionada
por Apache para la generación de test de carga.
• Esta desarrollado en Java al 100% lo que permite una fácil
modificación y extensión.
• Presenta una interfaz clara con multitud de elementos para
medir el rendimiento del sistema.
• Permite simular la navegación de un usuario a través de un
flujo de datos.
• Incorpora un servidor proxy para capturar las peticiones
que queremos incluir posteriormente en el test.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JMeter
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JMeter
Controlador simple: Gestiona el test
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JMeter
Sevidor proxy: Prepara el test
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
JMeter
Muestreadores: Obtiene los datos del test
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
•
Introducción
•
Modelos de programación:
•
•
Patrones de diseño
Componentes de Fundeweb:
•
Eclipse
•
Maven
•
Java
•
JPA ( Hibernate / EclipseLink )
•
JSF
•
EJB
•
Test de carga con JMeter
•
Generación de Informes:
•
Framework Birt
•
Servicio Birtum
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt
• Generador de informes basado en eclipse.
• Compuesto por dos componentes principales:
•
•
Editor de Informes.
Generador de Informes (BirtUM)
• Pretende abarcar el mayor rango de componentes
disponibles a la hora de realizar un informe.
• Centrado en permitir diseñar fácilmente informes de
manera gráfica.
• Objetivo: Descargar a los desarrolladores del trabajo de
plasmar en un informe las especificaciones detalladas del
cliente.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
• Herramienta integrada dentro del IDE Eclipse
• Estructura enfocada al diseño de informes de manera
visual.
• Provee diferentes maneras de acceder a los datos:
•
Directamente sobre BBDD.
•
A través de csv o XML.
•
Vía WebServices.
•
…
• Define una manera clara de filtrar los datos que queremos
tratar en un momento determinado.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
• DataSources
•
Un DataSource es la propia fuente de datos.
•
Definimos su tipo y su manera de conectar.
•
Nos permite acceder a la información que necesita el
informe.
• DataSet
•
Es un subconjunto de los datos que provee el DataSource.
•
Sobre ellos podemos realizar operaciones en el informe.
•
Podemos definir tantos DataSet's como subconjuntos
queramos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
• DataSet
•
Permite crear datos adicionales.
•
Permite calcular valores en base a los datos incluidos en el.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
• Parámetros:
•
Birt permite que se definan parámetros de entrada en el
informe.
•
Estos parámetros pueden tener varias funciones:
•
•
Configurar aspectos generales del informe.
•
Proveer el propio origen de los datos en los que se basará el
DataSource (por ejemplo en informes a partir de XML).
Los parámetros son recogidos por el motor de informes y se
procesan antes de la generación del mismo.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
Árbol de orígenes de datos
Árbol de elementos
Editor de informes
Propiedades de los elementos
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
• Árbol de orígenes de datos:
•
•
Contiene todos los componentes que aportan datos para
generar el informe:
•
DataSource: Origen real de los datos.
•
DataSet: Agrupación de datos.
•
DataCubes: Agrupación cruzada de datos.
•
Parámetros del informe: Parámetros de entrada del informe.
•
Variables: Variables que se usarán durante la generación del
informe.
A partir de los componentes dados de alta en esta vista, se
podrán rellenar las estructuras de datos del informe.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
• Editor de informes
•
Vista encargada de permitirnos diseñar el informe.
•
Permite el diseño visual o directamente sobre código.
•
Pose una vista "Master Page" para definir la estructura
general de todas las páginas.
•
Permite introducir scripts a ejecutar según determinados
eventos.
•
Permite editar visualmente el informe.
•
Permite visualizar una vista previa del resultado, siempre
que sea posible.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
• Árbol de elementos
•
Añade a la información del árbol de orígenes de datos la
estructura del informe.
•
Muestra de una manera clara y ordenada cómo se "pintan"
los componentes del informe.
•
Establece las dependencias entre elementos.
•
Nos permite visualizar los scripts o librerías añadidas al
informe.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Birt: Editor de informes
• Propiedades de los elementos
•
•
•
•
Esta vista permite ajustar parámetros de cada uno de los
elementos del informe.
Nos permite asignar componentes gráficos a orígenes de
datos.
Permite realizar filtrados
Permite establecer condiciones sobre los componentes.
•
•
•
Ej: Decidir si se pinta o no dependiendo de un valor.
Permite modificar el aspecto de los componentes.
Cada componente, además de la configuración general,
añade su configuración propia.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
BirtUM
•
Componente de ATICA para la generación de informes Birt.
•
Expone dos interfaces:
•
Informes BBDD
•
Informes XML
•
Ambas soportan paso de parámetros al servidor.
•
Los informes BBDD devuelven el informe de dos maneras:
•
•
URL
•
Array bytes.
Los informes XML sólo devuelven el informe como Array de
bytes.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
BirtUM
• La generación de informes XML puede devolver dos
posibles resultados:
•
PDF
•
XLS (multi hoja)
• Permite depurar fácilmente con SoapUI la generación de
informes desde un cliente.
• Importante configurar timeouts adecuados para los test.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Ejercicio Birt
• Haciendo uso del editor de informet Birt realizar el diseño
de un informe acorde la plantilla proporcionada.
•
Usar el fichero xml proporcionado como entrada de datos.
•
Diseñar con Birt el informe.
•
Previsualizar el informe en PDF.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Ejercicio Birt
•
Pasos a seguir:
•
Crear un proyecto Birt y un fichero de informes vacío.
•
Definir la fuente de datos (fichero XML).
•
Modificar el "master page" para definir encabezado y pie de
página.
•
Crear DataSet que agrupe todos los libros con su conteido.
•
Crear una tabla que muestre ese DataSet.
•
Crear un DataSet que contenga el precio de los libros y dos
columnas calculadas:
•
•
•
Libros con precio superiro a 10€
Libros con precio inferior a 10€
Ojo: Hacer uso de propiedades calculadas y filtrado.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Ejercicio Birt
• Pasos a seguir:
•
Crear Grid para contener el texto necesario.
•
Insertar gráfico de barras y definir condiciones para que
cuente los libros que hay por autor.
•
Probar que el informe se imprime correctamente.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Resumen
• Fundeweb es un framework compuesto por un conjunto
de tecnologías que persigue facilitar el desarrollo de
aplicaciones web.
• Provee de los mecanismos necesarios para abarcar
cualquier proyecto web (EJB, WebServices, JSF…)
• Permite crear componentes genéricos para uso entre
grupos de trabajo.
• Coordina todas las librerías mediante Maven haciendo
uso de los repositorios disponibles.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Gracias por vuestra atención
¿Alguna pregunta?
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.