Arquetipos para proyectos medianos de transición

RECU-0125 (Recurso Arquetipo Software)

Introducción

Este arquetipo pretende ser un punto de partida en la configuración y la estructura de aquellos proyectos que no requieran de una gran envergadura ni la necesidad de servidor de aplicaciones, utilizando la tecnología de Spring.

Este proyecto presenta una características funcionales concretas:

  • Presentan una complejidad considerada baja - media.
  • Presentan un tamaño considerado como bajo - medio.
  • 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.
  • Spring para la capa de negocio.
  • JPA para la capa de acceso a datos.

Descripción

Se ha escogido una estructura simple 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, RichFaces como implementación de funcionalidades Ajax por su mayor flexibilidad que ICEFaces y continuidad de Framework con el resto de arquetipos, Spring como Framework de inyección de dependencias, IoC y lógica de negocio de la aplicación.

La configuración de la aplicación se ha realizado mayormente por anotaciones, evitando en la medida de lo posible, su definición en ficheros .xml. 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 se dispone de una interfaz donde definir los demás métodos propios y una implementación junto a la implementación del GenericDAO con EJB.

Una factoría de DAOs a la que se le inyecta el EntityManager de JPA y no tener que inyectar una dependencia en cada uno. 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) y, una vez generado el war, se ha probado en tomcat 6.0.20 pero deberia funcionar en cualquier versión de Tomcat 6.X .
  • Se utiliza el manager de tomcat para despliega el war.
  • Si se desea usar jetty con maven se utiliza la instrucción jetty:run-war -PperfilDelEmpaquetado

Instrucciones sobre Postgre

El arquetipo intenta conectarse con un usuario madeja/madeja en una base de datos llamada madeja, y con esa conexión un esquema llamado mdj_proy donde deberían 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

Si seleccionamos una búsqueda de las actividades existentes tendremos una imagen como la siguiente:
Se puede editar con detalle los aspectos de las actividades

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