manual de usuario del arquetipo jar

Anuncio
ATLAS
MANUAL DE USUARIO DEL
ARQUETIPO JAR
Versión 1.7
Área de Aplicaciones Especiales y Arquitectura de
Software
Framework Atlas
Arquetipo Jar
Hoja de Control
Título
Manual de usuario del Arquetipo Jar
Documento de Referencia
NORMATIVA ATLAS
Responsable
Área de Aplicaciones Especiales y Arquitectura de Software
Versión
1.7
Fecha Versión
30/04/2014
Registro de Cambios
Versión
Causa del Cambio
Responsable del Cambio
Fecha del Cambio
Área de Integración y Arquitectura de
1.0
1.1
1.2
Versión inicial del documento
Se modifica la nomenclatura de los
ficheros de Spring. En vez de incluir
el nombre del proyecto se tiene que
incluir el nombre del módulo
- Nueva configuración de Arquetipo
Jar
- Incluida creación previa del
arquetipo de proyecto
Aplicaciones
25/05/2010
Área de Integración y Arquitectura de
Aplicaciones
Área de Integración y Arquitectura de
15/06/2010
16/09/2010
Aplicaciones
- Nueva nomenclatura de paquetes
Se modifica el apartado 2.1
Creación
de un módulo de tipo librería
partiendo del arquetipo ya que la
nomenclatura del artifactId no era la
correcta según la normativa.
1.3
Se modifica el apartado 2.3
Estructura de directorios y archivos
para indicar que el fichero
environment.properties solo se
puede utilizar para los test.
Área de Aplicaciones Especiales y
Arquitectura de Software
10/02/2011
Se incluyen los siguientes apartados:
· Apartado 3 Inyección de
dependencias de Spring
· Apartado 4 Configuración
· Apartado 5 Versionado
· Apartado 6 Uso de la
librería dentro de una
aplicación.
Área de Aplicaciones Especiales y
1.4
Cambio del nombre del Área
Arquitectura de Software
2 de 16
16/09/2011
Framework Atlas
Arquetipo Jar
Versión
1.5
1.6
1.7
Causa del Cambio
- Se añaden las clases BaseService
y BaseServiceImpl, así como los
servicios y DAOs para EstadoCivil
- Se añaden las clases de test
agrupadas por servicio
- Quitado directorio “jar” del
arquetipo, y todos los
environment.properties de los
entornos
Se actualiza el apartado 3 para
eliminar referencias a la herramienta
de validación
Responsable del Cambio
Fecha del Cambio
Área de Aplicaciones Especiales y
Arquitectura de Software
24/02/2012
Área de Aplicaciones Especiales y
Arquitectura de Software
05/03/2012
Área de Aplicaciones Especiales y
Arquitectura de Software
3 de 16
12/03/2014
Framework Atlas
Arquetipo Jar
Índice
1.
INTRODUCCIÓN ................................................................................................................................................................ 5
1.1.
1.2.
2.
AUDIENCIA OBJETIVO .............................................................................................................................................. 5
CONOCIMIENTOS PREVIOS ...................................................................................................................................... 5
INFORMACIÓN SOBRE EL ARQUETIPO ..................................................................................................................... 6
2.1.
2.2.
2.3.
2.4.
CREACIÓN DE UNA APLICACIÓN PARTIENDO DEL ARQUETIPO .......................................................................................... 6
ESTRUCTURA DEL ARQUETIPO ......................................................................................................................................... 7
ESTRUCTURA DE DIRECTORIOS Y ARCHIVOS .................................................................................................................... 8
EJECUCIÓN DE LA APLICACIÓN ........................................................................................................................................ 9
3.
INYECCION DE DEPENDENCIAS DE SPRING .......................................................................................................... 11
4.
CONFIGURACION ........................................................................................................................................................... 11
5.
VERSIONADO ................................................................................................................................................................... 12
6.
USO DE LA LIBRERÍA DENTRO DE UNA APLICACIÓN ........................................................................................ 12
6.1.
6.2.
6.3.
6.4.
INCLUIR DEPENDENCIA DE LA LIBRERÍA......................................................................................................................... 13
AÑADIR INFORMACIÓN DE CONTEXTO ........................................................................................................................... 13
REFERENCIAR A LOS FICHEROS DE PROPIEDADES ........................................................................................................... 14
INCLUIR VARIABLES DE ENTORNO EN ENVIRONMENT.PROPERTIES ................................................................................. 14
7.
GENERACIÓN DEL SITE ................................................................................................................................................ 15
8.
ENLACES RELACIONADOS .......................................................................................................................................... 16
4 de 16
Framework Atlas
Arquetipo Jar
1. INTRODUCCIÓN
Los arquetipos son las plantillas para la generación de los distintos proyectos dentro del Framework Atlas. Estos
arquetipos utilizan el plugin archetype de maven para generar la estructura de ficheros y directorios necesarios
para nuestro proyecto, gestionando las librerías que le indiquemos así como las dependencias. Todas las librerías
serán incluidas durante el empaquetado del proyecto, por lo que para generar y compilar un arquetipo debe estar
conectado al repositorio de artefactos de la Comunidad de Madrid (Artifactory). El framework Atlas consta de los
siguientes arquetipos:
-
Arquetipo para inicio de proyecto
-
Arquetipo para módulos de tipo web
-
Arquetipo para módulos de tipo jar.
-
Arquetipo para módulos de tipo webservice o servicios web
-
Arquetipo para módulos de tipo batch
-
Arquetipo para módulos de gestión documental (documentum)
El Arquetipo Jar se debe utilizar para generar módulos de tipo librería con la estructura de directorios preparada
para comenzar a desarrollar. Al tratarse de un arquetipo de tipo jar solo contiene las configuraciones básicas de
cualquier proyecto (Spring, Hibernate, etc.).
1.1.
AUDIENCIA OBJETIVO
Este documento está dirigido a desarrolladores de proyectos java para ICM en los que se desee crear una librería
java utilizando el framework de desarrollo Atlas.
1.2.
CONOCIMIENTOS PREVIOS
Para un completo entendimiento del documento, el lector deberá tener conocimientos previos sobre las siguientes
tecnologías:
-
Java
-
Eclipse
-
Maven
-
Spring Framework.
-
Hibernate
Además, es necesario haber leído y seguido los pasos del documento
ATLAS_MUS_Preparacion_Entorno_Desarrollo para tener el entorno de desarrollo preparado para comenzar a
trabajar con los arquetipos.
5 de 16
Framework Atlas
Arquetipo Jar
2. INFORMACIÓN SOBRE EL ARQUETIPO
2.1.
Creación de una aplicación partiendo del arquetipo
NOTA IMPORTANTE
Antes de generar un arquetipo es IMPRESCINDIBLE haber generado un
arquetipo para albergar el proyecto (consultar el documento
“ATLAS_MUS_Preparacion_Entorno_Desarrollo” para ver cómo crear un
arquetipo de proyecto).
Cualquier arquetipo posterior será incluido como un módulo de éste.
Crear un proyecto Jar (librería) a partir de un arquetipo es similar a la creación de un proyecto Web, lo único que
cambia es el nombre del arquetipo a utilizar.
Para crear un proyecto a partir de un arquetipo maven puede consultar la guía paso a paso que se indica en el
documento ATLAS_MUS_Preparacion_Entorno_Desarrollo, según se indica en el apartado “Creación de una
aplicación Web desde cero”, sustituyendo “atlas-arquetipos-generador-web” por “atlas-arquetiposgenerador-jar”.
Desde Eclipse, seleccionamos el arquetipo correspondiente (la versión que aparece en la segunda columna puede
variar dependiendo de la versión actual de ATLAS):
6 de 16
Framework Atlas
Arquetipo Jar
A continuación se nos mostrará una pantalla para indicar cuales son los parámetros con los que vamos a crear
nuestro proyecto.
ATENCION – NOMENCLATURA
Es muy importante utilizar en esta
pantalla los valores que cumplan la
normativa de Atlas:
groupId: Nombre del proyecto.
Normalmente es de 4 caracteres y es
un código que se le dá a un proyecto.
Todos los módulos de un proyecto
tendrán el mismo groupId y se
corresponderá con el nombre del
proyecto.
artifactId: Nombre del módulo. (En el
caso de librerías el nombre del módulo
será: xxxx_lib_yyyy donde xxxx se
corresponde con el groupId indicado y
yyyy el texto que identifique a este
modulo y lo diferencie de otros:
Ejemplo: ejpl_lib_sample.
El carácter de separación utilizado en
el nombre debe ser el guión bajo.
Version: La primera versión será 1.0.0
package: El nombre del paquete java
será el groupId, seguido de un punto y
el nombre del bloque funcional dentro
de la aplicación (para aplicaciones
grandes se crearán varios bloques
funcionales).
Todos los nombres deben ir en
minúsculas.
Al pulsar Finish se crea el nuevo proyecto.
ATENCION
Las clases que se incluyen de ejemplo son simplemente eso y deben ser
eliminadas del proyecto cuando no se necesiten.
2.2.
Estructura del arquetipo
Este arquetipo genera un proyecto de tipo jar en el que se incluye la configuración más simple posible de software
desarrollado en Altas.
7 de 16
Framework Atlas
Arquetipo Jar
Esta aplicación además viene preconfigurada para utilizar los módulos de trazas y monitorización (e incluye las
dependencias de Spring e Hibernate para utilizarlos dentro de la librería).
2.3.
Estructura de directorios y archivos
Una vez generado el proyecto nos generará una serie de directorios a estilo maven, donde ubicaremos los fuentes
y recursos de las partes de java y test.
Se generará la siguiente estructura:
Fichero
de
configuración de
maven
del
módulo core.
De esta ruta cuelga la estructura de paquetes con el código fuente de la
aplicación El paquete raíz va a llamarse igual que el nombre del módulo que
se está desarrollando.
El paquete raíz será el especificado al crear el proyecto. No debe olvidarse
que el paquete raíz debe coincidir con el groupid.
Adicionalmente, para cada bloque funcional de nuestra aplicación debe
crearse un subpaquete. En el ejemplo inferior, se ha tomado ejpl como
paquete raíz y un único bloque funcional cuyo paquete se denomina
bloquefuncionaln.
Interfaces de las clases de
acceso a datos y sus
implementaciones
Entidades anotadas de hibernate
Interfaz de la fachada de acceso
a los servicios y su
correspondiente implementación.
Interfaces de los servicios de
negocio y sus implementaciones
8 de 16
Framework Atlas
Arquetipo Jar
Ruta donde se generarán los recursos del proyecto, normalmente son ficheros
de configuración y ficheros de propiedades. En nuestro caso contiene los
siguientes ficheros:
Contiene la configuración los beans de la
librería. {artifactId} será el nombre
especificado en el artifactId del fichero
pom.xml.
Ruta donde se generarán el código fuente para los tests unitarios de nuestro
proyecto. Este código no será incluido en el paquete jar final.
Ejemplo de test unitario
Ruta donde se generarán los recursos para realizar las pruebas de test,
normalmente son ficheros de configuración y ficheros de propiedades. En
nuestro caso contiene los siguientes ficheros:
Fichero de propiedades que contiene
mediante clave y valor todos los valores
susceptibles de ser modificados o
configurados entre diferentes entornos de
ejecución. Este fichero solamente es para
la ejecución de los test.
Fichero de configuración de log4j; lleva
además configuración de los módulos de
trazas y monitorización.
Contiene la configuración básica de un
bean de Spring de ejemplo para ejecutar el
test de JUnit que viene preconfigurado.
Fichero de propiedades que contiene
mediante clave y valor todos los valores
particulares de la aplicación que no son
susceptibles de ser modificados o
configurados entre diferentes entornos de
ejecución.
2.4.
Ejecución de la aplicación
Este arquetipo no viene preparado para su ejecución, sino para empaquetarlo como librería a ser utilizada en otras
aplicaciones. Con las pruebas unitarias debe ser suficiente para probar su ejecución.
Para realizar solo las pruebas de test:
mvn test
9 de 16
Framework Atlas
Arquetipo Jar
Para construir el proyecto generando el fichero jar podemos ejecutar maven con las tareas “clean install”. Puede
hacerse desde eclipse, o por línea de comandos:
mvn clean install
10 de 16
Framework Atlas
Arquetipo Jar
3. INYECCION DE DEPENDENCIAS DE SPRING
Los beans de contexto de Spring se incluirán en el fichero applicationContext-yyyy.xml, donde yyyy es el nombre
de la librería. Este fichero ya se encuentra incluido dentro del arquetipo.
De esta forma solamente hay que incluir un único fichero de contexto dentro de las aplicaciones que utilicen esta
librería.
En el caso de que el tamaño de este fichero sea muy grande se podrá dividir en otros ficheros que serán
importados dentro del fichero applicationContext-yyyy.xml. La nomenclatura de estos ficheros siempre será
applicationContext-yyyy-zzzz.xml donde zzzz puede ser dao, services, etc.
A continuación se muestra un ejemplo de importación de ficheros de contexto.
applicationContext-ejpl_lib.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<import resource="classpath:/conf/applicationContext-ejpl_lib-dao.xml" />
<import resource="classpath:/conf/applicationContext-ejpl_lib-services.xml" />
</beans>
4. CONFIGURACION
Los módulos de tipo librería han de definir su configuración de forma distinta para que puedan convivir varias
librerías y sus configuraciones dentro de un proyecto. Por ello han de seguirse las siguientes instrucciones:
·
Fichero application-yyyy.properties: En el caso de que una librería incluya variables de configuración
cuyos valores son los mismos para todos los proyectos que usen estas librerías y estos valores no
dependan del entorno se creará un fichero llamado application-yyyy.properties , donde yyyy es el nombre
de la librería, Este fichero se situará en el directorio src/main/resources/conf de la librería para que se
incluya dentro del jar de la misma.
11 de 16
Framework Atlas
Arquetipo Jar
Si se trata de variables de configuración referentes a queries, estas variables se incluirán en el fichero
queries-yyyy.properties donde yyyy es el nombre de la librería. El fichero irá situado en el mismo
directorio que el anterior.
Las aplicaciones que utilicen la librería deberán referenciar estos ficheros de configuración dentro del
fichero de contexto de Spring applicationContext-general.xml en el bean propertyConfigurer.
·
Fichero environment.properties: Las librerías NO pueden incluir este fichero de configuración (en
src/main/resources) ya que no deben existir distintas versiones de la librería por cada entorno (hay una
librería única). Cuando una librería requiera de variables de configuración que dependen del entorno estas
se incluirán en el fichero de configuración de la aplicación que use esta librería (nunca dentro de la
librería). Es muy importante que las variables sigan la nomenclatura adecuada para reconocer dentro de
una aplicación a quién pertenecen esas variables de configuración.
En el apartado 6 USO DE LA LIBRERÍA DENTRO DE UNA APLICACIÓN se muestran los distintos pasos
necesarios con ejemplos de los mismos.
5. VERSIONADO
Al tratarse de un módulo de tipo librería es muy importante el versionado de la misma cuando se realicen cambios.
El versionado se realizará dentro del fichero pom.xml en el atributo <version>.
Fichero pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv4_0_0.xsd">
<parent>
<artifactId>atlasfrm-arquetipos-padre-jar</artifactId>
<groupId>atlasfrm</groupId>
<version>1.0.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>atlasfrm</groupId>
<artifactId>ejpl_lib</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>ejpl_lib</name>
<description>Librería jar ejpl_lib</description>
Cada vez que se genere una nueva versión de la librería se ha de modificar el número de versión.
6. USO DE LA LIBRERÍA DENTRO DE UNA APLICACIÓN
Para utilizar la librería dentro de una aplicación será necesario realizar los siguientes pasos.
12 de 16
Framework Atlas
Arquetipo Jar
Atención
Estos pasos deben estar claramente indicados en la documentación de uso de la librería implementada.
6.1.
Incluir dependencia de la librería
La dependencia a la librería se incluirá en el fichero pom.xml de la aplicación que la utiliza.
Primero hay que definir una propiedad que es el número de versión de la librería. Este número de versión se
corresponde con el número de versión que aparece en el pom.xml de la librería. Esta propiedad se definirá en el
elemento <properties> del fichero pom.xml. Si el elemento <properties> no existe hay que incluirlo tal y como se
puede ver en el ejemplo.
Después hay que incluir la dependencia dentro del elemento dependencias del fichero pom.xml. El atributo
<version> de la librería apuntará a la propiedad definida anteriormente.
A continuación se muestra un ejemplo de inclusión de librería en el fichero pom.xml.
Fichero pom.xml
<properties>
<ejpl_lib.version>1.0.0</ejpl_lib.version>
</properties>
<dependencies>
…
<dependency>
<groupId>ejpl</groupId>
<artifactId>ejpl_lib</artifactId>
<version>${ejpl_lib.version}</version>
</dependency>
…
<dependencies>
6.2.
Añadir información de contexto
Es necesario referenciar el fichero de contexto de Spring de la librería (applicationContext-yyyy.xml) dentro del
fichero web.xml de la aplicación en el parámetro de contexto contextConfigLocation, según se muestra en el
siguiente ejemplo:
Fichero web.xml
13 de 16
Framework Atlas
Arquetipo Jar
<!-- ============================================================== -->
<!-PARAMETROS DE CONFIGURACION SPRING
-->
<!-- ============================================================== -->
<context-param>
<description>
Este parámetro indica la localización exacta de los ficheros de configuración
de SPRING
</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/conf/applicationContext-general.xml;
classpath:/conf/applicationContext-database.xml;
classpath:/conf/applicationContext-dao.xml;
classpath:/conf/applicationContext-services.xml;
classpath:/conf/applicationContext-security.xml;
classpath:/conf/applicationContext-security-hostPolitica.xml;
classpath:/atlas/atlas-comp-control-m.xml;
classpath:/conf/atlas-trazas-application-context.xml;
classpath:/conf/atlas-monitorizacion-application-context.xml;
classpath:/conf/applicationContext-componentes.xml;
classpath:/conf/applicationContext-ejpl_lib.xml;
</param-value>
</context-param>
6.3.
Referenciar a los ficheros de propiedades
Es necesario referenciar el fichero o los ficheros de propiedades de la librería (application_yyyy.properties y
queries.properties) dentro del fichero applicationContext-general.xml en el bean propertyConfigurer, según se
muestra en el siguiente ejemplo:
Fichero applicationContext-general.xml
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/conf/application.properties</value>
<value>classpath:/environment.properties</value>
<value>classpath:/conf/queries.properties</value>
<value>classpath:/conf/application-ejpl_lib.properties</value>
</list>
</property>
</bean>
6.4.
Incluir variables de entorno en environment.properties
Si la librería ha definido variables que dependen del entorno estas se deberán incluir en el fichero
environment.properties de la aplicación (situado en src/main/resources).
Fichero environment.properties
14 de 16
Framework Atlas
Arquetipo Jar
….
# Configuración de ejpl_lib
ejpl_lib.webservice=http://desarrollo.madrid.org/ejpl_ws/services/ServicioWS
ejpl_lib.server=http://icmdesbi01:8080
ejpl_lib.usuario=EJPL_Usu
ejpl_lib.clave=C7FFB972B34AB66E
…
7. GENERACIÓN DEL SITE
Los arquetipos vienen preparados para automáticamente generar un web-site con la información de la aplicación,
incluyendo lava javadoc, información de dependencias, etc. Para más información sobre como generarlo consultar
el documento ATLAS_MUS_Preparacion_Entorno_Desarrollo
15 de 16
Framework Atlas
Arquetipo Jar
8. ENLACES RELACIONADOS
Producto
URL
Apache Maven
http://maven.apache.org/
Ajax4JSF
http://www.jboss.org/jbossrichfaces/
Barbecue
http://barbecue.sourceforge.net/
Commons BeanUtils
commons.apache.org/beanutils/
Commons Configurations
http://commons.apache.org/configuration/
Facelets
https://facelets.dev.java.net/
Hibernate
http://www.hibernate.org/
Hibernate Annotations
http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/
JAXB
http://java.sun.com/webservices/jaxb/
Jcaptcha
jcaptcha.sourceforge.net/
JPA
http://java.sun.com/developer/technicalArticles/J2EE/jpa/
JSF
http://java.sun.com/javaee/javaserverfaces/
JSFUnit
http://www.jboss.org/jsfunit/
Log4J
http://logging.apache.org/log4j/
MyFaces Core
http://myfaces.apache.org/
RichFaces
http://www.jboss.org/jbossrichfaces/
Spring
http://www.springframework.org/
Spring Security
http://www.springframework.org/
Tomahawk
http://myfaces.apache.org/tomahawk/
Velocity
http://velocity.apache.org/
16 de 16
Descargar