玖叶教程网

前端编程开发入门

将Spring Boot WAR 部署

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>2.4.0</version> 
    <relativePath/> 
</parent> 
<dependencies>
    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-web</artifactId> 
    </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>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 依赖项中删除提供的scope)。

4. 将WAR部署到Tomcat

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

  1. 下载Apache Tomcat并将其解压缩到tomcat文件夹中
  2. 将我们的 WAR 文件从 target/spring-boot-deployment.war 复制到 tomcat/webapps/ 文件夹
  3. 从终端导航到 tomcat/bin 文件夹并执行

Catalina.bat run (在 Windows 上)

catalina.sh run(在基于 Unix 的系统上)

  1. 转到 http://localhost:8080/spring-boot-deployment/hello

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

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言