Arquetipo para proyectos grandes

RECU-0123 (Recurso Arquetipo Software)

Introducción

Este arquetipo pretende ser un punto de partida en la configuración y la estructura para todos aquellos proyectos de una envergadura considerable y que requieran la utilización de un entorno Java EE.

Este proyecto presenta una características funcionales concretas:

  • Presentan una complejidad considerada media - alta.
  • Presentan un tamaño considerado como media - alto.
  • Existe una concurrencia de usuarios considerada como media - alta.
  • Considera que es una aplicación de entorno de producción interno para cuestiones de seguridad.
  • No es un sistema distribuido.

Por ello se ha recomendado seguir una arquitectura como la siguiente:

  • JSF para la capa de presentación, eligiendo RichFaces para su implementación.
  • JBoss Seam y EJB 3.0 para la capa de negocio.
  • JPA para la capa de acceso a datos.

Descripción

Se ha escogido una estructura con varios módulos para su desarrollo, siguiendo el manual Estructura del software del proyecto.

Se ha optado por la utilización de Facelets y JSF 1.2 RI como implementación de JSF, Seam como Framework de inyección de dependencias e IoC y EJB 3.0/Seam para la lógica de negocio de la aplicación. Se utiliza RichFaces como implementación de funcionalidades Ajax por el soporte que da Seam a esta librería y su mayor flexibilidad que ICEFaces.

Seam al integrarse con EJB 3.0 permite el despliegue en cluster de aplicaciones. Además, la especificación JSR 299, que define el estándar de inyección e IoC, se basa fuertemente en esta librería, por lo que el paso a JEE 6 será suficiente con una mínima adopción del estándar. La configuración por convenio y anotaciones de Seam le hace depender de muy pocos xml de configuración. Seam también añade un nuevo contexto, transparente al programador, de conversación.

Las entidades están definidas completamente con anotaciones JPA, sin ningún xml ni referencia a ellas en el persistente.xml.

La configuración de los DAOs se ha realizado haciendo uso del patrón GenericDAO que definen unos métodos comunes a todos. Existe una clase DAO por cada entidad y dispone de una interfaz donde definir los demás métodos propios y una implementación de los mismos, junto a la implementación del GenericDAO con EJB. Se dispone de una factoría de DAOs a la que se le inyecta el EntityManager de JPA y no se tiene que inyectar una dependencia en cada uno de los DAO's. Con esto se evita una innecesaria dependencia a una tecnología concreta.

En la capa negocio se ha utilizado el patrón Bridge, ya que mantiene la funcionalidad común, como es el acceso a datos.

Arquetipo

Para obtener el arquetipo acceda a su ficha en el Catálogo de Software. Existen versiones para Maven2 y Maven3.

Despliegue

  • El entorno utilizado es una maquina con windows, con PostgreSQL 8.4 como servidor de base de datos.
  • En el script PostgreSQL.sql ubicado en el directorio /src/main/config/sql se encuentran las instrucciones necesarias para la creación del usuario y base de datos, si fuera necesario, además del esquema y tablas obligatorias para el funcionamiento del arquetipo.
  • En cuanto al tema de empaquetación e instalación, se ha realizado como cualquier aplicación maven: mvn package -PperfilDelEmpaquetado.
  • Es obligatorio el uso del servidor de aplicaciones JBoss AS 5.1. JBoss AS porque reconoce los EJB 3.0 definidos fuera del war sin nececidad de hacer referencia explicita de ellos en el web.xml.
  • Es necesario que exista un datasource con jndi cualquiera pero prestar atención que en jboss hay que anteponer "java:". Por ejemplo, creamos un datasource con jndi "jdbc/MiProyectoDS", en el filter la propiedad "database.jndiName" quedaria de la siguiente manera:
database.jndiName = java:jdbc/MiProyectoDS
  • Al crear el dataSource, el servidor tiene que tener la librería JDBC de la BBDD a la que se conecta, de no ser así daría un error a la hora de crearlo.
  • El arquetipo necesita un datasource llamado jdbc/madeja. Esto, para JBoss AS 5.1, significa un archivo llamado madeja-ds.xml en la ruta:
%RUTA_SERVIDOR%\deploy\jdbc
  • Si se llamase datasources/madeja estaria en:
%RUTA_SERVIDOR%\deploy\datasources

Instrucciones sobre Postgre

El arquetipo intenta conectarse con un usuario madeja/madeja en una base de datos llamada madeja y, con esa conexión, a un esquema llamado mdj_proy donde debería estar el modelo de datos. En el script están todas las instrucciones para configurar una instancia de PostgreSQL, para no tener que configurar el arquetipo. Se divide en dos bloques:

  • Primer Bloque "configuración inicial" (Opcional)
    • Creación de un usuario madeja con contraseña madeja
    • Creación de una base de datos con nombre madeja asociada al usuario madeja creado anteriormente
  • Segundo Bloque "creación estructura" (Obligatorio)
    • Creación del esquema mdjs_proy
    • Creación del modelo de datos

El Primer Bloque es opcional si se configura la conexión del arquetipo en el filter correspondiente al entorno.

Capturas

El arquetipo representa un pequeño CRUD funcional que permite realizar operaciones de lógica funcional como la inserción, borrado, consulta o modificación de una gestión de proyectos. Para ello se encuentra una pantalla inicial que presenta el arquetipo y sus características principales.
Si hacemos click dentro de la pestaña de Recursos, realizamos una consulta sobre los recursos disponibles para los diversos proyectos como se muestra en la pantalla siguiente:
Para obtener mas detalle sobre el recurso, pinchamos sobre el y obtenemos la siguiente pantalla
Finalmente podemos modificar las propiedades del recurso como se muestra en la siguiente imagen.

Contenidos relacionados

Pautas
Área: Arquitectura » Arquitectura Tecnológica
Código Título Tipo Carácter
LIBP-0005 Arquitectura Tecnológica de Referencia Libro de pautas Directriz Recomendada