Manual de Desarrollo de Aplicaciones J2EE



Documentos relacionados
1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

JAVA EE 5. Arquitectura, conceptos y ejemplos.

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013

Curso de Spring Framework

Requisitos técnicos para la instalación. Arquitectura Hardware Arquitectura Software. Instrucciones de instalación GONG-R

GUÍA TÉCNICA. Desarrollo de Sistemas de Información la plataforma Business Intellingence Pentaho

Curso de JavaServer Faces

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

TFC J2EE. Aplicación Web para la gestión de facturación de una empresa de cerrajería. Sara Gutiérrez Melero ITIG Junio de 2012

Ley Orgánica de Protección de Datos

Capitulo 5. Implementación del sistema MDM

Análisis y diseño del sistema CAPÍTULO 3


Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

ARQUITECTUA DE M2M MIGUEL ÁLVAREZ Y CLARA HERRERO. Documento inicial

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA

- MANUAL TÉCNICO - Implantación de software de Marketing Online

SIEWEB. La intranet corporativa de SIE

Administración Local Soluciones

Guía de Instalación para clientes de WebAdmin

UNIVERSIDAD DE OVIEDO

FUNCIONAMIENTO: FUNCIONALIDAD

Capas de la arquitectura de referencia

Administrador de Seguridad Manual de Usuario Fecha de actualización:

GUÍA TÉCNICA. Desarrollo de Proyectos en Plataforma Liferay en el Gobierno de Extremadura

Capítulo III. Análisis y diseño.

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

FUJITSU Java Development Framework

Guía de instalación de la carpeta Datos de IslaWin

Introducción a la Firma Electrónica en MIDAS

Seven ERP Guía De Referencia - Imágenes

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO

PROCEDIMIENTO ESPECÍFICO. Código G Edición 0

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Guía de Instalación. Glpi

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEB CON DOCUMENTUM

Configuración factura electrónica. construsyc instasyc

Gestión de la Configuración

1. Definición. Open Source. Escalable. Alto desempeño. Arquitectura Modular. Producto de licencia de código abierto sin coste adicional.

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

Edición de Ofertas Excel Manual de Usuario

Apéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario

Programación páginas web. Servidor (PHP)

WEBSERVICES CON FIRMA DIGITAL Versión 1.2

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

Anexo 4 Documento de Arquitectura

Servicio de Alta, Baja, Modificación y Consulta de usuarios Medusa

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

Instrucciones de instalación de IBM SPSS Modeler (licencia de usuario autorizado)

Plataforma de expediente

Documento Técnico Gerardo Barcia Jonathan Trujillo María Alejandra Uribe

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos

Manual de NetBeans y XAMPP

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

PRESENTACIÓN DEL PRODUCTO

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Documentación Técnica Conector

CREACIÓN DE WEBSERVICES

Capitulo III. Diseño del Sistema.

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

SENTINEL REMOTE CONTROL (S.R.C)

Solución corporativa para la gestión descentralizada de metadatos: Cliente Web de administración de metadatos

Microsoft Access proporciona dos métodos para crear una Base de datos.

BackflipSD Modelo de Diseño

Capítulo 7. Implementación del Sistema

Centro de Competencias de Integración. Portal del paciente

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

Visión General de GXportal. Última actualización: 2009

SISTEMA DE GESTION DOCUMENTAL

Curso de Java POO: Programación orientada a objetos

UNIT4 CRM. Información de usuario. Release notes. v a v UNIT Ref. acv9010u.docx

Autenticación Centralizada

PROGRAMACIÓN PÁGINAS WEB CON PHP

LiLa Portal Guía para profesores

Novedades. Introducción. Potencia

Gestión Documental PREPARACION DEL ENTORNO DE DESARROLLO

INSTALACIÓN A3ERP INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

OpenProdoc. ECM Open Source

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

Lineamientos para el desarrollo de sistemas

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

Workflows? Sí, cuántos quiere?

19. Packages o paquetes

Microsoft SQL Server Conceptos.

Manual de Integrador.NET

Guía Rápida de Inicio

Alfresco permite su integración y personalización en sistemas de gestión documental para implementar funcionalidades específicas

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

MACROPROCESO GESTIÓN TECNOLÓGICA

Transcripción:

Manual de Desarrollo de Aplicaciones J2EE

Manual de Desarrollo de Aplicaciones J2EE Versión 1.5 publicado 26-Junio-2006 Copyright Gobierno del Principado de Asturias 2005

