Arquetipos para proyectos medianos de transición
- Área: Arquitectura Tecnológica
- Carácter del recurso: Recomendado
- Tecnologías: Java
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)
- 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.
Contenidos relacionados
Código | Título | Tipo | Carácter | |
---|---|---|---|---|
LIBP-0005 | Arquitectura Tecnológica de Referencia | Libro de pautas | Directriz | Recomendada |