La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Introducción a la programación J2EE 2014/15.

Presentaciones similares


Presentación del tema: "© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Introducción a la programación J2EE 2014/15."— Transcripción de la presentación:

1 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Introducción a la programación J2EE 2014/15

2 © 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

3 © 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.

4 © 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.

5 © 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

6 © 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.

7 © 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.

8 © 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

9 © 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.

10 © 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

11 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. El patrón MVC (Modelo Vista Controlador)

12 © 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-to- one…).

13 © 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.

14 © 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.

15 © 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.

16 © 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).

17 © 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.

18 © 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.

19 © 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.

20 © 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…).

21 © 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.

22 © 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.

23 © 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.

24 © 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.

25 © 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.

26 © 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.

27 © 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.

28 © 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:

29 © 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.

30 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. El patrón Observer Esquemáticamente

31 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. 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 Índice de contenidos

32 © 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.

33 © 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.

34 © 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.

35 © 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.

36 © 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…

37 © 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.

38 © 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…

39 © 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

40 © 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.

41 © 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.

42 © 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).

43 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Maven Esquema de la estructura de un fichero pom.xml

44 © 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.

45 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. 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 Índice de contenidos

46 © 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.

47 © 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.

48 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java Un ejemplo: package action.vehiculos; public class Coche { private int puertas; private String modelo; private String matricula; private boolean tieneSeguro; public Coche() { } public int getPuertas() { return puertas; } public void setPuertas(int puertas) { this.puertas = puertas; } Nos indica a qué conjunto de clases pertenece Inicio de la definición de la clase "Coche" Propiedades de la clase coche Constructor de la clase coche (vacío) Método para obtener el parámetro "puertas" Método para asignar valor al parámetro "puertas" Importante: Java es "case sensitive" por lo que no será lo mismo coche que Coche.

49 © 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

50 © 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.

51 © 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.

52 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java Ejemplo: package action.interfaces; public interface Vehiculo { public boolean tieneSeguro(); public void recorreDistancia(int numKilometros); public double getCombustibleRestante(); } Nos indica a qué conjunto de clases pertenece Inicio de la definición de la interfaz "Vehiculo" Definición de un método

53 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. 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.

54 © 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".

55 © 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){ }

56 © 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.

57 © 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.

58 © 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

59 © 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

60 © 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…

61 © 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.

62 © 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.

63 © 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

64 © 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.

65 © 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.

66 © 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…)

67 © 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.

68 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Reconstrucción del árbol de procesamiento con los datos introducidos por el usuario. Aplicación de los valores reconstruidos en el servidor. JSF (Java Server Faces) Procesamiento de eventos Validación de valores introducidos. Actualización del modelo.Invocar aplicación Renderizado de la respuesta

69 © 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.

70 © 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.

71 © 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.

72 © 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.

73 © 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.

74 © 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…

75 © 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.

76 © 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

77 © 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.

78 © 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.

79 © 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.

80 © 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.

81 © 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.

82 © 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.

83 © 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.

84 © 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.

85 © 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

86 © 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.

87 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. JMeter

88 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. JMeter Controlador simple: Gestiona el test

89 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. JMeter Sevidor proxy: Prepara el test

90 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. JMeter Muestreadores: Obtiene los datos del test

91 © 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

92 © 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.

93 © 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.

94 © 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.

95 © 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.

96 © 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.

97 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Birt: Editor de informes Árbol de orígenes de datos Editor de informes Propiedades de los elementos Árbol de elementos

98 © 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.

99 © 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.

100 © 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.

101 © 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.

102 © 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.

103 © 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.

104 © 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.

105 © 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.

106 © 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.

107 © 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.

108 © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Gracias por vuestra atención ¿Alguna pregunta?


Descargar ppt "© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Introducción a la programación J2EE 2014/15."

Presentaciones similares


Anuncios Google