将 Spring Boot WAR 部署到 Tomcat 服务器

发布时间 2023-12-23 21:20:27作者: zyp_java_net

Servlet 容器期望应用程序满足要部署的某些协定。对于 Tomcat,合约是 Servlet API 3.0

为了让我们的应用程序满足这个契约,我们必须对源代码进行一些小的修改。

 

首先,我们需要打包一个 WAR 应用程序而不是 JAR。为此,我们将使用以下内容更改 pom.xml

<packaging>war</packaging>

接下来,我们将修改最终的 WAR 文件名,以避免包含版本号:

<build>
    <finalName>${artifactId}</finalName>
    ... 
</build>

然后,我们将添加 Tomcat 依赖项:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</scope>
</dependency>

最后,我们将通过实现 SpringBootServletInitializer 接口来初始化 Tomcat 所需的 Servlet 上下文

@SpringBootApplication
public class SpringBootTomcatApplication extends SpringBootServletInitializer {
}

为了构建我们的 Tomcat 可部署的 WAR 应用程序,我们将执行 mvn clean 包。之后,我们的WAR文件在target/spring-boot-deployment.war中生成(假设Maven artifactId为“spring-boot-deployment”)。

 

我们应该考虑到,这个新设置使我们的Spring Boot应用程序成为一个非独立的应用程序(如果我们想让它再次以独立模式工作,我们可以从tomcat依赖项中删除提供的范围)。

4. 将 WAR 部署到 Tomcat

 

要在 Tomcat 中部署和运行 WAR 文件,我们需要完成以下步骤:

  1. 下载 Apache Tomcat 并将其解压缩到 tomcat 文件夹中
  2. 将我们的WAR文件从target/spring-boot-deployment.war复制到tomcat/webapps/文件夹
  3. 在终端中,导航到 tomcat/bin 文件夹并执行
    1. catalina.bat run(在Windows上)
    2. catalina.sh 运行(在基于 Unix 的系统上)
  4. 前往 http://localhost:8080/spring-boot-deployment/hello

这是一个快速的 Tomcat 设置,因此请查看 Tomcat 安装指南以获取完整的设置指南。还有其他方法可以将 WAR 文件部署到 Tomcat