一個普通的 spring-web 應用程式可以部署到tomcat獨立的war檔案中,如下所示:
@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
spring-webflux問題:遷移到tomcat后如何部署這樣的應用程式?
檔案說: https ://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-httphandler
要作為 WAR 部署到任何 Servlet 3.1 容器,您可以在 WAR 中擴展并包含 AbstractReactiveWebInitializer。該類使用 ServletHttpHandlerAdapter 包裝一個 HttpHandler 并將其注冊為 Servlet。
所以,但沒有例子如何。
我嘗試如下,它給出了一個例外:
@SpringBootApplication
public class MyApplication extends AbstractReactiveWebInitializer {
@Override
protected Class<?>[] getConfigClasses() {
return new Class[] {MyApplication.class};
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
結果:
MyApplication.java:13:8
java: cannot access javax.servlet.ServletException
class file for javax.servlet.ServletException not found
uj5u.com熱心網友回復:
您應該遵循Spring Boot Guide on Traditional Deployment。這說明您需要spring-boot-starter-tomcat(因為那是您選擇的服務器)提供的范圍。否則,它可能會開始添加您不需要的額外 jar,這些 jar 可能(并且可能會)干擾部署。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
您還可以將生成的 WAR 檔案作為常規應用程式運行。因此,您可以構建 WAR,然后執行java -jar your.war它就會啟動。或者您可以只運行帶@SpringBootApplication注釋的類(盡管根據我的經驗,如果您使用可能無法 100% 作業的 JSP)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/440620.html
標籤:爪哇 春天 弹簧靴 spring-webflux
