知識庫 / Spring / Spring Boot RSS 訂閱

將 Spring Boot WAR 文件部署到 Tomcat 服務器

DevOps,Spring Boot
HongKong
4
02:02 PM · Dec 06 ,2025

1. 引言

Spring Boot 是一種 約定優於配置 的框架,它允許我們創建一個生產級別的 Spring 項目設置,而 Tomcat 是最流行的 Java Servlet 容器之一。

默認情況下,Spring Boot 構建一個獨立的 Java 應用程序,它可以作為桌面應用程序運行,也可以配置為系統服務。然而,在某些環境中,我們無法安裝新的服務或手動運行應用程序。

與獨立應用程序相比,Tomcat 作為一種服務安裝,可以管理同一應用程序進程中的多個應用程序,從而避免為每個應用程序設置特定的配置。

在本教程中,我們將創建一個簡單的 Spring Boot 應用程序並將其配置為在 Tomcat 中運行。

2. 設置 Spring Boot 應用程序

讓我們使用可用的啓動模板之一,來設置一個簡單的 Spring Boot Web 應用程序:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>3.1.5</version> 
    <relativePath/> 
</parent> 
<dependencies>
    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
</dependencies>

請確保獲取 spring-boot-starter-parentspring-boot-starter-web 的最新版本。

無需進行額外的配置,除了標準的 @SpringBootApplication,因為 Spring Boot 會處理默認設置。

接下來,我們將添加一個簡單的 REST 端點以返回一些有效內容:

@RestController
public class TomcatController {

    @GetMapping("/hello")
    public Collection<String> sayHello() {
        return IntStream.range(0, 10)
          .mapToObj(i -> "Hello number " + i)
          .collect(Collectors.toList());
    }
}

最後,我們將使用 mvn spring-boot:run, 並在 http://localhost:8080/hello 啓動瀏覽器以檢查結果。

3. 創建 Spring Boot WAR 包

Servlet 容器期望應用程序滿足一定的合同才能部署。對於 Tomcat,合同是 Servlet API 3.0

為了使我們的應用程序滿足此合同,我們需要對源代碼進行一些小的修改。

首先,我們需要打包 WAR 應用程序而不是 JAR。為此,我們將更改 <em pom.xml</em> 的內容如下:

<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 package。 隨後,WAR 文件位於 target/spring-boot-deployment.war (假設 Maven 的 artifactId 是 “spring-boot-deployment”)。

我們應該考慮這種新的設置使得我們的 Spring Boot 應用程序成為一個非獨立應用程序(如果想要再次使其在獨立模式下運行,可以從 tomcat 依賴中移除 provided 作用域)。

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 run (在基於 Unix 的系統上)
  4. 前往 http://localhost:8080/spring-boot-deployment/hello

這只是一個快速 Tomcat 設置,請查閲 Tomcat 安裝指南以獲取完整的設置指南。 還有其他部署 WAR 文件到 Tomcat 的方法。

5. 結論

在本文中,我們創建了一個簡單的 Spring Boot 應用程序,並將其轉換為可在 Tomcat 服務器上部署的有效 WAR 應用程序。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.