springboot war包部署到tomcat报404

一、问题

用idea启动 springboot 能够正常访问,但是将 war包部署到tomcat却报404,如下图所示:
在这里插入图片描述

二、解决方案

在网上找了很多文章,大部分文章说启动类要继承SpringBootServletInitializer,并且重写configure。我的代码已经这样实现了,但是仍然报404。经过反复查找,最后发现是因为路径错了,正确的路径要带着war包的名称,如下所示:
正确的路径:http://localhost:8080/sb-0.0.1-SNAPSHOT/hello
在这里插入图片描述
其中“sb-0.0.1-SNAPSHOT”是war包的名称:
在这里插入图片描述

三、领悟

之前还有一个疑问,为什么要在url中加上war包名称,后来想明白了,如果没有这个名称tomcat是无法区分访问哪个服务的。

Spring Boot 通常用于创建独立的、生产级别的基于Spring的应用程序,其默认方式是打成一个可执行的jar。然而,有时候出于特定的生产环境需求,我们需要将Spring Boot应用打war部署到外部的Tomcat服务器上。以下是一个基本的步骤说明: 1. **排除内置的Tomcat依赖**:在你的pom.xml文件中,需要将Spring Boot的内嵌Tomcat依赖设置为scope为provided,这样在打的时候就不会将Tomcatwar内。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` 2. **修改启动类**:让Spring Boot的启动类继承`SpringBootServletInitializer`,并重写`configure`方法,这样做是为了让Spring Boot应用能够在外部的Tomcat容器中正常启动。 ```java @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); } } ``` 3. **打应用**:使用Maven或Gradle命令将应用打war。对于Maven,通常使用`mvn clean package`命令。 4. **部署war**:将生成的war文件复制到Tomcat的`webapps`目录下。 5. **启动Tomcat**:启动Tomcat服务器,如果一切顺利,你的Spring Boot应用将作为应用上下文被部署Tomcat中,并可以通过配置的端口和路径访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值