Región de Murcia Consejería de Educación, Universidades y Empleo |
www.carm.es/educacion |
|
Este documento describe la estructura general de una aplicación Java integrado en el marco de desarrollo de aplicaciones y con el framework de desarrollo.
Un proyecto será un conjunto de módulos. Todo proyecto debe partir obligatoriamente de un arquetipo de tipo proyecto y el desarrollo de cualquier módulo de un proyecto serán submódulos de éste, que obligatoriamente se deben hacer partiendo del arquetipo correspondiente al módulo en cuestión.
Nombre del arquetipo |
Descripción |
Tipo de módulo |
war.archetype |
Genera un proyecto Maven war que integra JSF, Spring y la capa de servicios web. |
Módulo web (aplicación web) |
jar.archetype |
Genera un proyecto Maven jar básico. |
Módulo jar (librería) |
ws.archetype |
Genera un peyecto Maven war que viene preparado para la implementación de un servicio web. |
Módulo servicio web |
prj.archetype |
Genera el proyecto de partida para cualquier aplicación. Todo módulo del proyecto deberá ser submódulo de éste. |
Proyecto |
El nombre del proyecto será el nombre de la apliación. (ej: libro).
Las aplicaciones se dividirán principalmente en dos partes: el back y el front. Los módulos residen dentro del proyecto y se nombran xxx-back y xxx-front (ej: libro-back, libro-front).
Dentro del Back se encontrará la definición de la lógica de negocio y su implementación como la definición de los servicios web/rest.
La estructura del modulo back se descompone en: dao, restful, ws, web. No tiene que estar todos los tipos de proyectos. Cada subproyecto añade el sufijo del tipo de módulo (ej: libro-back-dao, libro-back-restful…)
El módulo ‘dao’ contendrá la definición de las interfaces dao, los pojos, su implementación y los mocks. Para cada servicio ‘xxx’ debe existir un paquete ‘es.carm.edu.app.dao.xxx’ que contenga:
La interfaz dao: xxxServiceDao.java
El pojo: xxx.java
El mock: xxxServiceDaoMock.java
La implementación del servicio: xxxServiceDaoImpl.java
Mappers ibatis: xxxMapper.java
El módulo ‘restful’ contendrá la especificación de un servicio Rest, las rutas, los métodos (GET,POST, PUT y DELETE) y los servicios en los que se apoya para su implementación. Para cada servicio rest debe existir un paquete ‘es.carm.edu.app.serviceRS’ que contenga:
Para cada servicio ‘xxx’ rest, una clase xxxService.java
El módulo ‘ws’ contendrá la definición de un servicio web y su correspondiente cliente (en un submódulo de éste). Para cada implementación del servicio ‘xxx’ existirá un paquete ‘es.carm.edu.app.serviceWS’ que contenga:
Para cada servicio ‘xxx’ ws, una clase xxxService.java
Un submódulo maven ws-client (ej: libro-back-ws-client) con la implementación del cliente de ws.
El módulo ‘web’ es opcional y contendrá una aplicación web que expondrá únicamente servicios web o rest. No tiene frontal accesible a usuarios. Pero puede estar configurada con SSO CAS.
En la configuración spring se dará de alta los servicios y se configurará las dependencias de éstos, conexiones a bbdd, a ldap, a otros servicios web, etc…
El fichero ‘application.properties’ contendrá los parámetros de configuración de la aplicación.
Las variables que dependan de desarrollo o de producción (ip de servicios web) deberán trasladarse al fichero ‘deploy.properties’.
El fichero ‘deploy.proerties’ no pertenece a la aplicación. Es manejado por sistemas. Configura el servidor donde será alojada la aplicación war.
El front dependerá de la tecnología de presentación elegida (JSF o AngularJS) el nombre del proyecto será app-front (ej: libro-front)
En la configuración spring se dará de alta los servicios y se configurará las dependencias de éstos, conexiones a bbdd, a ldap, a otros servicios web, etc…
El fichero ‘application.properties’ contendrá los parámetros de configuración de la aplicación.
Las variables que dependan de desarrollo o de producción (ip de servicios web) deberán trasladarse al fichero ‘deploy.properties’.
El fichero ‘deploy.proerties’ no pertenece a la aplicación. Es manejado por sistemas. Configura el servidor donde será alojada la aplicación war.
Usando AngularJS
Se puede dividir el front en dos módulos: front-web y front-rest para dividir la aplicación de los servicios rest que ésta expone para su reutilización por otras aplicaciones angular. (ej: libro-front-web y libro-front-rest).
Todos los proyectos deben versionarse utilizando los mecanismos de versionado que ofrece Maven, utilizando la etiqueta <version> que se encuentra dentro del fichero pom.xml.
Siempre que se realicen modificaciones sobre un módulo y se proceda a una entrega (en cualquier entorno) se ha de modificar el número de versión.
El número de versión estará formado por tres digitos.
Además de dar de alta el proyecto en CVS, hay que darlo de alta en Jenkins, para introducirlo en el sistema de integración continua.
Jenkins es un software de integración continua open source escrito en Java. Jenkins proporciona integración continua para el desarrollo del software
Artifactory es un repositorio de artefactos maven. Las piezas que componen todas las aplicaciones. No están permitida la publicación directa en Artifactory. Ha de ser Jenkins quien haga la publicación.
De esta forma todos los proyectos usarán las mismas piezas de código y si un commit en CVS produce una descompilación de otros paquetes, Jenkins se da cuenta y no permite la publicación en Artifactory. Mantiendo estable el repositorio.
Actualmente esta tarea se hace desde Natalia. Y simplemente lo que hace es descargarse el war directamente de Artifactory y lo deposita en el servidor correspondiente. Así se evita que se despliegue una war sin haber pasado por CVS, por Jenkins y Artifactory.
Ubicación CVS: interno/recursos/documentacion/guia_desarrollo.doc |
Pagina
|
Tags: consejería de, universidades, región, murcia, educación, empleo, consejería