在生产中将Tomcat用于Spring Boot应用程序

时间:2018-11-19 15:24:19

标签: spring spring-boot tomcat microservices

作为Spring Boot的新手,我需要了解以下内容,因为我无法直接找到google结果。 他们实际使用什么应用服务器来实际部署那些Spring Boot应用程序? 公司是否真的使用过Tomcat?如果这样,他们是否可以通过集群来实现?

2 个答案:

答案 0 :(得分:2)

使用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 {
}

然后,使用战争配置文件执行Maven命令包:

mvn clean package -Pwar

答案 1 :(得分:1)

Spring boot具有内置的Tomcat服务器,只需从Java运行即可。

Tomcat内置在jar中,因此在任何环境下都是相同的。

这是一个典型的弹簧靴子罐,上面显示了tomcat罐子:

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云上运行,这很典型。

BTW Tomcat已在商业上使用,非常可靠。