Su Satisfacción, Nuestro motor
Arquitectura IntranetCikautxo
Cikautxo
03/01/2018
1.0 www.certiorem.com www.certiorem.com
La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
ÍNDICETabla de ContenidosÍndice.................................................................................................2
Tabla de Contenidos..................................................................................................2
1.1. Estructura y Mapa de arquitectura................................................41.1.1.1. Estructura del proyecto.............................................................................41.2.1.2. Arquitectura...............................................................................................4
2.2. Estructura de clases.....................................................................72.1.2.1. Paquetes java principales..........................................................................7
2.1.1. Presentation (com.certiorem.cwf.web)....................................................................................7
2.1.2. Bussines (com.certiorem.cwf.service).....................................................................................7
2.1.3. Dao (com.certiorem.cwf.dao)..................................................................................................7
2.1.4. Reports (com.certiorem.cwf.reports).......................................................................................8
2.1.5. Util (com.certiorem.cwf.util)....................................................................................................8
2.2.2.2. Javascript...................................................................................................8
3.3. Librerías utilizadas.....................................................................103.1.3.1. Librerías...................................................................................................10
3.1.1. En el servidor........................................................................................................................10
3.1.2. En el cliente...........................................................................................................................11
4.4. Capas existentes y tecnologías...................................................124.1.4.1. API...........................................................................................................124.2.4.2. Lógica de negocio....................................................................................124.3.4.3. Persistencia.............................................................................................12
5.5. Entornos....................................................................................135.1.5.1. Producción...............................................................................................135.2.5.2. Pre Producción.........................................................................................14
6.6. Configuración y propiedades de los diferentes elementos de los entornos....................................................................................156.1.6.1. Ficheros de configuración de la aplicación...............................................156.2.6.2. Web.xml...................................................................................................166.3.6.3. Configuración de spring...........................................................................196.4.6.4. Configuración del api rest.......................................................................24
1.0 www. certiorem .com
Cikautxo 03/01/2018 2 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
6.5.6.5. Mapeos de hibernate (JPA).......................................................................24
7.7. Otra documentación...................................................................26
8.8. Referencias y bibliografía...........................................................27
1.0 www. certiorem .com
Cikautxo 03/01/2018 3 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
1.1. ESTRUCTURA Y MAPA DE ARQUITECTURA
1.1.1.1. Estructura del proyectoEl proyecto está desarrollado usando el framework de desarrollo web de Certiorem “CWF”.
La gestión de dependencias y construcción del proyecto se hace mediante maven i lo que hace el proyecto independiente del IDE utilizado (en nuestro caso Eclipse).
La compilación del proyecto mediante maven que se encarga de:
Compilar los fuentes
Según el entorno especificado en el fichero de propiedades reescribe los properties.
Genera el war.
El proyecto compila con la versión 1.8 de java y la versión 3.0 del java servlet api ii. Estas son las últimas versiones estables, utilizadas para un mayor rendimiento y seguridad.
El código fuente, está en un repositorio de código (GIT iii) que permite gestionar versiones o recuperar versiones anteriores.
1.2.1.2. ArquitecturaLa arquitectura utilizada se muestra en la siguiente imagen y se detalla a continuación.
La aplicación está compuesta de una parte cliente (servida por el tomcat iv) creada en html y javascript y una parte servidor realizada en java mediante api rest v (ejecutada en el tomcat).
La parte cliente se ejecuta en el browser del usuario y es adaptable (responsive) a distintos tamaños de dispositivos.
1.0 www. certiorem .com
Cikautxo 03/01/2018 4 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
BROWSER TOMCAT
CLIENT SERVER
ACTIVE DIRECTORY
HTML/JS/CSSJQuery
PLUG
INS JQ
uery
RESTJSON
BACKBON
E JS
FILTER
API
SERVICE
DAOViews
Models
REALM
JPAHIBERNATE
CKCertiorem
IZARO
Arquitectura Intranet Cikautxo
0. Índice
La infraestructura está compuesta por las siguientes partes.
Client: Es una navegador que se ejecuta en el dispositivo del usuario (pc, tablet, móvil).
Server: Es la maquina en la que ejecutamos el servidor de aplicaciones (tomcat) en él se ejecuta la aplicación principal.
Active Directory: este servidor contiene el directorio activo y es el utilizado para autenticar a los usuarios de la aplicación.
SQL-SERVER: el servidor de base de datos que contiene tanto la base de datos de CWF como de Izaro.
La estructura de la aplicación se divide en lo siguiente:
La parte cliente de la aplicación que se ejecuta en el navegador se divide en:
1.0 www. certiorem .com
Cikautxo 03/01/2018 5 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
SQL SERVER
Arquitectura Intranet Cikautxo
0. Índice
Javascript: toda la lógica del cliente está en javascript (el lenguaje soportado por defecto en los navegadores). En javascript están definidos los modelos de la parte cliente, las rutas, las vistas, validaciones y componentes visuales (grids, etc).
Html: en html y mediante anotación de mustachevi están definidas las templates de la interface.
Css: todos los estilos están definidos mediantes hojas de estilo css.
La parte servidor de la aplicación se divide en:
Realm: La autenticación de los usuarios se hace a través del tomcat. Para ello se ha implementado un realm que valida el login contra el directorio activo.
Filter: Todas las peticiones al servidor pasan por los filtros de la aplicación. Estos se encargan de autenticarlas y validarlas
API: Las peticiones son gestionadas por la capa del api.
Service: Esta parte incluye la lógica de negocio.
DAO: Toda la gestión de acceso a la capa de datos se hace desde aquí. Para ello se apoya en JPA e hibérnate.
1.0 www. certiorem .com
Cikautxo 03/01/2018 6 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
2.2. ESTRUCTURA DE CLASES
2.1.2.1. Paquetes java principales2.1.1. Presentation (com.certiorem.cwf.web)
Contienen la lógica de la presentación del api REST y el filtrado de seguridad de las llamadas al api. En él se encuentran:
api: Aquí se implementan Apis específicas que no entran dentro de los estándares del framework CWF. El paquete se divide en dos pub/priv que hacen referencia a si son Apis públicas o privadas (se pueden llamar sin autenticación o no).
framework: todas las Apis definidas para del framework están en este paquete. Existen algunas genéricas que generan de forma automática las Apis para los distintos modelos del DAO.
filter: filtran todas las llamadas a las Apis y se encargan de validar la autenticación, la sesión o el origen de la llamada. Además existe un filtro para trazar las respuestas de las Apis.
interceptors: existe un interceptor que comprime las respuestas de las Apis para que estas pesen menos.
converter: en este paquete están los conversores específicos de JSON a JAVA y al revés que Jackson no da por defecto.
errorhadling: excepciones específicas de la aplicación. Transforma excepciones de java a formato JSON para devolver la respuesta al cliente Javascript.
util: Es un paquete de utilidades para la parte de presentación.
2.1.2. Bussines (com.certiorem.cwf.service)
Recogen la lógica de negocio. Entre otras clases contienen:
service: Son las clases que contienen la lógica de negocio. Todos los procesos de negocio que engloben cierta lógica compleja están implementados en este paquete.
2.1.3. Dao (com.certiorem.cwf.dao)
Contiene:
1.0 www. certiorem .com
Cikautxo 03/01/2018 7 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
dao: los Daovii (Data Access Object) que se encargan implementar para cada modelo las operaciones necesarias sobre la base de datos, estas son: querys, inserts, updates, deletes.
model: los modelos, que son la representación java de las entidades de la base de datos.
converters. para poder transformar ciertos tipos de la base de datos a objetos java y al revés se usan los conversores.
util: este paquete contiene algunas clase de utilidades para la gestión de los daos.
2.1.4. Reports (com.certiorem.cwf.reports)
Este paquete contiene la clase para la gestión de los informes. Además contiene los jrxml (formato de informes en jasper report) de la aplicación.
2.1.5. Util (com.certiorem.cwf.util)
Contiene algunas clases de utilidades entre las que se incluyen algunos las constantes, una clase para el envío de correos, etc.
2.2.2.2. JavascriptLos ficheros javascript del framework cwf se encuentran en el directorio webapp/cwf/js. Este directorio contiene varios subdirectorios organizados por funcionalidad de la app.
cwf.js: Contiene distintas funcionalidades implementadas por el CWF como notificaciones, validaciones, carga de combos, etc.
index.js: Contiene la gestión de las urls en la app cliente. Cada url de la parte cliente ejecuta una función recogida en este fichero.
app.js: Este fichero inicializa la parte cliente y guarda el estado de la app al tratarse de una aplicación SPAviii
models/*.js: Los modelos de la parte cliente están definidos usando backbone y se encuentran en esta carpeta.
views/*.js: Las vistas de la parte cliente están definidas usando backbone y se encuentran en esta carpeta. Además existen componentes visuales encapsulados en vistas de backbone para hacerlos reutilizables, como el caso de GridView o el DropZoneFileUpload,
1.0 www. certiorem .com
Cikautxo 03/01/2018 8 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
ModalConfirmView, GenericView, etc. Todas se encuentran dentro de la subcarpeta Generic.
1.0 www. certiorem .com
Cikautxo 03/01/2018 9 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
3.3. LIBRERÍAS UTILIZADAS
3.1.3.1. LibreríasAlgunas de las librerías del proyecto son:
3.1.1. En el servidor
Spring ix en su versión 4.3.7. De todas las funcionalidades que incluye spring se está usando la inyección de dependencias del core, la integración con JAP/hibernatex, la gestión de transacciones, el envío de correos. El uso de Spring IoC xipermite el desacoplamiento de los componentes y la inyección de dependencias.
Jerseyxii: es una implementación de la especificación JAX-RS para implementar servicios REST. Es la librería usada para la parte del api. Mediante anotaciones las clases permite especificar las URLs que escucha el servidor, los métodos httpxiii de las peticiones en incluso los tipos de datos recibidos y devueltos (en este caso JSON en su mayoría).
Jacksonxiv: La parte del servidor de la aplicación funciona en java y la parte cliente en javascript. Como formato de intercambio de información se usa JSON y para facilitar la transformación de los objetos entre un lenguaje y jersey se apoya en la librería de Jackson.
Quartzxv: Para las tareas ejecutadas de forma periódica se usa esta librería que permite definir trabajos que se ejecutan con diferente frecuencia usando una especie de cronxvi.
Jaspert Reportsxvii. Esta librería se utiliza para generar informes. La salida del informe puede ser en distintos formatos como por ejemplo el pdf. En este proyecto se usa por ejemplo para exportar los datos de los grids. En estos casos los informes son generados de forma dinámica usando la librería dynamicreports
JPA / Hibernate. Para la persistencia de la información se usa la especificación JPA mediante la implementación de hibernate. El uso de este motor de persistencia permite la abstracción de la base de datos utilizada.
3.1.2. En el cliente
Los ficheros de javascript de librerías de terceros se encuentran en el directorio webapp/assets/js. Este contiene varios subdirectorios con las librerías y plugins necesarios para ejecutar el cliente javascript.
1.0 www. certiorem .com
Cikautxo 03/01/2018 10 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
Algunos de estos plugins y librerías son:
Jqueryxviii: Es una librería javascript de uso genérico. Tiene varios plugins que se usan en la app y backbone la utiliza en las vistas para modificar el DOMxix.
moment.jsxx: Librería utilizada para el manejo de fechas en javascript.
underscore.jsxxi: Librería de utilidades javascript usada en backbone.
bootstrap.jsxxii: Framework de maquetación web
hogan.jsxxiii: Motor de templates javascript basado en mustache. Se usa para las templates de las vistas de backbone.
Jquery-validation.jsxxiv: Plugin de jquery usado para las validaciones en el cliente
i18next.jsxxv: Libería javascript de internacionalización.
datatables.jsxxvi: Componente grid javascript
page.jsxxvii:Gestión de las rutas de javascript.
backbone.js: Esta librería permite aplicar el patrón MVVM xxviiien la parte cliente separando así la lógica de los modelos de la interface. Con Backbone definimos por un lado nuestros modelos y colecciones y la librería nos da la lógica para gestionarlos (altas,bajas ,etc). Por otro lado definimos nuestras vistas y templates. En este caso Backbone, mediante diferentes eventos, mantiene la interface y los modelos sincronizados.
1.0 www. certiorem .com
Cikautxo 03/01/2018 11 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
4.4. CAPAS EXISTENTES Y TECNOLOGÍAS
4.1.4.1. APIEsta capa engloba todo lo referente a la parte del api. Para ello se ha utilizado la especificación jax-rsxxix con su implementación en Jersey.
Está capa además se encarga de la comunicación con la parte cliente. Lo que implica transformar los objetos Java a JSONxxx y al revés ya que la comunicación con el cliente se hace mediante este formato. Para hacer esta tarea se apoya en la librería de Jackson.
4.2.4.2. Lógica de negocioEsta capa contiene los componentes de negocio.
4.3.4.3. PersistenciaLa persistencia de los datos se hace en una base de datos Sql Server. Para ello se utiliza la especificación de JPAxxxi mediante su implementación con hibernatexxxii como motor de persistencia.
1.0 www. certiorem .com
Cikautxo 03/01/2018 12 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
5.5. ENTORNOSExiste un entorno de producción y otro de preproducción (pruebas) virtualizados, donde se despliega el aplicativo para realizar las pruebas antes de pasarlo a producción. El despliegue se hace de forma remota. En principio los entornos son idénticos y comparten el directorio activo. Cada uno dispone de su propio tomcat y base de datos.
A continuación se detallan algunos datos de los entornos.
5.1.5.1. ProducciónSERVIDOR DE APLICACIONES
Procesador Xeon 2.0
RAM 8 GB
IP 192.168.1.150
Host sr-be-150
Servidor de aplicaciones Tomcat 8
Sistema operativo Windows Server 2012 R2
SERVIDOR DE BASE DE DATOS SQL SERVER
Procesador ¿???
RAM ¿???
IP 192.168.0.197
Host
Servidor de base de datos MS SQL Server
Sistema operativo ¿????
SERVIDOR AD
IP ¿???
Host sr-be-009
Servidor LDAP Active Directory
Sistema operativo Windows Server
1.0 www. certiorem .com
Cikautxo 03/01/2018 13 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
5.2.5.2. Pre ProducciónSERVIDOR DE APLICACIONES
Procesador Xeon 2.00
RAM 8 GB
IP 192.168.1.151
Host sr-be-151
Servidor de aplicaciones Tomcat 8
Sistema operativo Windows Server 2012 R2
1.0 www. certiorem .com
Cikautxo 03/01/2018 14 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
6.6. CONFIGURACIÓN Y PROPIEDADES DE LOS DIFERENTES ELEMENTOS DE LOS ENTORNOS
La aplicación dispone de diferentes ficheros de configuración en el que se definen diferentes propiedades para el funcionamiento de la aplicación.
6.1.6.1. Ficheros de configuración de la aplicaciónLos siguientes ficheros de propiedades contienen las principales propiedades de configuración que son dependientes del entorno. Estos ficheros son empaquetados en la aplicación, mediante maven, en el momento de la compilación con la configuración apropiada para el entorno. Algunas de las propiedades que contiene son:
config.properties.
database.properties.
jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriverjdbc.url=jdbc:sqlserver://localhost:1433;instance=SQLEXPRESS;DatabaseName=CIKAUTXO#jdbc.dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSourcejdbc.username=cikautxo
mail.properties
path.properties
context.xml
1.0 www. certiorem .com
Cikautxo 03/01/2018 15 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<?xml version="1.0" encoding="UTF-8"?><Context path="/cwf" docBase="/cwf-web" debug="0" reloadable
<Realm className="com.certiorem.cwf.CWFRealm"
digest="MD5"
driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionURL="jdbc:sqlserver://localhost:1433;instance=SQLEXPRESS;DatabaseName=CIKAUTXO"
6.2.6.2. Web.xmlEs el fichero de configuración del war. Entra dentro del estándar y lo usa el servidor de aplicaciones para poder hacer el arranque y configuración de la aplicación. Siempre se encuentra en web-inf/web.xml. Alguna de las cosas que en él se definen son:
Los ficheros de spring que deben inicializarse. Esto inicializa el contexto de Spring
<context-param><param-name>contextConfigLocation</param-name><param-value>
classpath:springUtil-config.xmlLos servlet y mapeos que deben inicializarse. Se definen 4 servlets:
Servlet para el api publica. public-api
Servlet para el api privada. private-api
Servlet para el api del framewrok. framework
Servlet para el pooling de notificaciones. pooling . Usado para enviar notificaciones del server al cliente.
1.0 www. certiorem .com
Cikautxo 03/01/2018 16 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<servlet><servlet-name>private-api</servlet-name><servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class<init-param> …..</init-param> <load-on-startup>1</load-on-startup>
</servlet><servlet> <servlet-name>public-api</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class <init-param>
… </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>framework</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class <init-param> ….. </init-param> <load-on-startup>1</load-on-startup></servlet><servlet> <servlet-name>polling</servlet-name>
Los mapeos de las urls a las apis
<servlet-mapping><servlet-name>private-api</servlet-name><url-pattern>/private/api/v1/*</url-pattern>
</servlet-mapping>
<servlet-mapping> <servlet-name>public-api</servlet-name> <url-pattern>/public/api/v1/*</url-pattern></servlet-mapping>
<servlet-mapping> <servlet-name>framework</servlet-name>
La seguridad y las url que protege
1.0 www. certiorem .com
Cikautxo 03/01/2018 17 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<security-constraint> <display-name>General Restriction</display-name> <web-resource-collection> <web-resource-name>Entire Application</web-resource-name> <description>All resources in this application are protected.</description <url-pattern>/index.jsp</url-pattern> <url-pattern>/choosePlant.jsp</url-pattern> <url-pattern>/private/api/*</url-pattern>
<url-pattern>/framework/*</url-pattern> <url-pattern>/polling/*</url-pattern>
</web-resource-collection> <auth-constraint> <role-name>Login</role-name> </auth-constraint> </security-constraint> <!-- <login-config>
<auth-method>BASIC</auth-method></login-config>
--><login-config>
<auth-method>FORM</auth-method>El timeout de la sesión
Algunos parámetros para cargar en el contexto
<context-param> <param-name>icpWebSphereSecurePort</param-name> <param-value>443</param-value> </context-param>
<context-param> <param-name>icpWebSpherePort</param-name> <param-value>8080</param-value> </context-param>
Los ficheros de index por defecto en caso de que no se especifiquen en la url
Las páginas de error a las que se redirigirá al usuario en caso de que ocurra uno
1.0 www. certiorem .com
Cikautxo 03/01/2018 18 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<error-page> <error-code>500</error-code> <location>/error500.jsp</location></error-page><error-page> <error-code>404</error-code>
6.3.6.3. Configuración de springspringUtil-config.xml. Aquí se mapean los properties, se inicializa en bean del correo y los bean de utilidades y quartz.
1.0 www. certiorem .com
Cikautxo 03/01/2018 19 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd">
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"<property name="locations"> <list>
<value>classpath:mail.properties</value> <value>classpath:database.properties</value><value>classpath:path.properties</value>
</list></property>
</bean> <bean id="mappedProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean"<property name="locations"><list>
<value>classpath:mail.properties</value> <value>classpath:database.properties</value><value>classpath:path.properties</value>
<value>classpath:config.properties</value> </list>
</property> </bean>
<bean id="properties" class="com.certiorem.cwf.util.Properties"><property name="mappedProperties" ref="mappedProperties"
</bean> <bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host"><value>${mailserver}</value></property> <property name="port"><value>${mailport}</value></property> <property name="username"><value>${mailuser}</value></property <property name="password"><value>${mailpassword}</value></property
quartz_contest.xml. Existen dos tareas programadas que se lanzan periódicamente mediante quartz. Los beans de quartz se definen en este fichero.
1.0 www. certiorem .com
Cikautxo 03/01/2018 20 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<bean name="complexJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" <property name="targetObject" ref="procesoAutomatizadoService" <property name="targetMethod" value="procesoAutomatizado" <property name="concurrent" value="false" /> </bean>
<!-- Run the job every 5 seconds only on weekends --><bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="complexJobDetail" /><property name="cronExpression" value=" 0 0 2 ? 12 SUN#1 *"
<!-- <property name="cronExpression" value="0 55 2 ? * *"/> --><!-- <property name="cronExpression" value="* 0/5 * * * ?"/> -->
</bean>
<!-- Scheduler factory bean to glue together jobDetails and triggers to Configure Quartz Scheduler -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"<property name="jobDetails">
<list><!-- <ref bean="simpleJobDetail" /> -->
<ref bean="complexJobDetail" /></list>
</property>
<property name="triggers">
springDao-config.xml. Aquí se inicializan los bean Dao que tienen la lógica de los modelos y sus operaciones con la base de datos. Spring escanea el paquete de daos y hace la inyección de dependencias según las anotaciones de las clases.
1.0 www. certiorem .com
Cikautxo 03/01/2018 21 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd">
DataSource.xml Fichero de donde se define el datasource, en este caso la conexión jdbc con la BD, de la aplicación para la inyección de la dependencia en los beans necesarios.
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
Hibernate.xml Fichero de donde se define la configuración de hibernate, se le inyecta el datasource y se define el Transacction Manager para la gestión de transacciones mediante la anotación @Transactional.
1.0 www. certiorem .com
Cikautxo 03/01/2018 22 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<?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: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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- Hibernate session factory --><bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <property name="dataSource">
<ref bean="dataSource" /></property><property name="hibernateProperties">
<props><prop key="hibernate.dialect">${hibernate.dialect}<prop key="hibernate.show_sql">$
{hibernate.show_sql}</prop><prop key="hibernate.hbm2ddl.auto">$
{hibernate.hbm2ddl.auto}</prop><prop key="hibernate.format_sql">$
{hibernate.format_sql}</prop><prop key="hibernate.use_sql_comments">$
{hibernate.use_sql_comments}</prop></props>
</property> <property name="packagesToScan" value="com.certiorem.cwf.dao.model"
springService-config.xml. Aquí se inicializan los bean service que tienen la lógica de negocio. Spring escanea el paquete de service y hace la inyección de dependencias según las anotaciones de las clases.
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans
springWeb-config.xml. Aquí se inicializan los bean service que tienen la lógica de negocio. Spring escanea el paquete de service y hace la inyección de dependencias según las anotaciones de las clases.
1.0 www. certiorem .com
Cikautxo 03/01/2018 23 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/context
6.4.6.4. Configuración del api restLas urls de mapeo del api rest se configuran mediante anotaciones en las clases del api. A continuación se muestra un ejemplo:
@Path("/find")@POST@Consumes(MediaType.APPLICATION_JSON)@Produces(MediaType.APPLICATION_JSON)public Finder<E> find(Finder<E> finder) throws AppException;
/** * List all entities.
6.5.6.5. Mapeos de hibernate (JPA)Los modelos que se encuentran en el paquete com.certiorem.cwf.dao.model están anotados para definir el mapeo de los modelos java a sus tablas correspondientes. A continuación se muestra un ejemplo:
1.0 www. certiorem .com
Cikautxo 03/01/2018 24 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
@Entity@Table(name = "ens_result", schema = "dbo", uniqueConstraints = {
@UniqueConstraint(columnNames = "ID_RESULT")})@EntityListeners({
UpdatedListener.class})public class EnsResult implements Serializable, Updatable{
//columnas y campos de la tabla//id@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "ID_RESULT", unique = true, nullable = false)private Long idResult;
@Column(name = "ID_RANGE_DETAIL", columnDefinition = "BIGINT")private Long idRangeDetail;
@Column(name = "TYPE_RESULTS", columnDefinition = "BIGINT")private Long typeResults;
//versionado@Version@Column(name = "VERSION", columnDefinition = "DATETIME")private Date version;
@Column(name = "DATE_RESULTS", columnDefinition = "DATETIME")private Date dateResults;
@Column(name = "DATE_INTROD", columnDefinition = "DATETIME")private Date dateIntrod;
@Column(name = "RESULT_VALUE", columnDefinition = "NVARCHAR(20)"private String resultValue;
@Column(name = "BATCH", columnDefinition = "NVARCHAR(20)")private String batch;
@Column(name = "REMOVED")private Integer removed;
@Column(name = "LAST_USER")private Long lastUser;
@Column(name = "LAST_UPDATE")private Date lastUpdate;
@OneToOne@JoinColumn(name="ID_RANGE_DETAIL", insertable=false,
1.0 www. certiorem .com
Cikautxo 03/01/2018 25 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
7.7. OTRA DOCUMENTACIÓNCon este documento se adjunta en la misma carpeta la siguiente documentación:
Javadocs: la última versión de las javadocs. Documentación técnica de las clases.
Documentación CWF: Varios ficheros con documentación del framework CWF.
1.0 www. certiorem .com
Cikautxo 03/01/2018 26 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
Arquitectura Intranet Cikautxo
0. Índice
8.8. REFERENCIAS Y BIBLIOGRAFÍA
1.0 www. certiorem .com
Cikautxo 03/01/2018 27 - 28La información contenida en este documento es propiedad exclusiva de CERTIOREM. Estos contenidos no podrán ser divulgados total o parcialmente sin la autorización escrita de CERTIOREM.
i https://maven.apache.org/ii https://jcp.org/en/jsr/detail?id=340iii https://git-scm.com/iv http://tomcat.apache.org/v https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacionalvi https://mustache.github.io/vii http://es.wikipedia.org/wiki/Data_Access_Objectviii https://es.wikipedia.org/wiki/Single-page_applicationix http://www.springsource.org/x http://www.hibernate.org/xi https://es.wikipedia.org/wiki/Inversi%C3%B3n_de_controlxii https://jersey.github.io/xiii https://developer.mozilla.org/es/docs/Web/HTTP/Methodsxiv https://github.com/FasterXML/jacksonxv http://www.quartz-scheduler.org/xvi https://es.wikipedia.org/wiki/Cron_(Unix)xvii http://es.wikipedia.org/wiki/JasperReportsxviii http://jquery.com/xix https://es.wikipedia.org/wiki/Document_Object_Modelxx https://momentjs.com/xxi http://underscorejs.org/xxii https://getbootstrap.com/xxiii http://twitter.github.io/hogan.js/xxiv https://jqueryvalidation.org/xxv https://www.i18next.com/xxvi https://datatables.net/xxvii https://visionmedia.github.io/page.js/xxviii https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodelxxix https://es.wikipedia.org/wiki/JAX-RSxxx https://es.wikipedia.org/wiki/JSONxxxi https://es.wikipedia.org/wiki/Java_Persistence_APIxxxii http://hibernate.org/