Sto sviluppando un'applicazione semplice che utilizza Spring Boot e Spring web starter. Va molto bene quando sto testando con il server Tomcat incorporato (pacchetto JAR). Ho bisogno di eseguire il debug di alcune cose quindi ho pensato che sarebbe stato meglio distribuirlo come WAR su un server Tomcat esterno (o in realtà un server tiv server esterno in bundle su STS).Avvio a molla L'applicazione MVC restituisce l'HTTP 404 quando viene distribuita su un'istanza esterna di Tomcat/tc Server
Ho seguito le procedure indicate su Spring Boot's Documentation e durante l'esecuzione dell'applicazione posso vedere i registri che caricano i miei controller, richieste, ecc. (Sì? No). Una volta che il contenitore è esaurito, qualsiasi richiesta porta a un brutto 404.
Capisco che Spring Boot genererà un contenitore compatibile con Servlet 3, quindi un file web.xml
non dovrebbe essere strettamente richiesto. Tutto quello che devo fare è puntare il punto di ingresso della mia applicazione su una classe che estende SpringBootServletInitializer
. Eccolo:
package com.company.ci.integration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
@SpringBootApplication
public class GitlabWebhookProcessingApplication extends
SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(GitlabWebhookProcessingApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder application) {
return application.sources(GitlabWebhookProcessingApplication.class);
}
}
ho puntare questa classe sul mio file POM in questo modo:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<start-class>com.chemtech.ci.integration.GitlabWebhookProcessingApplication</start-class>
<java.version>1.7</java.version>
</properties>
Come indicato sulla documentazione di cui sopra, questo dovrebbe magicamente lavorare e la mia domanda sarebbe caricato e opere come previsto.
Ah, ecco qui i registri:
Servlet Mapping:
2015-06-07 20:21:16.870 INFO 3373 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2015-06-07 20:21:16.871 INFO 3373 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'errorPageFilter' to: [/*]
2015-06-07 20:21:16.872 INFO 3373 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2015-06-07 20:21:16.872 INFO 3373 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
controller azioni mappatura:
2015-06-07 20:21:20.278 INFO 3373 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/webhooks/mergeRequestComment],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.chemtech.ci.integration.controller.WebhookController.MergeRequestCommentReceiver(java.lang.String,com.chemtech.ci.integration.model.MergeRequestCommentEventRequestBody)
2015-06-07 20:21:20.282 INFO 3373 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-06-07 20:21:20.282 INFO 3373 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],methods=[],params=[],headers=[],consumes=[],produces=[text/html],custom=[]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
E 'importante sottolineare questo funziona a meraviglia con un JAR eseguibile incorporato server. Sto graffiare la mia testa su questo per un po 'e anche cercato di fare come indicato su alcuni altri thread SO:
Spring Boot - custom 404 page with standalone tomcat
http://forum.spring.io/forum/spring-projects/web/745458-spring-boot-v1-0-0-rc3-not-resolving-views-404-error (non del tutto correlato)
sto facendo qualcosa di sbagliato qui? (beh, certo che lo sono. questa è una domanda puramente retorica)
Qualsiasi aiuto sarà molto apprezzato.
Grazie!
Ho passato un giorno a capirlo, grazie per la soluzione ... –