Tabla de contenidos 1. Presentación de openfwpa... 1 Introducción... 1 Visión General de openfwpa... 2 Empaquetamiento de openfwpa... 4 Requerimientos técnicos y de sistema... 5 Lista completa de funcionalidades... 5 Lista de componentes de terceras partes... 6 Arquitectura de referencia... 8 Desarrollo de aplicaciones... 10 Estructura de directorios... 10 Compilación y despliegue del sistema... 11 Pruebas unitarias... 11 Instalación de la aplicación de ejemplo (Sample App)... 11 2. Arquitectura Modelo -Vista- Controlador con openfwpa... 13 MVC... 13 Desarrollo de la Vista... 14 Aspecto corporativo de las aplicaciones del Principado de Asturias... 14 Cascading Style Sheets (CSS)... 14 Desarrollo del Controlador... 16 Declaración de Actions... 16 Jerarquía de Actions... 17 Action Forms... 29 Desarrollo de lógica de negocio... 31 Service Locator... 31 Session EJBs... 31 Value Objects... 31 Excepciones... 32 Utilidades... 33 Otras clases de utilidad... 33 PrincastMessageFmtter... 33 PrincastUtils... 33 ParameterCaster... 33 ServletPathUtils... 33 DateDecorator... 34 PrincastPathResolver... 34 PrincastOSCacheInterceptor... 35 Providers... 35 3. Implementación de la Arquitectura de Referencia con openfwpa... 37 Inversión de Control en la Arquitectura de Referencia... 37 Introducción al manejo de la Arquitectura con Spring... 37 Estableciendo el Datasource... 38 Enlazando con los DAOs... 39 Enlazando con los Managers... 40 Gestión de transacciones... 41 Enlazado con los Delegates... 42 Enlazado con las Actions... 42 Acceso directo al ApplicationContext... 43 BeanDoc para obtener la gráfica de arquitectura... 43 Plugin SpringIDE para Eclipse... 43 4. Componentes para acceso a datos... 45 Acceso a Bases de Datos Relacionales... 45 iv

Manual de Desarrollo de Aplicaciones J2EE El patrón DAO... 45 Loggeo de las Excepciones en los DAO... 47 Listas clave/valor... 47 LookupPropertyBean... 49 Providers... 49 Generadores de Secuencia... 49 Pools de conexiones... 50 5. Construccion de informes con openfwpa... 51 Generación de Informes... 51 Creación de los diseños XML.... 51 Clases en el openfwpa para la renderización de informes.... 57 6. Operaciones... 61 Sistema de Inicialización y Arranque... 61 Declaración de objetos inicializables... 61 Desarrollo de objetos inicializables... 62 Arranque de aplicaciones web... 63 Arranque manual... 63 Sistema de Configuración de Aplicaciones... 63 Implementación de objetos configurables... 64 Plugins de Configuración... 66 Logging... 72 Log4J. Componentes... 72 Configuración... 74 Componentes del openfwpa para Logging.... 75 Pista de auditoría... 76 Pista de Rendimiento... 77 Ficheros de Configuración... 77 web.xml... 77 struts-config.xml... 79 Filtros web... 83 Filtros del openfwpa. PrincastFilter.... 83 Configuración del filtro GZIPFilter... 85 Configuración del filtro SecurityFilter... 85 Filtro de navegación... 85 Filtro de activación... 86 Filtros de Activación... 87 Consola de gestión... 88 7. Seguridad en aplicaciones con openfwpa... 90 Seguridad... 90 Autentificación básica... 90 Autentificación basada en formulario... 90 Autentificación basada en el Filtro de Seguridad del openfwpa... 90 Single Sign On... 103 8. Integración de Sistemas... 104 Tecnologías de Integración... 104 XML Genérico: Configuración... 104 9. Pruebas... 106 Pruebas unitarias... 106 Jerarquía de clases para las pruebas unitarias... 106 Convenciones a seguir... 107 Ejecución de las pruebas unitarias... 107 Consultando los resultados de los tests... 107 Pruebas unitarias de objetos que acceden a bases de datos.... 108 Pruebas unitarias de Spring Beans... 112 v

Manual de Desarrollo de Aplicaciones J2EE Pruebas unitarias de objetos Configurables... 112 Pruebas unitarias en contenedor... 113 Pruebas unitarias de informes... 114 Más información sobre la implementación de pruebas unitarias... 115 Pruebas de Rendimiento... 116 Modo de Prueba de Rendimiento... 116 vi

Lista de figuras 1.1. Estructura de openfwpa... 2 1.2. Arquitectura de Referencia... 8 1.3. Estructura de directorios del proyecto Sample App.... 10 2.1. Modelo Vista Controlador... 13 2.2. Ciclo petición-acción-jsp de Struts... 13 2.3. Estructura de capas de las aplicaciones web con openfwpa... 14 2.4. Aspecto corporativo del portal princast.es... 14 2.5. Aspecto de la aplicación de ejemplo (Sample App)... 14 2.6. Jerarquía de Actions... 17 2.7. Maquinaria de Estados de PrincastAction... 18 2.8. Almacenamiento de la Action... 21 2.9. Esquema de la PrincastDispatchAction del ejemplo... 25 2.10. Esquema de las Actions para listados... 28 2.11. Estructura de la capa Modelo... 31 2.12. Diagrama de Value Objects... 32 2.13. Jerarquía de Excepciones... 32 3.1. Ficheros de configuración de Beans... 37 3.2. Ejemplo de gráfica generada con BeanDoc... 43 3.3. Spring IDE para visualizar ficheros de Spring... 44 4.1. Ejemplo de necesidad de lookup... 49 4.2. Navegación de una relación en BD con un LookupPropertyBean... 49 5.1. Proceso de generación de informes... 51 6.1. Estructura del sistema de configuración... 64 6.2. Jerarquía de Plugins... 68 6.3. Estados del Sistema de Logging... 74 7.1. Esquema del sistema de autenticación... 91 9.1. Set de pruebas unitarias disponibles... 106 9.2. Autowiring de DAOs y DataSources... 110 vii

Lista de tablas 1.1. Componentes necesarios para la ejecución del openfwpa... 7 1.2. Capas de la Arquitectura de Referencia de openfwpa... 9 viii

Capítulo 1. Presentación de openfwpa Introducción openfwpa es el framework de desarrollo libre para sistemas de administración electrónica y gobierno electrónico desarrollado por el Gobierno del Principado de Asturias. Está basado en la tecnología J2EE y su objetivo es facilitar el diseño, implementación, implantación y mantenimiento de las aplicaciones. openfwpa es Software Libre / Open Source y está publicado bajo una doble licencia: LGPL 3.0 (o superior) y EUPL 1.0 (o superior). La Licencia Pública General Menor del proyecto GNU (LGPL) es una de las licencias desarrolladas y promovidas por la Free Software Foundation (FSF), y da permisos de reproducción, distribución, modificación y redistribución con copyleft, aunque no se impide la utilización de componentes privativos dentro del sistema. La Licencia Pública de la Unión Europea (EUPL) es una licencia de software libre con copyleft creada y apoyada por la Unión Europea para el impulso del Software Libre en las administraciones públicas. Los dos grandes objetivos del framework son: Simplificación y homogeneización del proceso de desarrollo de aplicaciones. Para ello openfwpa proporciona una arquitectura reutilizable y un conjunto de herramientas y librerías que implementan algunos de los componentes más habituales, y de escritura más tediosa, en aplicaciones web. Todo ello debiera redundar en un menor coste total de propiedad (TCO) de las soluciones desarrolladas sobre openfwpa. Definición de estándares de desarrollo, calidad y aceptación. Se trata de un conjunto de directrices, de obligado cumplimiento, para exigir y garantizar unos niveles mínimos de calidad en las aplicaciones J2EE [1]. Estos estándares son internos al Principado de Asturias, y son por tanto aplicables solamente dentro de aquellos proyectos desarrollados dentro del Principado de Asturias. El openfwpa posee las siguientes características: Uso de software libre. Hay una serie de proyectos del mundo del software libre que poseen una excelente calidad, lo que los habilita para participar en aplicaciones de misión crítica. Uso de patrones de diseño. El openfwpa promueve el uso de patrones de diseño, en dos sentidos importantes. En primer lugar, el framework está diseñado y construido sobre patrones. Por otro lado, las aplicaciones que se desarrollan sobre el framework hacen uso asimismo de patrones. Entre otros, las aplicaciones desarrolladas sobre openfwpa siguen una arquitectura Modelo2, el estándar en aplicaciones web (se trata de una adaptación del famoso MVC). Uso de estándares. En el diseño del openfwpa se ha promovido la utilización e incorporación de estándares (por ejemplo, XHTML [4] + CSS [14], etc.). El uso tanto de patrones de diseño como de estándares proporciona importantes ventajas en cuanto a la adaptabilidad y longevidad de las aplicaciones que los utilizan, al ser más fácilmente mantenidas, extendidas o reutilizadas. Aspecto corporativo. Otra característica importante es que las aplicaciones deben integrarse con el resto de aplicaciones del Principado de Asturias, tanto a nivel funcional como de aspecto (look & feel). El openfwpa incluye un conjunto de plantillas y componentes para construir la capa de presentación de acuerdo a las guías de estilo corporativo del Principado de Asturias. En la versión publicada en portal, estas plantillas pueden modificarse de acuerdo a las necesidades de cada proyecto. Sin embargo, los proyectos internos han de seguir las directrices de estilo corporativo. Integración de aplicaciones. La nueva funcionalidad, añadida al openfwpa en las últimas versiones, facilita la integración de las aplicaciones con otros sistemas del Principado de Asturias (sistema de seguridad, comunicaciones, bases de datos corporativas, sistemas de seguridad, sistemas de CRM, etc.). 1

Presentación de openfwpa Esta funcionalidad solo está disponible para los proyectos internos, al carecer de interés en aplicaciones desarrolladas fuera de la organización. Ciclo de vida. Las aplicaciones poseen un ciclo de vida más allá de su desarrollo y puesta en producción. Éstas han de ser configuradas, migradas y operadas en los diversos entornos. Por ejemplo, el framework proporciona piezas con una funcionalidad importante que facilita el soporte a la operación. Los componentes del framework están preparados para ser gestionados en caliente desde una consola de operaciones, y ofrece componentes para aspectos críticos de operación (como gestión adecuada de logging, pistas de auditoría, estadísticas de rendimiento y uso). En general, estos aspectos se incorporan al framework de manera transparente a las aplicaciones. Asimismo, se ofrece (opcionalmente) una serie de APIs avanzadas que permiten a las aplicaciones publicar funcionalidad en la consola de operaciones. Visión General de openfwpa El framework de desarrollo J2EE del Principado de Asturias posee la siguiente estructura. Dentro de cada elemento se muestran los artefactos más relevantes: Figura 1.1. Estructura de openfwpa A continuación, se muestran en más detalle los diversos elementos que lo componen. Aceptación Entorno de desarrollo Las aplicaciones desarrolladas con el framework para uso interno del Principado de Asturias deben pasar por una serie de controles de calidad. A tal efecto, se han desarrollado una serie de guías que deben seguirse para el desarrollo de estas aplicaciones. Dentro de esta guía de aceptación se define una arquitectura reutilizable que debieran seguir las aplicaciones. El framework de desarrollo es agnóstico en cuanto al entorno de desarrollo. Éste debiera poseer los siguientes elementos: Entorno Integrado de desarrollo. Ofrece un entorno donde los desarrolladores pueden desarrollar, compilar, depurar y probar el software en construcción. Herramientas de despliegue. Permite el despliegue de las aplicaciones en los distintos entornos (máquina local, máquinas del entorno de desarrollo, etc.). Diseño de informes. Permite la construcción de informes en distintos formatos. Gestión de la configuración. Permite la gestión del cambio de los distintos elementos del sistema (código fuente, scripts de construcción, pruebas, etc.). Se trata de un sistema de control de versiones. Entorno de integración (semi) continua. El entorno de desarrollo debiera ofrecer funcionalidad avanzada de integración continua o semi-continua. Los proyectos arrancados dentro del Principado de Asturias deben poseer las herramientas definidas en el puesto estándar. Estas 2

Presentación de openfwpa herramientas deben instalarse y configurarse de manera estándar (igual para todas las estaciones de trabajo). Software Libre Sistema de tiempo de ejecución Tras la definición de los requisitos del framework en términos de herramientas necesarias para el entorno de desarrollo, directrices de aceptación y diseño del runtime del framework, se realizó la selección de distintos componentes del mundo del código abierto o gratuito para su inclusión. Por ejemplo, se seleccionó Eclipse como Entorno Integrado de Desarrollo, o CVS para el Control de Versiones. Como elementos más relevantes, destaca el uso de Eclipse, Spring o Struts. El sistema de tiempo de ejecución es un conjunto de ficheros.jar que se despliegan con cada una de las aplicaciones del framework. Este sistema sigue las directrices de construcción de aplicaciones, y ofrece componentes reutilizables y una base extensible para el desarrollo basado fuertemente en patrones de diseño. De esta manera, las aplicaciones se reducen en tamaño y complejidad, teniendo todas la misma estructura interna (basada en una adaptación del patrón MVC llamada Modelo2). El sistema de tiempo de ejecución emplea diversos componentes del mundo de código abierto, usando lo mejor de cada uno de ellos e integrándolos. Esta aproximación ha facilitado enormemente el desarrollo, y emplea internamente dos frameworks Struts y Spring. Módulos de integración Seguridad Operación Los sistemas a construir dentro del ámbito de la Administración del Principado de Asturias presentan una fuerte componente de integración con otros sistemas. Se han escrito adaptadores para los distintos sistemas corporativos existentes dentro de la organización, de manera que se simplifica y homogeneíza enormemente las tareas de integración siguiendo un patrón proxy. Estos módulos solo están disponibles para aquellos proyectos realizados para el Principado de Asturias. Es crucial que las aplicaciones desarrolladas posean un nivel de seguridad suficiente, y que esta seguridad pueda gestionarse centralmente desde los sistemas corporativos de seguridad. A este fin, se ha desarrollado toda una infraestructura de seguridad sobre estándares (X509, Java Authentication and Authorization Service, Web Services, etc.). Desde el punto de vista de la aplicación, se trata de realizar una parametrización. Toda esta infraestructura es extensible. Dado que determinados proyectos se desarrollan por equipos externos sin acceso a la infraestructura del Principado de Asturias, se incluye un simulador de autenticación, de manera que determinados escenarios pueden ejecutarse empleando un documento XML en local como repositorio de credenciales. Asimismo, esta infraestructura es extensible, de manera que pueden desarrollarse adaptadores a otros repositorios (LDAP, etc) en proyectos ajenos al Principado de Asturias. Las aplicaciones han de ser operadas en los distintos entornos, de manera que el personal de operaciones pueda mantener la 3

