起因:外置Tomcat启动springboot项目网上都有很多方法,也是可行的,但是项目中集成了Quartz框架,因为存在项目2次启动,所以任务也被启动了两次,所以需要解决这个问题。
问题描述:外置Tomcat启动springboot项目时,如何配置,如何避免2次启动问题:
解决方案:第一步:去除springboot内置tomcat
<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>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
第二步:启动类上继承 SpringBootServletInitializer,重写configure方法。
@SpringBootApplication
public class Test12Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder){
return springApplicationBuilder.sources(Test12Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Test12Application.class, args);
}
}
2020.05.29修正:不要配置server.xml的Context标签:<Context docBase="web-sys" path="" name="/web-sys"/>,直接启动即可,如果配置了才会启动两次