Spring Boot 包含一个嵌入式 Tomcat 服务器,可以轻松运行 Web 应用程序。应用程序代码、库和嵌入式 Tomcat 服务器打包在一个可执行 JAR 中,无需任何额外的服务器设置即可从命令行运行。
但是,嵌入式 Tomcat 服务器并不适合所有环境。可能应该使用独立的 Tomcat 服务器。
在本文中,我们将介绍如何将 Spring boot 应用程序 WAR 部署到独立的 Tomcat 实例。
我们将使用可用的入门模板之一设置一个简单的 Spring Boot Web 应用程序:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
...
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
除了标准之外,不需要额外的配置@SpringBootApplication,因为 Spring Boot 负责默认设置。
我们添加一个简单的 REST EndPoint 来为我们返回一些有效的内容:
我们需要告诉 Spring Boot 不要使用其嵌入式 Tomcat 作为应用程序的 servlet 容器。
将以下依赖项添加到 pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
现在,让我们将包类型从 JAR 更改为 WAR
更改 pom.xml 中的打包属性:
<packaging>war</packaging>
现在,让我们修改最终的 WAR 文件名以避免包含版本号:
<build>
<finalName>${artifactId}</finalName>
...
</build>
SpringBootServletInitializer
的类我们将创建一个类 ServletInitializer
,它将为配置扩展类 SpringBootServletInitializer
。覆盖 configure() 方法来告诉 Spring Boot 关于这个类,如下所示。
这使得我们的应用程序兼容在单独的 servlet 容器内运行。
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBootMavenDeployApplication.class);
}
}
Spring Boot 主类。
@SpringBootApplication
public class SpringBootMavenDeployApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMavenDeployApplication.class, args);
}
}
(这是一个可选部分)我们为此示例创建了一个 Rest Controller 来显示数据,而不是默认的 Spring Boot White Label Error 页面。
@RestController
public class HomeController {
@GetMapping("/")
public Collection<String> sayHello() {
return IntStream.range(0, 10)
.mapToObj(i -> "Counter Number " + i)
.collect(Collectors.toList());
}
}
为了构建我们的 Tomcat 可部署 WAR 应用程序,我们执行 mvn clean package
。 之后,我们的 WAR 文件在 target/Spring-Boot-Maven-Deploy.war 生成(假设 Maven artifactId 是“Spring -启动-Maven-部署”)。
我们应该考虑到这种新设置使我们的 Spring Boot 应用程序成为非独立应用程序(如果您希望它再次以独立模式工作,请从 tomcat 依赖项中删除 provided 范围)。
要在 Tomcat 中部署和运行我们的 WAR 文件,我们需要完成以下步骤:
Download Apache Tomcat 并将其解包到 tomcat 文件夹中
将我们的 WAR 文件从 target/Spring-Boot-Maven-Deploy.war 复制到 tomcat/webapps/ 文件夹
从终端导航到 tomcat/bin 文件夹并执行
catalina.bat 运行(在 Windows 上)
catalina.sh 运行(在基于 Unix 的系统上)
转到 http://localhost:8080/ Spring-Boot-Maven-Deploy*/*
这是一个快速的 Tomcat 设置,请查看 ***Tomcat 安装 *** 上的指南以获取完整的设置指南。
在这个简短的指南中,我们创建了一个简单的 Spring Boot 应用程序,并将其转换为可部署在 Tomcat 服务器上的有效 WAR 应用程序。
Github
与往常一样,可以使用示例的完整源代码***over on GitHub。***
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.dailycodebuffer.com/deploy-spring-boot-war-to-tomcat-server/
内容来源于网络,如有侵权,请联系作者删除!