Presentación de openfwpa aplicación en funcionamiento. El framework posee una serie de herramientas que facilitan esta operación, como pueden ser: Filtro de compresión. El framework proporciona un filtro de compresión de las comunicaciones, de manera que se minimice la comunicación entre el servidor y el cliente. Manual de Operaciones. En este documento se describen las operaciones que pueden realizarse sobre la aplicación desplegada. Configuración. El framework posee un subsistema flexible de configuración, de manera que las aplicaciones se aislan de los repositorios de configuración. Auditoría. Se proporciona funcionalidad para la generación de pistas de auditoría. Gestión de logs. El framework proporciona un potente sistema de logs, de manera que (por configuración) puede enviarse los mensajes a una BD, a ficheros de texto, XML, HTML, etc. Esta configuración puede cambiarse en caliente. Consola de Administración. Las aplicaciones desarrolladas con el framework poseen una consola de administración web para la modificación de los distintos componentes. Métricas de uso. Pueden habilitarse diversas métricas de uso de la aplicación, de manera transparente para las aplicaciones. Documentación Con el framework se entrega toda la documentación necesaria para el desarrollo y operación de aplicaciones. Se entregan una aplicación de ejemplo (con sus pruebas de rendimiento correspondientes) y una aplicación en blanco, con la estructura de directorios creada. Soporte Empaquetamiento de openfwpa Existe un sitio de soporte para la resolución de dudas, incidencias, etc. Este sitio web de soporte permite comunicar al equipo de mantenimiento del framework bugs detectados, etc. de manera que se pueda liberar una nueva entrega (release) con los defectos corregidos. A tal efecto, se crea un usuario para cada equipo de desarrollo que demande soporte, para que puedan realizar un seguimiento consistente de las incidencias que puedan surgir. El conjunto completo de entregables que puede acompaña al openfwpa es el que sigue. En algunas distribuciones, pueden no estar disponibles determinados elementos: Manual del desarrollador. (Este documento). Manual de operaciones. Manual de configuración de la seguridad. Directrices de aceptación de aplicaciones J2EE del Principado de Asturias. 4

