Frage Spring Web Reactive funktioniert nicht als Kriegsdatei auf Tomcat 8.5


Ich habe Spring Boot (2.0.0 M5) Anwendung, die einige REST API bietet. Ich möchte diese API mit implementieren RouterFunctions.

Während ich app mit embedded Jetty laufen alles funktioniert gut.

Wenn ich die App in WAR-Datei konvertiere (folgende Dokumentation hier) und deploy es zu Tomcat 8.5 bekomme ich immer 404 wenn versucht wird, einen der Endpunkte aufzurufen.

Ich kann im Protokoll sehen, dass Endpunkte erkannt werden:

[ost-startStop-1] s.w.r.r.m.a.RequestMappingHandlerMapping : Mapped "{[/say-hello],methods=[GET]}" onto java.lang.String com.example.demo.DemoController.test()
[ost-startStop-1] o.s.w.r.f.s.s.RouterFunctionMapping: Mapped /api => {
    /v1 => {
       /status -> 
          com.example.demo.DemoApplication$$Lambda$189/1904651750@5fdc83e
   }
}

Aber beim Anrufen curl -v http://localhost:8080/demo/say-hello oder curl -v http://localhost:8080/demo/api/v1/status Ich sehe Standard-Tomcat 404-Seite. Der Pfad ist korrekt, ich benenne .war zu demo.war vor der Bereitstellung.

Ist jemand auf ein ähnliches Problem gestoßen? Sie können den Code finden Hier.


6
2017-10-12 16:38


Ursprung


Antworten:


Ich befürchte, dass das WAR-Bereitstellungsmodell derzeit nicht im Rahmen von Spring Boot for WebFlux unterstützt wird. Spring Framework unterstützt dieses Modell (obwohl ich nicht sicher bin, ob es die Bereitstellung einer App in einem Nicht-Root-Kontext unterstützt).

Sie können immer ein Problem erstellen der Spring-Boot-Problem-Tracker, aber ich bin mir nicht sicher, ob dies implementiert wird, da die Bereitstellung in einem Servlet-Container nicht der primäre Fokus ist (und das kann man nicht mit Netty tun).

Kurznotiz: Hinzufügen @EnableWebFlux ist ein Signal, dass Sie die WebFlux-Konfiguration in Ihren eigenen Händen nehmen möchten und dass der Spring Boot die Dinge in diesem Bereich nicht automatisch für Sie konfigurieren soll.


1
2017-10-12 17:06