Bonjour, je veux deployer une application SpringBoot / Angular sur un serveur externe TOMCAT9 mais quand j'accède à l'url http://localhost:8080/server/, cela me donne l'erreur suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Jun 01 12:49:37 CEST 2022 There was an unexpected error (type=Forbidden, status=403).
Sur la partie back-end, j'ai ajouté les propriétés suivantes
Pour Maven, j'ai ajouté les lignes suivantes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2server.port=8080 server.servlet.context-path=/server
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <packaging>war</packaging> ......... <properties> <start-class>package.StartApplication</start-class> </properties> ......... <dependencies> <!-- dependency for deploying the application with external tomcat --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> .......... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>spring-boot-starter-tomcat</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> </dependency>
Ma classe de lancement de SpringBoot est la suivante
Je génère une archive server.war en executant man package et je la charge sur TOMCAT 9
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 @SpringBootApplication @EnableScheduling public class StartApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(StartApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(StartApplication.class); } @Bean public FilterRegistrationBean<CorsFilter> simpleCorsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.setAllowedOrigins(Collections.singletonList("http://localhost:4200/server")); config.setAllowedMethods(Collections.singletonList("*")); config.setAllowedHeaders(Collections.singletonList("*")); source.registerCorsConfiguration("/**", config); FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source)); bean.setOrder(Ordered.HIGHEST_PRECEDENCE); return bean; } }
Sur la partie front-end, j'utilise Angular
le fichier proxy.config.json est le suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 { "server/api/*": { "target": { "host": "localhost", "protocol": "http", "port": 8080 }, "secure": false, "changeOrigin": true, "logLevel": "info" } }
Le service de base d'API est
et j'exécute la partie front end en exécutant
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.baseUrl = 'http://localhost:4200/server/api';
Code : Sélectionner tout - Visualiser dans une fenêtre à part ng serve --proxy-config proxy.config.json
Partager