将 Spring Boot WAR 部署到 Tomcat 服务器

一、简介

Spring Boot是配置 框架的约定,它允许我们设置 Spring 项目的生产就绪设置,而Tomcat是最受欢迎的 Java Servlet 容器之一。

默认情况下,Spring Boot 构建了一个独立的 Java 应用程序,它可以作为桌面应用程序运行或配置为系统服务,但有些环境我们无法安装新服务或手动运行应用程序。

与独立应用程序相反,Tomcat 作为服务安装,可以在同一个应用程序进程中管理多个应用程序,无需为每个应用程序进行特定设置。

在本指南中,我们将创建一个简单的 Spring Boot 应用程序并将其调整为在 Tomcat 中工作。

2. 设置 Spring Boot 应用程序

我们将使用可用的入门模板之一设置一个简单的 Spring Boot Web 应用程序:

<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId> 
    <version>2.4.0version> 
    <relativePath/> 
parent> 
<dependencies>
    <dependency> 
        <groupId>org.springframework.bootgroupId> 
        <artifactId>spring-boot-starter-webartifactId> 
    dependency> 
dependencies>

除了标准的*@SpringBootApplication*之外,不需要额外的配置,因为 Spring Boot 负责默认设置。

我们添加一个简单的 REST EndPoint 来为我们返回一些有效的内容:

@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。为此,我们将pom.xml更改为以下内容:

<packaging>warpackaging>

现在,让我们修改最终的WAR文件名以避免包含版本号:

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

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

<dependency>
   <groupId>org.springframework.bootgroupId>
   <artifactId>spring-boot-starter-tomcatartifactId>
   <scope>providedscope>
dependency>

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

@SpringBootApplication
public class SpringBootTomcatApplication extends SpringBootServletInitializer {
}

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

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

4. 将 WAR 部署到 Tomcat

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

  1. 下载Apache Tomcat并解压到tomcat文件夹中

  2. 将我们的 WAR 文件从target/spring-boot-tomcat.war复制到 *tomcat/webapps/*文件夹

  3. 从终端导航到

    tomcat/bin

    文件夹并执行

    1. catalina.bat 运行(在 Windows 上)
    2. catalina.sh 运行(在基于 Unix 的系统上)
  4. 转到http://localhost:8080/spring-boot-tomcat/hello

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

5. 结论

在这个简短的指南中,我们创建了一个简单的 Spring Boot 应用程序,并将其转换为可部署在 Tomcat 服务器上的有效 WAR 应用程序。

与往常一样,示例的完整源代码可在 GitHub 上找到。

你可能感兴趣的:(spring,spring,boot)