Apache Tomcat(也称为 Tomcat 服务器)是一个开源的 Web 应用程序服务器,是一个轻量级的、独立的、可扩展的、可管理的 Servlet 容器,由 Apache 软件基金会开发和维护。Tomcat 可以运行在各种操作系统上,包括 Windows、Linux和macOS 等。
Tomcat
Tomcat 服务器可以作为独立的 Web 服务器,也可以与其他 Web 服务器(如 Apache HTTP Server)一起使用。它支持 Java Servlet、JavaServer Pages (JSP)、JavaServer Faces (JSF)、Java Expression Language (EL)、WebSocket 和 Java WebSocke t等技术,并且具有良好的性能和可伸缩性。
Tomcat 服务器的主要功能包括:
- 运行 Java Servlet 和 JSP 应用程序
- 提供 Java WebSocket 和 WebSocket 协议支持
- 支持 JavaServer Faces (JSF) 和J ava Expression Language (EL)
- 提供管理和监控Web应用程序的功能
- 支持 SSL/TLS 加密
- 可以通过插件扩展其功能
- 提供与其他Web服务器的集成和连接
然而现在不只 Tomcat 一种服务器了,还有一些类似于 Tomcat 的服务器。
Jetty
Jetty 是一个轻量级的 Web 服务器和 Servlet 容器,与 Tomcat 一样,也是基于 Java 的开源软件。Jetty 可以作为一个独立的 Web 服务器,也可以集成到其他应用程序中使用。
优点:轻量级,启动速度快,占用资源少,易于配置和扩展,支持嵌入式应用,良好的性能和稳定性。
缺点:相对于其他应用服务器,社区规模较小,可能存在一些缺陷和问题。
Apache HTTP Server
Apache HTTP Server 是一个流行的Web服务器,它支持多种操作系统和平台,并可以使用各种编程语言开发 Web 应用程序。与 Tomcat 不同,Apache HTTP Server 不仅支持 Servlet 和 JSP,还支持 CGI、PHP 等动态网页开发技术。
优点:广泛应用,具有稳定的架构和出色的性能,支持多种编程语言和开发技术,可以处理大量的并发请求,可通过模块化架构进行定制和扩展。
缺点:不支持完整的JavaEE规范,需要通过CGI等技术来支持动态内容,无法直接处理Servlet和JSP。
GlassFish
GlassFish 是一个完整的 JavaEE 应用服务器,包括 Web 服务器、Servlet 容器、EJB 容器等,可以作为 Web 应用程序的开发、测试和部署平台。与 Tomcat 相比,GlassFish 具有更多的功能和扩展性,但也更加复杂。
优点:支持完整的JavaEE规范,具有强大的功能和扩展性,良好的集成性和部署管理功能。
缺点:相对复杂,需要较高的系统资源和配置成本,启动速度较慢。
WildFly
WildFly(原名JBoss)是一个流行的 JavaEE 应用服务器,也包括 Web 服务器和Servlet 容器。WildFly 支持各种 JavaEE 技术,包括 EJB、JMS、JPA等,也支持WebSockets、WebSockets JSR 356、HTTP/2 等最新的Web技术。
优点:支持完整的JavaEE规范,具有出色的性能和稳定性,良好的扩展性和管理功能,支持最新的Web技术。
缺点:相对复杂,需要较高的系统资源和配置成本,相对较新的技术可能存在不稳定性或兼容性问题。
Undertow
Undertow 是一个轻量级的 Web 服务器和 Servlet 容器,与 Tomcat 和 Jetty 相比,它的性能更好。Undertow 提供了易于使用的 API 和扩展性,支持 HTTP/2、WebSockets 等最新的 Web 技术。
优点:轻量级,启动速度快,占用资源少,具有出色的性能和稳定性,良好的扩展性和API设计,支持最新的Web技术。
缺点:相对于其他应用服务器,社区规模较小,可能存在一些缺陷和问题。
小结
这些服务器各有优缺点,用户需要根据自己的需求选择最适合自己的服务器。
如果需要支持完整的 JavaEE 规范和复杂的应用场景,GlassFish 和 WildFly 可能更加合适;如果需要轻量级和快速启动的服务器,Jetty 和 Undertow可 能更加合适;如果需要处理大量的并发请求或支持多种编程语言和开发技术,Apache HTTP Server可能更加合适。
在 Spring Boot 中,支持三种:Tomcat、Jetty 和 Undertow,默认使用 Tomcat。通过以上我们知道,这三种都是比较轻量和快速的服务器。在某些特殊场景下,我们可以通过切换服务器来解决一些问题,比如当发现 Tomcat 存在漏洞,而不能直接升级版本时,可以先将服务器切换为 Jetty 或 Undertow 来规避。