Presentación de openfwpa Herramientas del desarrollador. Guía de estilo del lenguaje Java Guía de estilo del lenguaje JSP. openfwpa. (binarios) Aplicación de ejemplo: SampleApp (binarios y fuentes) Aplicación en blanco: App Blank (binarios y fuentes) Requerimientos técnicos y de sistema Para la correcta ejecución de las aplicaciones que utilizan el openfwpa es necesario disponer de los siguientes elementos: Librerías de soporte (Ver Lista de componentes de terceras partes ) Servidor de aplicaciones Oracle10G OC4J (versión 10.1.2) con Java JRE 1.4.2 Determinadas partes de la aplicación requieren además, los siguientes componentes: a. Seguridad: Certificado Raíz de la Fabrica Nacional de Moneda y Timbre (FNMT) Fichero de certificados (cacerts) en la máquina virtual Lista completa de funcionalidades Las funcionalidades soportadas por el openfwpa son las siguientes: Extensión del framework Struts [8] con una colección propia de clases Action. Acceso a datos a través de objetos DAO. Automatización de la carga de consultas SQL desde ficheros de propiedades. Plantillas (Tiles) para la creación rápida de páginas JSP. Hojas de estilos con el look & feel del Principado de Asturias. Facilidades para la generación de informes en formato PDF. Etiquetas JSP para la inclusión de listas, barras de navegación, fechas y calendarios en las páginas web. Integración de formularios (ActionForm) con entidades (ValueObject) de la aplicación. Utilidades para la gestión de tablas de datos en formato {atributo, valor. Facilidades para la obtención de listas paginadas como resultado de consultas. Herramienta para la generación automática de menús. 5

Presentación de openfwpa Infraestructura para pruebas unitarias. Infraestructura para pruebas unitarias en contenedor. Integración de una consola de monitorización y gestión basada en el estándar JMX [19]. Jerarquía propia de excepciones. Monitorización y control integrado de errores Sistema de configuración centralizado. Sistema de inicialización y arranque configurable. Componentes para el acceso a pools de conexiones. Sistema de logging con varios niveles. Gestión de logging desde la consola de administración. Monitor de rendimiento. Sistema de monitorización para las clases Action. Generación de estadísticas de acceso a las aplicaciones. Generación de estadísticas de excepciones no controladas en las aplicaciones. Componente para monitorizar el estado del sistema sobre el que corre la aplicación. Infraestructura para filtros gestionados en caliente. Filtro para compresión GZIP. Inicialización de componentes configurables. Filtro de seguridad para integración con el Módulo de Autenticación del SAC del Principado de Asturias. Conexión con backends del Principado de Asturias (Claves, Terceros, Siebel, Módulo Común de SMS). Lista de componentes de terceras partes El framework de desarrollo del Principado de Asturias incorpora componentes de terceras partes. Las aplicaciones que se construyan sobre el framework han de utilizar las versiones enumeradas en 6

Fundación Apache. Struts Menu sourceforge.net struts-menu.jar 2.2 Librería para struts-menu.tld facilitar el Presentación struts-menu-el.tld de openfwpa desarrollo de menús en aplicaciones web. Tabla Apache 1.1. Ant Componentes ASF necesarios para la ejecución 1.6.1del openfwpa Herramienta para la automatización de las operaciones de compilación, construcción y despliegue de proyectos. Java SDK Sun Microsystems 1.3.1_11-1.4.x Conjunto de herramientas y librerías Java. Oracle AS9i Oracle oc4.jar admin.jar 9.0.3.0.0-10.1.2 Servidor de aplicaciones de Oracle. JMX Reference Sun Microsystems Implementation Base de Datos Oraclae jmxri.jar jmxgrinder.jar jmxtools.jar 1.0 Librería para la gestión dinámica de aplicaciones Java (sólo es necesaria con OC4J 9.0.3). Oracle 8.1.7.3 Sistema de Gestión de Bases de Datos. Jasper Reports sourceforge.net jasperreports.jar 0.6.0 Herramienta para la generación de informes en diferentes formatos: PDF, HTML, XLS, CSV y XML. JSSE Sun Microsystems jsse.jar 1.0.3_03 Proporciona soporte para la conexión bajo protocolo SSL. JAAS Sun Microsystems jaas.jar 1.0 Proporciona soporte para autentificación y autorización. JCE Sun Microsystems jce.jar local_policy.jar sunjce_provider.jar 1.2.2 Proporciona soporte para uso de protocolos de US_export_policy.jar encriptación. JDBC Sun Microsystems jdbc2_0-stdext.jar 2.0 Extensiones JDBC para la compilación con versión 1.3.1_11 de la JDK. Spring Spring Framework spring.jar 1.2.6 Framework IoC. Java Monitor API JAMon API JAMon.jar 1.1.2 Librería de monitorización y medición de tiempos Direct Web Get Ahead dwr.jar 1.0 Librería de AJAX Remoting (DWR) 7

Presentación de openfwpa Arquitectura de referencia El framework de desarrollo del Principado de Asturias hace un uso intensivo de Patrones de Diseño. A fin de lograr una homogeneidad efectiva en las aplicaciones realizadas en el marco del Principado de Asturias, se propone una Arquitectura de Referencia que describe la arquitectura de las aplicaciones desarrolladas con el openfwpa. El uso de esta arquitectura de referencia es obligatorio, al ser parte de las Directrices de Aceptación de aplicaciones. Una arquitectura de referencia es una descripción de los elementos de los que se compone una aplicación, y de las relaciones entre estos elementos. Manejar arquitecturas de referencia es tremendamente beneficioso, ya que permite: Homogeneizar las aplicaciones. Al usar la arquitectura de referencia, las aplicaciones son estructuralmente iguales, cambiando sólo los elementos en concreto, pero no la forma que tienen de relacionarse. Esto tiene un impacto directo en el esfuerzo en desarrollo y mantenimiento. Extender las mejores prácticas y tecnologías. La arquitectura de referencia ha de mantenerse, de manera que se vayan introduciendo cambios basados en cambios tecnológicos o en el establecimiento de mejores prácticas. La arquitectura de referencia J2EE propuesta se basa en el patrón Modelo2 sobre una disposición en capas, y puede verse en el siguiente diagrama: Figura 1.2. Arquitectura de Referencia El concepto de separación en capas está claramente definido en esta arquitectura de referencia: La comunicación entre capas sólo puede existir a través de a) interfaces, b) Objetos de Datos (Value Objects). Los elementos de la arquitectura de referencia pueden verse en la siguiente tabla: 8

