SpringBoot项目打成war包部署到Tomcat下

本文介绍了将SpringBoot项目打包部署到Tomcat的详细步骤,包括修改yml文件端口、启动类、pom文件,打包成war包并放入Tomcat的webapps目录,执行启动脚本。还提到测试接口调用,以及在server.xml文件中配置可避免加war包名称访问,同时指出去掉“webapps”可防止@Scheduled注解任务重复执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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注解的方法便会执行两次。(题主亲身踩坑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值