- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
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。***
有人可以解释一下 spring-boot-parent 和 spring-boot-starter-parent 之间的区别吗,正如我在下面附加的 GIT HUB 代码链接之一中看到的,他们为 spr
我有与 jersey 框架集成的 Spring Boot 应用程序。 现在,当我尝试运行该应用程序时,它只是停留在 Spring 启动徽标上,之后没有任何 react 。 我也尝试添加 -X ,但徽标
我指的是 Spring Boot 关于 的文档自动配置 和 执行器 模块: 自动配置: Spring Boot AutoConfiguration attempts to automatically
我正在尝试将 apache log4j 集成到我的 Spring boot 应用程序中。这是我的 build.gradle 文件: build.gradle buildscript { rep
使用 Spring Boot Maven 插件的以下命令在生产中启动 Spring Boot 应用程序是否是一个好主意或实践? mvn spring-boot:run 最佳答案 不,这是个坏主意。 您
据我所知,spring boot 和 spring session 为我们提供了一站式自动配置,但是当我的应用程序使用 session redis 和应用程序缓存 redis 时,不是同一个 redi
我希望使用Spring Boot创建一个新的Web应用程序。不幸的是,我的服务器在技术堆栈方面相当有限。它安装了Java 5。 谁能告诉我spring boot是否可以在Java 1.5上运行以及什么
我有3个实体 CarWash(设置Wash) Wash(car_wash_id FK到CarWash) WashComment(wash_id FK到Wash) 有什么办法可以写这个查询 @Qu
我一直在关注this文章。 我正在尝试在Spring-boot应用程序中优雅地处理gRPC错误,的主要目标是能够在gRPC客户端中获取错误状态。 在上面的文章之后,我坚持为异常添加拦截器。如何在Spr
我有一个要使用的自定义log4j布局插件。在IntelliJ中运行或与./gradlew bootRun一起运行时,插件可以正常工作。不使用./gradlew bootJar构建启动jar。 启用-D
我想在给定范围 (5001-5100) 的随机端口上启动 Spring Cloud 应用程序(Spring Boot 1.5.14,Spring Cloud Edgware.SR4)。我知道我们可以使
任何人都可以向我展示或指出不使用 spring boot gradle 插件的 spring boot gradle 项目。 我正在寻找类似不使用 gradle 插件的 spring boot sta
我当时尝试包含上述依赖项之一,但找不到任何区别: spring boot starter web:我可以看到 Flux 和 Mono 类并制作一个响应式(Reactive)休息 Controller
我们一直在为我们的应用程序使用 Springboot 1.X。 现在准备开始一些新的应用程序,想知道我们是应该使用 SpringBoot2.0 还是坚持使用 SpringBoot 1.X? 对一种方式
我希望记录应用程序正在加载 application-profile.propeties 或 application.yml。怎么做。在哪种方法中,我可以听取它并检测它是成功加载还是失败。 最佳答案 您
当我在 pom.xml 中添加简单的 spring-boot-starter-data-jpa 依赖项时,在 pom.xml 文件中出现错误。如果我删除该依赖项,则不会再有错误。我不确定为什么会发生这
我希望记录应用程序正在加载 application-profile.propeties 或 application.yml。怎么做。在哪种方法中,我可以听取它并检测它是成功加载还是失败。 最佳答案 您
我在网上看了很多关于 spring-boot-devtools 的文章和问题,但仍然无法弄清楚为什么它对我不起作用。每次运行我的应用程序时,我都会得到以下信息: 17:54:28.057 [main]
我正在尝试将现有的 Spring 应用程序移植到 Spring Boot。我不使用 spring-boot-starter-data-solr 启动器,但是我的类路径上有 apache solrj (
(这主要是一个历史问题。Pivotal 建议所有论坛讨论都在 StackOverflow 上进行,这就是我在这里问它的原因。) Spring Boot 项目用来证明将应用程序的类和依赖项从可执行 ja
我是一名优秀的程序员,十分优秀!