FUJITSU Java Development Framework DOCUMENT DETAILS Created: 10.12.2005 Version: 2.0 Author: FUJITSU ESPAÑA SERVICES S.A.
1. INTRODUCCIÓN 1.1 Arquitectura conceptos básicos La arquitectura planteada por Fujitsu sigue el patrón de diseño MVC (Model-View-Controler), en el que el flujo de la aplicación está dirigido por un Controlador central. El Controlador delega solicitudes - en nuestro caso, solicitudes HTTP -- a un manejador apropiado. Los manejadores están unidos a un Modelo, y cada manejador actúa como un adaptador entre la solicitud y el Modelo. El Modelo representa, o encapsula, un estado o lógica de negocio de la aplicación. Luego el control normalmente es devuelto a través del Controlador hacia la Vista apropiada. El reenvío puede determinarse consultando los conjuntos de mapeos, normalmente cargados desde una base de datos o un fichero de configuración. Esto proporciona un acoplamiento cercano entre la Vista y el Modelo, que puede hacer las aplicaciones significativamente más fáciles de crear y de mantener. Para crear aplicaciones que cumplan el patrón MVC, Fujitsu se basa en el Framework Struts de Apache. En términos generales, construir una aplicación usando una arquitectura MVC implica definir tres clases de módulos. Modelo: Esta es la representación específica del dominio de la información sobre la cual funciona la aplicación. El modelo es otra forma de llamar a la capa de dominio. La lógica de dominio añade significado a los datos; por ejemplo, calculando si hoy es el cumpleaños del usuario o los totales, impuestos o portes en un carrito de la compra. Como ayuda al desarrollo de este módulo se ofrecen varias librerías de utilidades para acelerar y mejorar la producción (UtilidadesPDF, UtilidadesMail, FWUtils, FLogger). Vista: Este módulo presenta el modelo en un formato adecuado para interactuar, normalmente un elemento de interfaz de usuario. Fujitsu dispone de sus propios componentes (CWHTM, CWHTMEXT, Idioma) para acelerar el desarrollo de este módulo, el uso de estos componentes permite además aumentar notablemente la calidad del producto final. Controlador: Este responde a eventos, normalmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista. Pese a que no está definido en el patrón MVC, Fujitsu hace uso de sus librerías (JOMDB, FLBUTILS) junto con OJB para el acceso a la capa de datos, de esta forma consigue un mecanismo de almacenamiento persistente que facilita el desarrollo y mantenimiento de la lógica de negocio. Page 2 of 10
La estructura de las capas y sus elementos se presentan en la siguiente imagen: Page 3 of 10
Los elementos de las capas particulares son los siguientes: Capa Elemento Descripción Presentación de datos Regla de negocio Navegador JSP Servlets Componentes Web beans Web beans Manejadores El cliente ligero la única herramienta que necesita el usuario. Presenta la interfaz gráfica de la aplicación. Se recomienda usar Mozilla o Internet Explorer a partir de versión 6. Páginas JSP. Como pertenecen a la capa de la presentación de datos, no deben llevar ninguna parte de la lógica de la aplicación. Se comunican con la capa de regla de negocio mediante los Web beans. Son también los beans que ejecutan cualquier cálculo o comprobación necesaria para mostrar los datos de una forma u otra. Por eso es fuertemente desaconsejable poner dentro de la página cualquier código JSP distinto de la lectura de las propiedades de los beans. Los servlets. Heredan del servlet genérico HttpServlet tal y como lo indica la especificación de Sun [4]. Componentes Web que se basan en la tecnología taglibs. Fujitsu dispone de una amplia librería de los componentes Web, que se encuentran en los CWHTM.jar y CWHTM_EXT.jar. Véase el apartado Componentes Web para más información. Puesto que forman un puente de comunicación entre la capa de presentación de datos (páginas JSP) y la regla de negocio están ubicados en la imagen entre ambas capas. Por eso también, no deben llevar ninguna parte de la lógica de la aplicación. Los manejadores son los objetos que implementan la lógica de negocio de la aplicación. Existen dos tipos de manejadores: - Los manejadores JOMDB implementan la gestión de datos de la base de datos mediante OJB y JOMDB. Heredan de la clase FLBUtils.Manejadores.FLBToJOMDB y utilizan los beans de repositorio. - Otros manejadores que implementan otra parte de la regla de negocio. Pueden utilizar los manejadores JOMDB para gestionar los datos. Puesto que pertenecen solamente a la capa de la regla de negocio, los manejadores no deben llevar ningún código que dependiese de la presentación de datos (código HTML, llamadas al API de servlets o JSP etc.) Por lo tanto si fuera necesario cambiar la capa de presentación, lo único que habría que cambiar son los Web beans (los manejadores deberían funcionar igual sin ningún cambio en el código) Page 4 of 10
Datos JOMDB OJB JDBC Base de Datos Otros elementos Beans de repositorio Estos tres elementos forman la capa de la conexión con la base de datos. - JOMDB es la librería de Fujitsu que encapsula OJB facilitando su uso - OJB (Object Relational Bridge) producto de Apache que proporciona el mapeo de la base de datos relacional a los objetos persistentes de Java. Más información en [1] - JDBC forma parte de Java SDK estándar e implementa las conexiones con la base de datos desde Java Se ha comprobado con éxito la cooperación con las bases de datos Oracle y PostgreSQL. Son los objetos Java que reflejan las tablas y relaciones de la base de datos. Se construyen para facilitar las operaciones de inserción, modificación o eliminación de datos. Utilizados por los manejadores JOMDB. Page 5 of 10
2. LIBRERÍAS DISPONIBLES Módulo Acceso a BD Librerías Fujitsu/Descripción FLBUtils.jar Dependencias Flogger.jar Descripción Componentes Las clases que contienen los métodos más utilizados en gestión de datos con OJB y JOMDB [20] JOMDB.jar Capa que facilita el uso de OJB [19] CWHTM.jar Componentes Web mire: Componentes Web[17] db-ojb-1.0.4.jar servlet-api.jar jsp-api.jar commonslang.jar struts.jar Proyecto Apache que forma un puente entre la base de datos relacional y la aplicación Java. [1] Implementación de la especificación Servlet API 2.0 [4] Implementación de la especificación JSP API 2.0 [5] Utilidades de Apache que proporcionan una funcionalidad extra al paquete java.lang. Proyecto Apache que facilita el desarrollo de las aplicaciones Web en el modelo MVC. Forma base para los componentes Web. [9] CWHTMEXT.jar Componentes Web adicionales (lista externa, tipo de, vínculo) [18] FLBUtils.jar JOMDB.jar jsp-api.jar servlet-api.jar Diseñador FWDesigner.jar Diseñador de formularios mediante Web, basado en AJAX. La comunicación con el servidor se establece mediante XML. El XML contiene el diseño del formulario generado por el cliente. Page 6 of 10
Multiidioma Logs Utilidades/JAI Idioma.jar servlet-api.jar Flogger.jar La librería general que permite gestionar varios idiomas del interfaz. Contiene el repositorio de idiomas junto con el contenedor de etiquetas para cada uno de ellos y los métodos que permiten obtener el valor de una etiqueta para un idioma definido. La aplicación que usa el modo multiidioma debe implementar los métodos que permiten cargar las etiquetas al contexto de la aplicación. FLogger.jar log4j-1.2.5.jar Una capa que facilita el uso del log4j. FWJaiUtils Utilidades para el tratamiento de imágenes. jai_core.jar jai_codec.jar Proyecto Apache que permite gestionar los logs dentro de una aplicación Java. [10] Librería Java Advanced Imaging de Sun. Utilizada para procesar las imágenes escaneadas de los objetos documentales. [3] Page 7 of 10
Utilidades Fujitsu Framework Utilities [16]. Una librería de utilidades para: - bases de datos - fechas - ficheros y directorios - red - seguridad - sistema - texto aplicaciones Web servlet-api.jar jsp-api.jar commons- httpclient- 3.0.jar Framework de Apache para trabajar del lado del cliente con el protocolo HTTP. GeneradorSQL.jar Conjunto de utilidades para generar los scripts SQL a partir de los parámetros. torque-3.0.2.jar Proyecto de Apache utilizado para la generación de los scripts SQL. [8] velocity- Proyecto de Apache que permite 1.3.1.jar procesar los ficheros de plantillas para obtener salidas en distintos formatos. Se usa para construir los scripts SQL a partir de las plantillas preparadas para distintas bases de datos. [12] Utilidades/PDF UtilidadPDF.jar Utilidades para formatear e imprimir documentos PDF. itext.jar fop.jar avalon- framework- 20020806.jar jai_core.jar jai_codec.jar FLogger.jar jdom.jar xerces.jar servlet-api.jar jsp-api.jar Librería que permite generar documentos PDF. [15] Proyecto de Apache que permite procesar los datos formateando diferentes tipos de salida (PDF, PCL, PS, SVG, XML, impresora, AWT, MIF y TXT) mediante XSL y XSL-FO. En Archivo Documental se usa para publicar los objetos documentales (convertirlos en documentos PDF). [2] Dependecia de fop. [21] Page 8 of 10
Utilidades/XML Utilidades/Mail FWXML.jar Utilidades para el tratamiento de documentos XML. UtilidadesMail.jar Utilidades para la lectura, el envío de mails. jdom.jar El proyecto JDOM permite manejar y procesar los datos almacenados en formato XML desde código Java. [14] xerces.jar Parser XML en Java soporta XML 1.0. [16] mail.jar El API JavaMail es un paquete opcional (extensión estándar) para leer, componer, y enviar mensajes electrónicos. [17] activation.jar Marco de trabajo de activación JavaBeans es el soporte básico para MIME-type de JavaMail. [18] Nota: Las dependencias indicadas son en el momento de construcción de los jar. Puede ser que en el momento de ejecución sea necesario añadir alguna librería más. Page 9 of 10
3. REFERENCIAS [1] Apache OJB (ObJectRelationalBridge) [2] Apache FOP (Formatting Object Processor) [3] Sun JAI (Java Advanced Imaging) [4] Especificación de Servlets de Sun a) http://db.apache.org/ojb/ b) http://db.apache.org/ojb/docu/guides/repository.html c) http://db.apache.org/ojb/docu/guides/jdbc-types.html http://xml.apache.org/fop/ http://java.sun.com/products/java-media/jai/ http://jcp.org/aboutjava/communityprocess/final/jsr154/inde x.html [5] Especificación 2.0 de JSP http://jcp.org/aboutjava/communityprocess/review/jsr152/in dex.html [6] Oracle http://www.oracle.com/technology/software/tech/java/sqlj_jd bc/index.html [7] Postgresql http://jdbc.postgresql.org/download.html [8] Apache torque http://db.apache.org/torque/ [9] Apache Struts http://struts.apache.org/ [10] log4j http://logging.apache.org/log4j/docs/download.html [11] Smart upload http://www.jspsmart.com/ Probablemente ya no disponible [12] Jakarta Velocity http://jakarta.apache.org/velocity/ [13] Jakarta commons http://jakarta.apache.org/commons/ [14] JDOM http://www.jdom.org/ [15] itext http://www.lowagie.com/itext/ [16] Xerces http://xerces.apache.org/xerces-j/ [17] JavaMail http://java.sun.com/products/javamail/ [18] JavaBeans Activation http://java.sun.com/products/javabeans/glasgow/jaf.html Framework [19] Batik SVG Toolkit http://xml.apache.org/batik/ [20] ANother Tool for Language http://www.antlr.org/ Recognition [21] Avalon Framework http://avalon.apache.org/ [22] JUnit http://www.junit.org/ [23] Jakarta Oro http://jakarta.apache.org/oro/ Page 10 of 10