| Estado | ||||
|---|---|---|---|---|
|
Como siguiente evolución del framework FundeWebJS, se ha desarrollado un proyecto que actuará de parent maven para todas nuestras APIs.
Además, se ha desarrollado una librería starter para incluir dependencias y configuraciones comunes.
...
| Info |
|---|
El parent de FundeWebJS se ha desarrollado con la versión de Spring-Boot 2.7.1012. |
A continuación se detallan los pasos a realizar para completar la migración:
...
Sustituir la etiqueta <parent> completa por:
Bloque de código language xml <parent> <groupId>es.um.atica</groupId> <artifactId>fundewebjs-api-parent</artifactId> <version>1.0.2<3</version> <relativePath>../pom.xml</relativePath> </parent>
En la etiqueta groupId de la aplicación, añadir "fundewebjs" a "<groupId>es.um.atica</groupId>". Por ejemplo, para la aplicación api-base quedaría:
Bloque de código language xml <groupId>es.um.atica.fundewebjs</groupId> <artifactId>api-base</artifactId>
En la etiqueta <properties> dejar las siguientes:
Bloque de código language xml <properties> <java.version>11</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties>
Si la aplicación tenía otras propiedades configuradas, habrá que valorar si siguen siendo necesarias teniendo en cuenta que la mayoría de las dependencias y versiones están fijadas por la librería fundewebjs-spring-boot-starter .
Se recomienda quitarlas todas e ir añadiendo posteriormente solo las necesarias cuando se traten las dependencias en el apartado e .Advertencia NUNCA deben configurarse las propiedades de versiones de spring-boot o spring-cloud .
Si existe la etiqueta <dependencyManagement> sustituir por el siguiente código. Si no existe, añadirla:
Bloque de código language xml <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Como se ha mencionado en el apartado anterior, la mayoría de dependencias necesarias vienen ya incluidas con fundewebjs-spring-boot-starter.
Si nuestro pom.xml incluía en dependencyManagement la dependencia bom de spring-cloud (spring-cloud-dependencies), se recomienda eliminarla y terminar la configuración del pom.xml.
Si finalmente fuera necesario, se puede incluir el bom de spring-cloud dentro de dependencyManagement exactamente así:Bloque de código language xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency>En la etiqueta <dependencies> la mayoría de las dependencias ya no van a ser necesarias.
Se recomienda copiar todas las dependencias a un fichero .txt aparte y sustituir toda la etiqueta por:Bloque de código language xml <dependencies> <dependency> <groupId>es.um.atica</groupId> <artifactId>fundewebjs-spring-boot-starter</artifactId> </dependency> </dependencies>
Esta dependenciafundewebjs-spring-boot-starter engloba todas las librerías necesarias para trabajar con una aplicación FundeWebJS estándar.
Con la vista Dependency Hierarchy (o con Effective pom) del fichero pom.xml podemos tener una visión global de todas las librerías importadas por fundewebjs-spring-boot-starter y comparar con las que teníamos configuradas.
Después de este cambio se aconseja realizar un maven update project con force.
Si hay errores en el código, se recomienda revisar el fichero .txt con las dependencias antiguas y añadir la que sea necesaria.
En la etiqueta <build> configurar los siguientes pluginsInfo Este es el apartado más complicado de la migración, en caso de dudas sobre las librerías poner Jira a DJ-AT-MNCS como se indica al final de esta guía.
Si aparece una ventana de error de eclipse al hacer build, pinchar con el botón derecho en el proyecto => Properties => Builders => Deshabilitar CDI (Contexts and Dependency Injection) Builder y aplicar.
Advertencia Si se usaban librerías de FundeWebJS antes de la migración, hay que modificar el groupId de la dependencia estableciéndolo siempre a "es.um.atica.fundewebjs" y quitar la versión.
Por ejemplo:
<build> <plugins> <plugin> <groupId>org.hibernate.orm.tooling<Bloque de código language xml <!-- ANTES
<artifactId>hibernate-enhance-maven-plugin<DE LA MIGRACIÓN --> <dependency> <groupId>es.um.atica.fundewebjs.fundewebjs-api</groupId>
<artifactId>fundewebjs-session</artifactId>
plugin><version>${fdwjs.version}</version> </
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>dependency>
Info Si el plugin para generar clientes SOAP estaba configurado, <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId>, hay que mantenerlo configurado tal cuál estaba.
<!-- DESPUÉS DE LA MIGRACIÓN --> <dependency> <groupId>es.um.atica.fundewebjs</groupId> <artifactId>fundewebjs-session</artifactId> </dependency>Info Este es el apartado más complicado de la migración, en caso de dudas sobre las librerías poner Jira a DJ-AT-MNCS como se indica al final de esta guía.
En la etiqueta <repositories> configurar el repositorio de archiva de fundewebjsAdvertencia Si se realizan test con base de datos en memoria H2 es necesario añadir la siguiente dependencia
:
<repositories> <repository> <id>fundewebjs-archiva</id> <name>ATICA - UMU Repository - FundeWebJS</name> <url>https://archiva.um.es/archiva/repository/FundeWebJS/</url> </repository> </repositories>Bloque de código language xml <!-- Test DB --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency>En la etiqueta <build> configurar los siguientes pluginsUna vez realizados estos pasos, realizar un maven update project con la casilla Force Update of Snapshots/Releases marcada.
Ejemplo de pom.xml migrado:Bloque de código language xml theme Eclipse firstline 1 title Ejemplo pom.xml linenumbers true collapse true <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>es.um.atica</groupId> <artifactId>fundewebjs-api-parent</artifactId> <version>1.0.2</version> <relativePath>../pom.xml</relativePath> </parent> <groupId>es.um.atica.fundewebjs</groupId> <artifactId>acade-api-certificados</artifactId> <version>0.0.1-SNAPSHOT</version> <name>acade-api-api</name> <description>Acade API Certificados</description> <properties> <java.version>11</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>es.um.atica</groupId> <artifactId>fundewebjs-spring-boot-starter</artifactId> </dependency> </dependencies> <repositories> <repository> <id>fundewebjs-archiva</id> <name>ATICA - UMU Repository - FundeWebJS</name> <url>https://archiva.um.es/archiva/repository/FundeWebJS/</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.hibernate.orm.tooling</groupId> <artifactId>hibernate-enhance-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- SOAP --> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.14.0</version> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <args> <arg>-XautoNameResolution</arg> </args> <schemaLanguage>WSDL</schemaLanguage> <generateDirectory>${project.basedir}/src/main/java</generateDirectory> <generatePackage>es.um.atica.acade-api.soap.gen</generatePackage> <schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory> <schemaIncludes> <include>ServicioRegistroUMU.wsdl</include> </schemaIncludes> </configuration> </plugin> </plugins> </build> </project>
2. Clase Application.
La clase application es la clase principal de nuestro proyecto, contiene el método main que se ejecuta al arrancar la aplicación y tiene la anotación @SpringBootApplication.
Habitualmente se encuentra en el paquete raíz de la aplicación.
...
| Bloque de código | ||
|---|---|---|
| ||
@SpringBootApplication( scanBasePackages = {
"es.um.atica.MIPAQUETE", "es.um.atica.fundewebjs"
} )
public class MIAPLICACIONApiApplication |
3. Configuración CORS.
...
| Bloque de código | ||
|---|---|---|
| ||
CorsConfigurationSource corsConfigurationSource() {
final CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOriginPatterns( Arrays.asList( "*" ) );
configuration.setAllowedMethods( Arrays.asList( "*" ) );
configuration.setAllowedHeaders( Arrays.asList( "*" ) );
configuration.setAllowCredentials( true );
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration( "/**", configuration );
return source;
} |
...
<build> <plugins> <plugin> <groupId>org.hibernate.orm.tooling</groupId> <artifactId>hibernate-enhance-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>Info Si el plugin para generar clientes SOAP estaba configurado, <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId>, hay que mantenerlo configurado tal cuál estaba.
En la etiqueta <repositories> configurar el repositorio de archiva de fundewebjs:
Bloque de código language xml <repositories> <repository> <id>fundewebjs-archiva</id> <name>ATICA - UMU Repository - FundeWebJS</name> <url>https://archiva.um.es/archiva/repository/FundeWebJS/</url> </repository> </repositories>Una vez realizados estos pasos, realizar un maven update project con la casilla Force Update of Snapshots/Releases marcada.
Ejemplo de pom.xml migrado:Bloque de código language xml theme Eclipse firstline 1 title Ejemplo pom.xml linenumbers true collapse true <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>es.um.atica</groupId> <artifactId>fundewebjs-api-parent</artifactId> <version>1.0.3</version> <relativePath>../pom.xml</relativePath> </parent> <groupId>es.um.atica.fundewebjs</groupId> <artifactId>acade-api-certificados</artifactId> <version>0.0.1-SNAPSHOT</version> <name>acade-api-api</name> <description>Acade API Certificados</description> <properties> <java.version>11</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>es.um.atica</groupId> <artifactId>fundewebjs-spring-boot-starter</artifactId> </dependency> </dependencies> <repositories> <repository> <id>fundewebjs-archiva</id> <name>ATICA - UMU Repository - FundeWebJS</name> <url>https://archiva.um.es/archiva/repository/FundeWebJS/</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.hibernate.orm.tooling</groupId> <artifactId>hibernate-enhance-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- SOAP --> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.14.0</version> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <args> <arg>-XautoNameResolution</arg> </args> <schemaLanguage>WSDL</schemaLanguage> <generateDirectory>${project.basedir}/src/main/java</generateDirectory> <generatePackage>es.um.atica.acade-api.soap.gen</generatePackage> <schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory> <schemaIncludes> <include>ServicioRegistroUMU.wsdl</include> </schemaIncludes> </configuration> </plugin> </plugins> </build> </project>
...
2. Clase Application.
La clase application es la clase principal de nuestro proyecto, contiene el método main que se ejecuta al arrancar la aplicación y tiene la anotación @SpringBootApplication.
Habitualmente se encuentra en el paquete raíz de la aplicación.
De cara la migración hay que realizar la siguiente configuración:
a. En caso de no estar configurado ya, añadir el paquete "es.um.atica.fundewebjs" al parámetro scanBasePackages de la anotación @SpringBootApplication. :
| Bloque de código | ||
|---|---|---|
| ||
@SpringBootApplication( scanBasePackages = {
"es.um.atica.MIPAQUETE", "es.um.atica.fundewebjs"
} )
public class MIAPLICACIONApiApplication |
...
3. Configuración CORS.
Si tenemos una clase CorsConfig o un método CorsConfigurationSource corsConfigurationSource() en una clase con @Configuration con el siguiente contenido:
| Bloque de código | ||
|---|---|---|
| ||
CorsConfigurationSource corsConfigurationSource() {
final CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOriginPatterns( Arrays.asList( "*" ) );
configuration.setAllowedMethods( Arrays.asList( "*" ) );
configuration.setAllowedHeaders( Arrays.asList( "*" ) );
configuration.setAllowCredentials( true );
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration( "/**", configuration );
return source;
} |
a. Hay que eliminar la clase CorsConfig o el método corsConfigurationSource. (lo que exista).
| Info |
|---|
Esta configuración, a partir de ahora, se realizará con la clase FundeWebJSCorsConfig de la librería fundewebjs-spring-boot-starter. |
...
4. Configuración Security.
Si tenemos una clase SecurityConfig con la siguiente configuración:
| Bloque de código | ||||
|---|---|---|---|---|
| ||||
################# Para versiones de Spring-Boot anteriores a 2.7
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Value( "${server.scopes}" )
private String[] serverScopes;
@Value( "${app.server.path}" )
private String apiPath;
@Bean
public FundeWebJSLoggingAuthorizationFilter loggingFilterBean() {
return new FundeWebJSLoggingAuthorizationFilter |
| Info |
|---|
Esta configuración, a partir de ahora, se realizará con la clase FundeWebJSCorsConfig de la librería fundewebjs-spring-boot-starter. |
4. Configuración Security.
...
| Bloque de código | ||||
|---|---|---|---|---|
| ||||
################# Para versiones de Spring-Boot anteriores a 2.7 public class SecurityConfig extends WebSecurityConfigurerAdapter { @Value( "${server.scopes}" ) private String[] serverScopes; @Value( "${app.server.path}" ) private String apiPath; @Bean public FundeWebJSLoggingAuthorizationFilter loggingFilterBean() { return new FundeWebJSLoggingAuthorizationFilter(); } @Override protected void configure( HttpSecurity http ) throws Exception { http.requestMatchers().antMatchers( "/public/**" ).and().requestMatchers().antMatchers( apiPath + "/**" ).and() .sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS ) // configuro politica de sesion sin estado .and().cors() // Aniado configuracion CORS por defecto .and().csrf().disable().authorizeRequests().mvcMatchers( apiPath + "/public/**" ).permitAll() .mvcMatchers( apiPath + "/**" ).hasAnyAuthority( serverScopes ).anyRequest().authenticated().and() .addFilterAfter( loggingFilterBean(), BearerTokenAuthenticationFilter.class ) .oauth2ResourceServer().jwt(); } } ############### O bien:@Override ############### En versiones de Spring-Boot 2.7.X public class SecurityConfig { @Value( "${server.scopes}" ) private String[] serverScopes; @Value( "${app.server.path}" ) private String apiPath; @Bean public FundeWebJSLoggingAuthorizationFilter loggingFilterBean() {protected void configure( HttpSecurity http ) throws Exception { http.requestMatchers().antMatchers( "/public/**" ).and().requestMatchers().antMatchers( apiPath + "/**" ).and() .sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS ) return new FundeWebJSLoggingAuthorizationFilter(); } // configuro politica de sesion sin estado @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .and().cors() // Aniado configuracion CORS por defecto http.requestMatchers .and().antMatchers( "/public/**" csrf().anddisable().requestMatchersauthorizeRequests().antMatchersmvcMatchers( apiPath + "/public/**" ).andpermitAll() .sessionManagementmvcMatchers().sessionCreationPolicy( SessionCreationPolicy.STATELESS ) apiPath + "/**" ).hasAnyAuthority( serverScopes ).anyRequest().authenticated().and() // configuro politica de sesion sin estado.addFilterAfter( loggingFilterBean(), BearerTokenAuthenticationFilter.class ) .andoauth2ResourceServer().corsjwt(); // Aniado configuracion CORS por defecto .and().csrf().disable().authorizeRequests().mvcMatchers( apiPath + "/public/**" ).permitAll() } } ############### O bien: ############### En versiones de Spring-Boot 2.7.X public class SecurityConfig { @Value( "${server.scopes}" ) private String[] serverScopes; .mvcMatchers( apiPath +@Value( "/**${app.server.path}" ).hasAnyAuthority( serverScopes ).anyRequest().authenticated().and() private String apiPath; @Bean public .addFilterAfter(FundeWebJSLoggingAuthorizationFilter loggingFilterBean(), BearerTokenAuthenticationFilter.class ) { return new .oauth2ResourceServerFundeWebJSLoggingAuthorizationFilter().jwt();; } @Bean public SecurityFilterChain returnfilterChain(HttpSecurity http.build(); ) throws Exception { } } |
...
| Info |
|---|
La configuración de seguridad estándar se realizará, a partir de ahora, en la clase FundeWebJSSecurityConfig incluida en la librería fundewebjs-spring-boot-starter. |
...
5. application.properties local
En el fichero application.properties local hay que añadir, si no estaban ya incluidas, las propiedades:
| Bloque de código |
|---|
fdwjs.api.lagar.enable=true
fdwjs.api.lagar.headers=UMU-User-UUID,UMU-Client-APP |
6. ForwardedHeaderFilter
Si la aplicación tiene un @Bean ForwardedHeaderFilter declarado, eliminarlo.
7. Pruebas
...
Cambios Spring-Boot 2.7.X
Como se ha mencionado anteriormente, el parent FundeWebJS se ha desarrollado con la versión de Spring-Boot 2.7.10.
Si nuestro proyecto estaba desarrollado con versiones anteriores de Spring-Boot, es posible que haya que realizar modificaciones en nuestro código para adaptarlo a 2.7.10.
En la sección de Referencias se dejan enlaces a las guías de migración de cada versión de Spring-Boot.
Algunos cambios conocidos en aplicaciones existentes:
...
| Bloque de código |
|---|
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency> |
...
@EntityScan ahora soporta el atributo basePackages para especificar el escaneado de entidades en diferentes paquetes.
http.requestMatchers().antMatchers( "/public/**" ).and().requestMatchers().antMatchers( apiPath + "/**" ).and()
.sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS )
// configuro politica de sesion sin estado
.and().cors() // Aniado configuracion CORS por defecto
.and().csrf().disable().authorizeRequests().mvcMatchers( apiPath + "/public/**" ).permitAll()
.mvcMatchers( apiPath + "/**" ).hasAnyAuthority( serverScopes ).anyRequest().authenticated().and()
.addFilterAfter( loggingFilterBean(), BearerTokenAuthenticationFilter.class )
.oauth2ResourceServer().jwt();
return http.build();
}
} |
a. Hay que eliminar dicha clase SecurityConfig.
| Info |
|---|
La configuración de seguridad estándar se realizará, a partir de ahora, en la clase FundeWebJSSecurityConfig incluida en la librería fundewebjs-spring-boot-starter. |
Este es un punto importante. Ante cualquier duda ponga Jira como se indica al final de esta página.
...
5. application.properties local
En el fichero application.properties local hay que añadir, si no estaban ya incluidas, las propiedades:
| Bloque de código |
|---|
fdwjs.api.lagar.enable=true
fdwjs.api.lagar.headers=UMU-User-UUID,UMU-Client-APP |
...
6. ForwardedHeaderFilter
Si la aplicación tiene un @Bean ForwardedHeaderFilter declarado, eliminarlo.
...
7. Pruebas
Una vez realizados todos los cambios, hay que comprobar:
- que la aplicación despliega en local correctamente.
- que los tests se siguen pasando con normalidad.
- probar que los endpoints siguen funcionando, con el foco en la correcta securización con los tokens oauth.
- mergear a desarrollo y comprobar que la imagen nueva ha desplegado y que todo funciona correctamente.
...
Cambios Spring-Boot 2.7.X
Como se ha mencionado anteriormente, el parent FundeWebJS se ha desarrollado con la versión de Spring-Boot 2.7.12.
Si nuestro proyecto estaba desarrollado con versiones anteriores de Spring-Boot, es posible que haya que realizar modificaciones en nuestro código para adaptarlo a 2.7.12.
En la sección de Referencias se dejan enlaces a las guías de migración de cada versión de Spring-Boot.
Algunos cambios conocidos en aplicaciones existentes:
- SecurityConfig: La clase WebSecurityConfigurerAdapter está deprecada. Hay que eliminarla y crear la configuración con SecurityFilterChain.
Junit: La versión de Junit se ha actualizado de 4 a 5. Algunas clases empleadas en los tests pueden haberse modificado. Se pueden buscar las equivalentes en Junit 5 o seguir manteniendo Junit 4 con:
| Bloque de código |
|---|
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency> |
@EntityScan ahora soporta el atributo basePackages para especificar el escaneado de entidades en diferentes paquetes.
La version de H2 en Spring-Boot 2.7.12 ha cambiado a 2.1.214.
Si la ejecución de los tests con H2 falla, se recomienda ver la versión de h2 utilizada en la rama previa la migración (con la vista Effective pom del pom.xml), y fijar la versión anterior en la dependencia de H2.
Por ejemplo, un proyecto con Spring-Boot 2.6.0 previo a la migración, si tiene errores en los tests relativos a h2, debe fijar la dependencia así:Bloque de código <!-- Test DB --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200</version> <scope>test</scope> </dependency>
... esta lista se irá incrementando conforme se vayan descubriendo modificaciones....Info Ver la sección de Referencias para ampliar información.
...
JAVA 11
Para trabajar con los proyectos FundeWebJS es necesario tener configurado Java 11 en nuestro eclipse de FundeWeb 2.1.
Si aparecen muchos errores al importar el proyecto, es necesario realizar la configuración de la siguiente página => Migración de Java 8 a Java 11#ConfigurarJava11enEclipse.
...
Dependencias entre APIs
En el application.properties del Helm Chart de la aplicación hay que comprobar que existe la property:
| Bloque de código |
|---|
service.dependencies=rrhh-serviciosrrhh-api-ns-[ENTORNO].serviciosrrhh-api-service |
En caso de que exista, sustituir por:
| Bloque de código |
|---|
service.dependencies=rrhh-serviciosgente-api-ns-[ENTORNO].serviciosgente-api-service |
Manteniendo el mismo [ENTORNO], que puede tomar los valores: "desa", "test" y "prod".
...
Configuración local para invocar /afiliacion
Con el nuevo parent, la librería fundewebjs-serviciosrrhh-client pasa a obtener los datos de la aplicación rrhh/serviciosgente-api.
Aunque el cambio es transparente (no hay que modificar nada en código), si se trabaja en local contra el entorno de testhace falta configurar el application.properties de la siguiente manera:
| Bloque de código |
|---|
...
app.env=test
rrhh.sgente.service.url=https://apitest.um.es
...
cas.url=https://apitest.um.es/mncs/api-umu
... |
| Info |
|---|
Esta configuración es SÓLO para trabajar en local. En Helm Chart no hay que realizar ningún cambio |
...
. |
...
Dudas y soporte
Si se tiene alguna duda o problema siguiendo esta página, poner Jira a:
...
- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes
- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes
- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Release-Notes
- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes
- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7-Release-Noteswiki/Spring-Boot-2.7-Release-Notes
- Migración de Java 8 a Java 11
- Creación y estructura de proyecto SpringBoot
- Despliegues y configuración de los entornos con HelmChart
- Dependencias entre APIs
| Contenido por etiqueta | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| Propiedades de página | ||
|---|---|---|
| ||
| ||
| Info | ||
| Crear una rama git local nueva para realizar los cambios de la migración. |

