I just created a new application using Spring boot 2 M7 and I'm using spring-webflux.
I built the application as an autoexecutable war that I can start in dev with java -jar app.war and also on a standalone tomcat server for UAT purpose.
In the web reactive reference doc, I read
To deploy as a WAR to a Servlet 3.1+ container, wrap HttpHandler with ServletHttpHandlerAdapter and register that as a Servlet. This can be automated through the use of AbstractReactiveWebInitializer.
Baeldung site also wrote about it and they describe a procedure to register a servlet that wrap the router for a standalone environment.
Using Spring boot tomcat starter, I didn't need to do anything : no code about booting the server necessary ; the app starts using the embedded server. In debug I saw NIO access so all seems fine.
I didn't try yet but what will happen on a standalone tomcat using Spring boot tomcat starter and webflux starter ? Is spring boot take care of everything (embbeded and standalone tomcat) ? how does it work ?
Related
I want to a deploy Spring Cloud Gateway but it is built on Spring Framework 5, Project Reactor.
Can I create a WAR file and deploy it on a traditional application server such as Jboss or Tomcat.
The Spring documentation in this page says it is possible.
Spring WebFlux is supported on Tomcat, Jetty, Servlet 3.1+ containers
Note:
this is Spring Cloud Gateway project link
https://spring.io/projects/spring-cloud-gateway
I don't think this is possible, as Spring Cloud Gateway is itself a Spring Boot WebFlux application and this use case is only supported with embedded servers, as mentioned in the Spring Boot reference documentation.
The application runs fine on spring boot embedded tomcat 8.5.28 (gradle bootRun) but when I create the war and put the same in stand alone tomcat server (8.5.28) the application always throws 404 for any of the routes configured.
The application runs fine on spring boot embedded tomcat 8.5.28 (gradle bootRun) but when I create the war and put the same in stand alone tomcat server (8.5.28) the application always throws 404 for any of the routes configured.
Spring Boot 2.0 does not currently support WAR deployment for WebFlux applications.
See the Spring Boot issue you created: https://github.com/spring-projects/spring-boot/issues/12455
I have a Spring Boot application that uses Thymeleaf for email templating. My application is not a web application though.
However, when including the spring boot starter thymeleaf dependency:
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
Spring MVC is transitively included and eventually Servlet.class in my class path signaling that my application is a web application... which then has the undesirable result of running my application in the Tomcat servlet container (by default on port 8080).
How can I use the features of Spring Boot Thymeleaf (such as configuring in a props file ala https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html) without my application running as a web application?
Setting the following property as follows prevents the Spring Boot application from running as web application:
spring.main.web-environment=false
I am trying to deploy multiple spring boot web app on tomcat. All have the same application.properties.How can I split the configuration files for different app running on tomcat.
Spring Boot doesn't require an external Tomcat, because it contains its own embedded Tomcat. So you can run all of your application in it's own Tomcat on the same machine. All you have to do is to define different ports for your applications via server.port property.
I am using spring-boot to develop webservices, but I don't want to use WsConfigurerAdapter to define a WSDL and all, because I want to deploy my war into WAS7 and it does not support Servlet 3.0. So how would I add a web.xml configuration into my application.
Spring Boot doesn't support Servlet 2.5 out of the box, however you can use Spring Boot Legacy to get things working. Take a look at the Google App Engine sample application for an example of how to use Spring Boot Legacy and web.xml.
You may also be interested in this Spring Boot issue which is proposing to make Spring Boot Legacy an official part of Spring Boot.