【发布时间】:2023-03-28 11:13:01
【问题描述】:
作为 Spring Boot 的新手,我需要了解以下内容,因为我无法直接找到 google 结果。 他们真正使用哪些应用程序服务器来部署现实生活中的那些 Spring Boot 应用程序? 公司真的在使用 Tomcat - 如果是的话,他们是否使用集群来实现它?
【问题讨论】:
标签: spring spring-boot tomcat microservices
作为 Spring Boot 的新手,我需要了解以下内容,因为我无法直接找到 google 结果。 他们真正使用哪些应用程序服务器来部署现实生活中的那些 Spring Boot 应用程序? 公司真的在使用 Tomcat - 如果是的话,他们是否使用集群来实现它?
【问题讨论】:
标签: spring spring-boot tomcat microservices
Spring boot 有一个内置的 Tomcat 服务器,它只是从 Java 运行。
Tomcat是内置在jar中的,所以在任何环境下都是一样的。
这是一个典型的 spring boot jar,显示的是 tomcat jar:
greg@greg-XPS-13-9360:~/work/boot-docker/target$ jar tvf boot-docker-1.0.3.jar | grep tomcat
2293 Mon Jan 30 19:45:14 GMT 2017 BOOT-INF/lib/spring-boot-starter-tomcat-1.5.1.RELEASE.jar
241640 Tue Jan 10 21:03:52 GMT 2017 BOOT-INF/lib/tomcat-embed-websocket-8.5.11.jar
3015953 Tue Jan 10 21:03:50 GMT 2017 BOOT-INF/lib/tomcat-embed-core-8.5.11.jar
239791 Tue Jan 10 21:03:50 GMT 2017 BOOT-INF/lib/tomcat-embed-el-8.5.11.jar
我们将 Spring Boot 应用程序作为 docker 镜像(完整的虚拟 Unix 服务器)在 Redhat Openshift 云上运行,这是典型的。
顺便说一句,Tomcat 是商业使用的,非常可靠。
【讨论】:
使用 Spring Boot 应用程序,您可以生成一个包含嵌入式 Tomcat 的应用程序 jar。您可以将 Web 应用程序作为普通 Java 应用程序运行。
如果您仍想使用 Tomcat 服务器部署应用程序。
首先,您需要打包一个WAR 应用程序而不是JAR。为此,您需要将 pom.xml 更改为以下内容:
<profiles>
<profile>
<id>war</id>
<properties>
<packaging.type>war</packaging.type>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>ROOT</finalName>
</build>
</profile>
</profiles>
让我们在 finalName 元素中修改最终的 WAR 文件名。 (就我而言,输出是 ROOT.war)
接下来,通过实现SpringBootServletInitializer接口来初始化Tomcat所需的Servlet上下文:
@SpringBootApplication
public class YourApplication extends SpringBootServletInitializer {
}
然后,执行带有war profile的Maven命令包:
mvn clean package -Pwar
【讨论】: