1.修改yml文件的server端口为tomcat的端口;
server:
port: 8079
address:
2.修改启动类
public class BackendApplication extends SpringBootServletInitializer {
public static void main(String[] args){
SpringApplication.run(BackendApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(BackendApplication.class);
}
}
3.修改pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 我们移除了嵌入式的tomcat,就要添加对应的tomcat依赖包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
4.将SpringBoot项目打包成war包
[INFO] Assembling webapp [backend] in [D:\SVN\disaster-monitor-system\code\java-backend\disaster-monitor-system\system-backend\target\backend-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in [1154 msecs]
[INFO] Building war: D:\SVN\disaster-monitor-system\code\java-backend\disaster-monitor-system\system-backend\target\backend-0.0.1-SNAPSHOT.war
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.4.RELEASE:repackage (repackage) @ backend ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.845 s
[INFO] Finished at: 2020-12-02T13:21:05+08:00
[INFO] Final Memory: 42M/467M
[INFO] ------------------------------------------------------------------------
5.将war包丢到Tomcat的webapps目录下
6.执行startup.bat
如果项目启动成功,会看到SpringBoot的打印信息。
7.测试一下接口是否能调用。
发现接口能调用成功,接口地址中要加上war包的名称。
如果不想加war包名称或者想使用其他名称,可以在server.xml文件中做如下配置:
这样就可以不加项目名直接访问了。
在这里建议把图上的“webapps”去掉。
因为web应用程序都是放在webapps这个目录下的,如果 不把“webapps“去掉。当SpringBoot中使用了@Scheduled注解的话,这里会调用一次quartz的任务调度,在接下来的“<Context path”中又会调用一次quartz的任务调度,所以就重复了2次。
那么@Scheduled注解的方法便会执行两次。(题主亲身踩坑)