-
Notifications
You must be signed in to change notification settings - Fork 2
Actualizar 6.x.x
En esta sección iremos indicando como mantenerse actualizado con las últimas versiones disponibles de los componentes de , es decir, cuando ya se dispone de una aplicación generada y se desea incorporar las últimas actualizaciones.
Para el proceso de actualización se da por hecho lo siguiente:
- La actualización se realiza sobre una aplicación con la versión previa dentro de la misma mayor version 6.x.x.
- Los ficheros originales de RUP no han sido modificados.
Si lo que buscas es información sobre cómo mantener tu entorno de desarrollo actualizado, debes consultar la sección Instalar o por el contrario, si lo que quieres es actualizar una aplicación con UDA 4.x.x o 5.x.x, debes de consultar la wiki Actualizar 4.x.x o Actualizar 5.x.x respectivamente.
Para actualizar una aplicación UDA a la versión v6.1.1 se deben realizar las siguientes modificaciones.
Para generar código correspondiente a la versión v6.1.1 de UDA, es necesario hacerlo mediante el plugin de generación de código que corresponde a la versión.
De cara a evitar problemas con los despliegues en los entornos WLS 14 con JDK 11 de EJIE, se debe migrar la configuración a Java. Este cambio también permitirá depurar la configuración en caso necesario.
-
Eliminar el fichero de configuración de Jackson
xxxAppWar\WebContent\WEB-INF\spring\jackson-config.xml
-
Eliminar la importación del XML de configuración de Jackson en el fichero
xxxAppWar\WebContent\WEB-INF\spring\app-config.xml
<import resource="jackson-config.xml" />
- Ajustar la ruta de component-scan en el fichero
xxxAppWar\WebContent\WEB-INF\spring\mvc-config.xml
<!-- Crea un bean por cada clase anotada con @Component en el paquete 'com.ejie.xxx' -->
<context:component-scan base-package="com.ejie.xxx" />
- Crear el archivo de configuración
JacksonConfig.java
en la rutaxxxAppWar\src\com\ejie\xxx\config\
package com.ejie.xxx.config;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.ejie.x38.control.method.annotation.RequestJsonBodyMethodArgumentResolver;
import com.ejie.x38.serialization.CustomSerializer;
import com.ejie.x38.serialization.UdaMappingJackson2HttpMessageConverter;
import com.ejie.x38.serialization.UdaModule;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializationFeature;
/**
* Configuración de Jackson.
*/
@ComponentScan("com.ejie.xxx")
@Configuration
@EnableWebMvc
public class JacksonConfig implements WebMvcConfigurer {
/**
* Serializador utilizado por UDA para serializar unicamente las entidades
* deseadas.
*
* @return Devuelve el serializador.
*/
@Bean
public CustomSerializer customSerializer() {
return new CustomSerializer();
}
/**
* HttpMessageConverter de UDA.
*
* @return Devuelve el HttpMessageConverter.
*/
@Bean
public UdaMappingJackson2HttpMessageConverter udaMappingJackson2HttpMessageConverter() {
UdaMappingJackson2HttpMessageConverter httpMessageConverter = new UdaMappingJackson2HttpMessageConverter();
List<MediaType> supportedMediaTypes = new ArrayList<>(httpMessageConverter.getSupportedMediaTypes());
supportedMediaTypes.add(MediaType.valueOf(MediaType.TEXT_PLAIN_VALUE));
supportedMediaTypes.add(MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE));
httpMessageConverter.setSupportedMediaTypes(supportedMediaTypes);
httpMessageConverter.setUdaModule(udaModule());
return httpMessageConverter;
}
/**
* Modulo de UDA para Jackson.
*
* @return Devuelve el módulo.
*/
@Bean
public UdaModule udaModule() {
UdaModule udaModule = new UdaModule();
Map<Class<? extends Object>, JsonSerializer<Object>> serializers = new HashMap<Class<? extends Object>, JsonSerializer<Object>>();
udaModule.setSerializers(serializers);
udaModule.setSerializationFeature(serializationFeature());
udaModule.setDeserializationFeature(deserializationFeature());
return udaModule;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(udaMappingJackson2HttpMessageConverter());
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new RequestJsonBodyMethodArgumentResolver());
}
/**
* Inclusiones de serializacion.
*
* @return Inclusiones a usar.
*/
private List<JsonInclude.Include> serializationInclusions() {
return Arrays.asList(JsonInclude.Include.NON_NULL);
}
/**
* Features de configuracion de la serialización.
*
* @return Features de configuración.
*/
private Map<SerializationFeature, Boolean> serializationFeature() {
return new HashMap<SerializationFeature, Boolean>() {
{
put(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
}
};
}
/**
* Features de configuracion de la deserializacion.
*
* @return Features de configuración.
*/
private Map<DeserializationFeature, Boolean> deserializationFeature() {
return new HashMap<DeserializationFeature, Boolean>() {
{
put(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
};
}
}
Para actualizar una aplicación UDA a la versión v6.1.0 se deben realizar las siguientes modificaciones.
Se debe sustituir la carpeta xxxStatics\WebContent\rup
por la carpeta incluida en el fichero rup.
Para generar código correspondiente a la versión v6.1.0 de UDA, es necesario hacerlo mediante el plugin de generación de código que corresponde a la versión.
Será necesario descargar la nueva versión de x38:
- Actualizar fichero
xxxEar\pom.xml
<properties>
<com.ejie.x38.version>6.1.0-RELEASE</com.ejie.x38.version>
</properties>
La diferencia entre Dynamic Web Module
2.x y 3.1 es significativa en términos de características, funcionalidades y facilidad de uso en el desarrollo de aplicaciones web Java. Estas mejoras responden a la evolución de las especificaciones de Java EE, con la versión 3.0 introduciendo varios cambios importantes que hacen el desarrollo de aplicaciones web más ágil y menos dependiente de configuraciones XML. La versión 3.1 se centra en la funcionalidad y eficiencia de las aplicaciones web.
- Actualizar ficheros
xxxAppWar\.settings\org.eclipse.wst.common.project.facet.core.xml
yxxxStatics\.settings\org.eclipse.wst.common.project.facet.core.xml
<installed facet="jst.web" version="3.1"/>
- Actualizar fichero
xxxEar\pom.xml
<properties>
<org.springframework.version>5.3.39</org.springframework.version>
<org.springframework.security.version>5.8.15</org.springframework.security.version>
</properties>
Cuando la aplicación se despliega en WebLogic 12 o 14, pueden ocurrir errores a la hora de exportar datos de la tabla a un archivo ODS. Para solucionarlo, es necesario incluir en el classpath del servidor las librerías xalan y xercesImpl.
Para ello, se debe incluir la siguiente asignación en el script de arranque startWebLogic
presente en el dominio (las rutas son un mero ejemplo):
- Windows:
@REM ######### export values (PRE_CLASSPATH) #########
set EXT_PRE_CLASSPATH=C:\aplic\n38\lib\xalan\xalan-j_2_7_2\xalan.jar;C:\aplic\n38\lib\xalan\xalan-j_2_7_2\xercesImpl.jar
- Linux:
# ######### export values (PRE_CLASSPATH) #########
EXT_PRE_CLASSPATH="/aplic/n38/lib/xalan/xalan-j_2_7_2/xalan.jar;/aplic/n38/lib/xalan/xalan-j_2_7_2/xercesImpl.jar"
En aquellas aplicaciones en las que el envío de trazas y métricas esté activo, es necesario llevar a cabo los siguientes pasos para eliminar el envío puesto que el servicio de métricas, pronto va a ser dado de baja por parte de EJIE y el envío de trazas a BIG-DATA tampoco tiene un futuro a largo plazo:
- Eliminar del fichero
xxxEar\pom.xml
<dependency>
<groupId>com.ejie</groupId>
<artifactId>w43ta</artifactId>
<version>2.4</version>
</dependency>
- Eliminar del fichero
xxxAppWar\WebContent\WEB-INF\spring\mvc-config.xml
<!-- Audit -->
<bean id="auditController" class="com.ejie.x38.audit.AuditController" />
- Eliminar del fichero
xxxConfig\xxx.properties
todas las propiedades que contengan el prefijomomo
.
Si la aplicación fue generada a partir del asistente de generación de código en la versión 6.0.0, es necesario añadir en la configuración de las migas de pan, concretamente en _layoutLoader.js
, la propiedad i18nId
con el valor que haga referencia al código de la aplicación y nombre del WAR, por ejemplo:
//rastro de migas
$("#xxxAppWar_migas").rup_breadCrumb({
breadCrumb: {},
i18nId: "xxxApp_migas"
});
Permite configurar en las propiedades de la aplicación si se desea redireccionar cuando una petición XHR falla por no disponer de credenciales válidas. La propiedad necesaria para definirlo es xhr.redirectOnError
y admite valores booleanos.
También se podrá definir a dónde redireccionar mediante xhr.unauthorizedPage
, habiendo tres opciones de configuración disponibles:
- Si no se define, redireccionará al endpoint que está securizado.
- Definido a referer, redireccionará al origen desde el que se realizó la petición que falló.
- Definido a una URL, redireccionará siempre a esa URL.
Para que se puedan detectar los errores de autenticación y así redireccionar, es necesario añadir el siguiente controlador del evento ajaxError
en el _layoutLoader.js
:
$(document).on("ajaxError", function(event, jqXHR, ajaxSettings, thrownError) {
if (jqXHR.status === 401 || jqXHR.status === 403) {
window.location.href = jqXHR.getResponseHeader("LOCATION");
}
});
Esta versión trae consigo varias mejoras y cambios que han visto ser necesarios durante las últimas versiones:
- Spring y Spring Security han sido actualizados a la versión 5, volviendo a contar con soporte de forma oficial
- Soporte para WebLogic 14
- Compatibilidad con Tomcat 9
- Soporte de JDK 11
- Soporte de aplicaciones mavenizadas
- Nuevo plugin
- Posibilidad de usar cualquier IDE que soporte WebLogic 14, aunque oficialmente el soporte y las guías son para Eclipse
La actualización de una aplicación UDA desde una versión 4.x.x a la nueva versión v6.0.0 se recoge de forma más detallada en el siguiente documento y desde una versión 5.x.x en este otro documento.
Siempre es recomendable actualizar lo siguiente:
- el entorno de desarrollo.
- el plugin UDA en el IDE de desarrollo.
La documentación y la información contenida en estas páginas se ofrecen bajo licencia
El plugin , las extensiones para Hibernate Tools, las plantillas de generación de código, las librerías de utilidades y los componentes RUP se ofrecen con arreglo a la European Union Public Licence (EUPL), exclusivamente en su versión 1.1.