Presentación de openfwpa Tabla 1.2. Capas de la Arquitectura de Referencia de openfwpa Elemento Descripción Patrones relevantes Capa de Acceso a Datos Capa de Objetos de Datos Capa de Negocio Capa de Controlador Capa de Vista Filtro web Datasource Gestión de sesión Sistema externo Encapsula toda la lógica de acceso a datos. Asimismo, encapsula los accesos a sistemas remotos. Representa las entidades del Value Object modelo, como objetos JavaBean y sin lógica de negocio. Implementa toda la lógica de negocio, implementada como procesos sobre la capa de Acceso a Datos. Oculta toda la comlejidad a la capa superior. Transforma eventos en la vista a eventos en el modelo, y viceversa. Presenta el modelo al usuario, y comunica sus acciones al controlador Data Access Object Proxy Value Object Absctract Factory Business Delegate Façade MVC Command MVC Permiten filtrar las peticiones de Chain Of Responsibility los clientes, a fin de propor-cionar autenticación, asertos a toda la aplicación, compresión de datos, etc. Gestiona pools de conexiones, a fin de no crear una conexión por cliente a Base de Datos u otros repositorios. Gestiona la sesión de los clientes, de manera que desconecta a los inactivos. Representa cualquier sistema a integrar a través de un interfaz bien definido. Dado el número de librerías que implementan el patrón MVC, tiene todo el sentido usar alguna de ellas en vez de implementarlo para un proyecto. El openfwpa da soporte para este patrón. Caso de ser una aplicación J2EE no construida sobre el openfwpa, debiera hacer uso del framework Struts. Una vez fijada la arquitectura de referencia, se ha acudido al mundo del software libre buscando implementaciones de los elementos reseñados en ella. Por ejemplo, para la capa del controlador se ha optado por usar una implementación de un proyecto del software libre en vez de proceder a realizar una implementación propia. Asimismo, el openfwpa ofrece soporte en la implementación de todas las capas, desde acceso a datos hasta presentación. En general, prácticamente todas las librerías utilizadas por el openfwpa provienen de la Apache Software Foundation (ASF) [5] y también pueden ser consideradas como estándares de facto en sus respectivas áreas. Las librerías proporcionadas por la ASF, son de código libre y abierto, están mantenidas por un nutrido grupo de desarrolladores de todo el mundo y son muy habituales en proyectos de desarrollo (principalmente Java) de cualquier índole. 9

Presentación de openfwpa Desarrollo de aplicaciones Antes de comenzar el desarrollo de una aplicación web con el openfwpa, es importante tener en cuenta las directrices y recomendaciones que se indican en este apartado. Estructura de directorios Las aplicaciones definirán una estructura de directorios siguiendo la plantilla: build, target: Contendrá los.class generados para el proyecto. db: Contendrá los scripts de creación de la base de datos o la propia base de datos. En caso de darse soporte a más de una base de datos o más de una versión, ha de crearse un directorio para cada una de las BD. config: Contendrá los ficheros necesarios para la creación del fichero EAR necesario para desplegar la aplicación en el contenedor J2EE (como por ejemplo application.xml), así como los ficheros con la información necesaria para la configuración de recursos que necesitará la aplicación (por ejemplo DataSources. En este caso podría incluirse un fichero data-sources.xml con la información a añadir al fichero data-soruces.xml del contenedor J2EE para la definición de los mismos). src: Este directorio contendrá dos subdirectorios: java: Contendrá los ficheros de código fuente Java y de recursos de la aplicación, y el fichero build.xml. webapp: pages: Contendrá el resto de ficheros de la aplicación: páginas HTML, JSP, imágenes, hojas de estilo CSS, etc. WEB-INF: Contendrá los ficheros de configuración XML (web.xml, struts-config.xml, validation.xml, etc.), DTDs y TLDs. lib: Contendrá las librerías que será necesario distribuir con la aplicación, puesto que no estarán incluidas en el contenedor J2EE. ejbapp: META-INF: Contendrá el fichero de MANIFEST.MF, así como los ficheros necesarios para el despliegue de EJBs en caso de que sean utilizados en la aplicación. Estos ficheros sería ejbjar.xml, orion-ejb-jar.xml, y cualquier otro fichero que fuera necesario. dist: Se trata de un directorio temporal empleado para la generación de los jars, ears, necesarios para el proyecto. javadoc: Contiene el javadoc generado con el target de Ant incluido al efecto. Como ejemplo se muestra la estructura de la aplicación de ejemplo (Sample App): Figura 1.3. Estructura de directorios del proyecto Sample App. 10

Presentación de openfwpa Compilación y despliegue del sistema Para la compilación y el despliegue de aplicaciones se utilizará la herramienta Ant [10] (http:// ant.apache.org). Ant es una herramienta de construcción basada en Java similar al clásico Make. Los ficheros de configuración de Ant están escritos en XML y tienen por nombre build.xml. Cada uno de ellos contiene un project y al menos un target (el default, que será el que se ejecutará si no se especifica ningún otro en la llamada a Ant). Cada uno de ellos será el encargado de la compilación, empaquetado, despliegue en el contenedor J2EE, etc. de la aplicación. Con las aplicaciones en blanco (Blank App) de ejemplo (Sample App) de distribuye un fichero build.xml. Los targets más relevantes son los siguientes: all (default): Realiza lo mismo que make-ear. compile: Compila los ficheros fuente Java de la aplicación. javadoc: Genera la documentación Javadoc. test.unit: Lanza las pruebas unitarias utilizando JUnit [11]. Busca en los paquetes de código fuente las clases cuyo nombre termine en Test (según el convenio de nombrado de JUnit), ejecuta las pruebas y genera informes con los resultados de las mismas en formato HTML. make-war: Genera un fichero WAR (Web Application Archive) con la aplicación, necesario para la posterior generación del fichero EAR. make-ear: Genera un fichero EAR (Enterprise Application Archive) con la aplicación, que podrá ser desplegado en un contenedor J2EE. deploy.localhost: Despliega la aplicación en el contenedor J2EE instalado en la máquina local. undeploy.localhost: Desinstala la aplicación del contenedor J2EE instalado en la máquina local. deploy.desa: Despliega la aplicación en el contenedor J2EE instalado en la máquina cuya IP está contenida en la variable desa.test.host. undeploy.desa: Desinstala la aplicación del contenedor J2EE instalado en la máquina cuya IP está contenida en la variable desa.test.host. new: Crea un nuevo proyecto a partir del proyecto actual, para ello es necesario pasarle el nombre del proyecto nuevo mediante el parámetro -Dapp.name=proyectoNuevo. Esto copiará el proyecto actual, al mismo nivel de directorio y sustituye el nombre del proyecto en los ficheros de configuración que sea posible. Pruebas unitarias Es muy recomendable la implementación de pruebas unitarias, al menos para todos los componentes críticos de la aplicación. Es también recomendable, en aplicaciones web, implementar pruebas unitarias para todos los objetos de acceso a datos (DAO). Para facilitar esta tarea se puede utilizar la librería dbunit y la clase PrincastDatabaseTestCase, suministrada en el openfwpa. Instalación de la aplicación de ejemplo (Sample App) Para instalar la aplicación de ejemplo (Carrito) se deben seguir los pasos descritos en los siguientes apartados. 11

Presentación de openfwpa Configuración de la seguridad Para habilitar la seguridad en la aplicación de ejemplo deben seguirse los pasos especificados en el documento [Manual de Operaciones]. Configuración de la base de datos Esta aplicación utiliza una base de datos MySQL. Se ha de copiar el driver JDBC para MySQL (mysqlconnector-java-3.0.12-production-bin.jar) en el directorio {OC4J_HOME/j2ee/ home/applib. Para instalar la base de datos es necesario ejecutar la tarea ANT createdb incluida en build.xml (quizá sea necesario cambiar el usuario y contraseña para conectarse a MySQL). A continuación se edita el fichero data-sources.xml, que se encuentra en el directorio {OC4J_HOME/j2ee/home/config, y se le define un nuevo origen de datos para la aplicación añadiéndole el siguiente código al fichero: <data-source class="com.evermind.sql.drivermanagerdatasource" name="mysqlds" location="jdbc/carritods" xa-location="jdbc/xa/carritoxads" ejb-location="jdbc/mysqlds" connection-driver="org.gjt.mm.mysql.driver" username="admin" password="" url="jdbc:mysql://localhost/carrito" inactivity-timeout="30"/> Si el servidor de base de datos no se encuentra en la misma máquina que OC4J, sustituir localhost por el nombre o la dirección a dicha máquina. Hacer que los campos username y password coincidan con los de algún usuario de MySQL con privilegios para acceder a la base de datos. Llegados a este punto es necesario re iniciar el OC4J. Una vez re iniciado ejecutar el target deploy.localhost del fichero build.xml, si se ejecuta desde la máquina donde está instalado OC4J, o deploy.desa si se trata de una máquina remota (en este caso cambiar la variable desa.test.host del fichero build.xml debe apuntar a la IP del servidor). Una vez completado el proceso de instalación, la aplicación estará disponible desde la dirección http:// localhost:8888/carrito. Para tener acceso al sistema puede utilizar como parámetros de autenticación los siguientes: Identificador de usuario: cliente. Contraseña: cliente. 12