服务器Tomcat、Jetty之外,主流还有Undertow、Netty/Reactor Netty、WildFly/GlassFish/Payara、WebLogic/WebSphere,以及TongWeb、Apusic、BES等国产中间件;选型看协议栈、并发模型、运维成本与合规要求。 如果只做Spring Boot REST服务,Undertow常被当作轻量替换;如果还要跑JSP和老WAR,Tomcat仍稳妥;要Jakarta EE全栈,看WildFly/Payara;要信创采购,国产中间件会进入清单。
先把地图摊开:容器、框架、代理不是一回事
很多团队把“Java Web容器”混在一起聊,结果选型越聊越乱,Tomcat、Jetty、Undertow是Servlet容器;Netty是异步网络框架;WildFly、WebLogic是应用服务器;Nginx、HAProxy是反向代理,它们有交集,但职责不同。
Tomcat和Jetty的边界:Servlet容器与嵌入式容器
Tomcat是Apache基金会下的Servlet容器,支持Servlet、JSP、WebSocket,传统WAR部署和Spring Boot内嵌都常见,Jetty更偏模块化和嵌入式,启动快、可裁剪,适合工具类服务和资源受限环境,两者都能通过命令确认版本:
catalina.sh version查看Tomcat版本java -jar start.jar --version查看Jetty版本
如果项目里有大量JSP、自定义Tomcat Valve、Realm,迁移到其他容器前要先做回归测试。JSP和容器私有配置是常见卡点。
Undertow:轻量替换的典型
Undertow是Red Hat体系下的轻量Web服务器,Spring Boot提供spring-boot-starter-undertow,它没有Tomcat那种管理控制台,优势是内存占用相对克制、非阻塞IO模型清晰,适合REST API、微服务、容器化JAR部署,它不擅长承载JSP老系统,也不提供完整Jakarta EE能力。
查看依赖时可以执行:
mvn dependency:tree | grep undertow
Netty与Reactor Netty:网络编程框架,不背JSP包袱
Netty是事件驱动网络框架,常用于网关、IM、长连接、RPC,Spring WebFlux默认可跑在Reactor Netty上,但它不是Servlet容器,不能直接部署传统WAR,Vert.x也属于这一类,适合高并发事件循环场景,选它之前要确认团队能处理异步编程、背压和线程模型。
| 方案 | 核心定位 | 部署形态 | 适合场景 | 注意点 |
|---|---|---|---|---|
| Tomcat | Servlet容器 | WAR、内嵌JAR | 传统Web、JSP、Spring Boot默认 | 生态成熟,配置项多 |
| Jetty | 轻量Servlet容器 | 内嵌、独立 | 工具服务、嵌入式 | 模块化强,需按需装配 |
| Undertow | 轻量Web服务器 | 内嵌JAR | REST、微服务 | 不适合JSP老系统 |
| Netty/Reactor Netty | 网络框架 | 内嵌 | 网关、长连接、WebFlux | 异步门槛较高 |
| WildFly/GlassFish/Payara | Jakarta EE应用服务器 | EAR、WAR | EJB、JMS、JTA全栈 | 体量大,迁移要测命名空间 |
| WebLogic/WebSphere | 商用应用服务器 | EAR、WAR | 银行、电信大型系统 | License与采购流程复杂 |
| TongWeb/Apusic/BES | 国产中间件 | WAR、EAR | 信创、国产化替代 | 看适配清单与服务范围 |
Tomcat和Jetty之外还有哪些Java Web容器?传统与国产盘点
把视角从“内嵌容器”拉到“应用服务器”,候选会多出一大截,它们不是简单替换Tomcat,而是解决完整Java EE/Jakarta EE能力、商用支持和合规采购问题。
WildFly、GlassFish、Payara:Jakarta EE全栈
WildFly前身是JBoss AS,支持EJB、JMS、JTA等企业级能力,GlassFish是Jakarta EE参考实现,Payara基于GlassFish派生,部署WAR/EAR后,常用命令包括:
standalone.sh -b 0.0.0.0启动WildFlyasadmin start-domain启动GlassFish/Payara
老系统如果依赖EJB容器、分布式事务、JMS资源,迁到Tomcat往往要改架构,行业共识认为,这类迁移的隐形成本在测试和中间件适配,不在容器本身。
WebLogic、WebSphere:商用闭源与合规采购
WebLogic和WebSphere常见于银行、电信、大型制造企业,它们提供图形化控制台、集群、域管理、商业支持,采购通常按CPU核心、节点或服务年限报价,具体价格走项目招标,业内专家指出,商用中间件的价值不只在运行时,还在故障响应、补丁通道和审计材料。
国产中间件TongWeb和Tomcat区别及报价:北京项目选型看什么
TongWeb是东方通的产品,Apusic来自金蝶,BES来自宝兰德,InforSuite来自中创,它们常出现在信创、国产化替代、等保合规项目里,和Tomcat的核心区别是:Tomcat开源免费、社区驱动;国产中间件提供厂商服务、国产软硬件适配、管理控制台和项目交付支持,报价通常按节点、CPU、服务年限和项目范围组合,不能只看软件单价。
北京项目选型时,建议把“合规清单、适配证明、本地服务响应、迁移测试”放到一张表里,部署WAR的典型路径是登录管理控制台,进入应用管理,选择部署应用,上传WAR后绑定数据源和JVM参数,命令行部署则要看厂商文档,不要直接套Tomcat的server.xml。
从场景反推选型:高并发、老系统、云原生
容器没有绝对强弱,把业务场景、团队能力和运维预算摆出来,答案会清晰很多。
Tomcat、Jetty、Undertow性能对比哪个更适合高并发
高并发不是换容器就能解决,JVM参数、数据库连接池、GC、业务阻塞、超时设置都会影响结果,多数情况下,短请求REST服务可优先压测Undertow和Tomcat;嵌入式工具服务可看Jetty;长连接和网关场景再考虑Netty/Reactor Netty。
可验证的压测路径:
- 固定JVM参数和机器规格,避免环境漂移。
- 准备健康检查接口,例如
/api/health。 - 用
wrk -t8 -c500 -d30s http://127.0.0.1:8080/api/health压测。 - 同时看QPS、P99、CPU、GC日志和错误率。
- 对比相同业务代码下的容器差异,不要拿空接口和复杂接口混比。
业内常见做法是先压测再选型,不靠厂商宣传页下结论。可验证的压测数据比“谁更快”的口号更有用。
Spring Boot内嵌Tomcat换Undertow怎么配置:三步替换与压测
第一步,在pom.xml里排除Tomcat:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
第二步,引入Undertow:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>
第三步,按业务设置线程和缓冲区,不要照抄网上参数:
server:
port: 8080
undertow:
threads:
io: 8
worker: 128
buffer-size: 1024
启动后看日志是否出现Undertow启动信息,再用curl http://127.0.0.1:8080/actuator/health确认服务健康,压测时观察worker线程是否被阻塞,必要时用jcmd <pid> Thread.print看线程栈。
云原生与长连接:Netty、Reactor Netty、Vert.x
Kubernetes环境下,JAR镜像更常见,此时Tomcat、Jetty、Undertow都能以嵌入式方式运行,要配置优雅停机,可设置server.shutdown=graceful,并调整spring.lifecycle.timeout-per-shutdown-phase,长连接、推送、API网关场景,Netty和Vert.x更贴近需求,但团队要接受异步编程范式。
迁移与运维检查清单
迁移前先查JSP、WebSocket、过滤器
- 检查WAR内是否有JSP:
unzip -l app.war | grep WEB-INF - 检查
web.xml里的Filter、Listener、Servlet映射 - 检查WebSocket端点、文件上传大小限制、Session共享方案
- 检查容器私有配置,如Tomcat的Valve、Realm、
context.xml - 检查日志路径、临时目录、编码参数
成本与监控:License、信创适配与可观测性
开源容器省License,但运维人力也是成本,商用和国产中间件有采购费用,换来服务响应和合规材料,监控侧可接Micrometer、Prometheus,暴露/actuator/metrics,再配JVM和线程池告警,北京等地域项目还要看本地服务能力、适配证明和交付周期。
服务器Web容器选型的终点不是“装上一个新容器”,而是业务稳定、可观测、可运维、可合规。 Tomcat、Jetty、Undertow、Netty、商用应用服务器和国产中间件共同构成选型池,决定因素应落在压测数据、迁移清单和采购边界上。
服务器Tomcat Jetty还有哪些:选型Q&A
Tomcat和Jetty能直接互换吗?
不完全能,两者都实现Servlet规范,但JSP处理、WebSocket实现、类加载顺序、部署描述符和容器私有配置存在差异,普通Spring Boot JAR替换相对简单,老WAR要先跑回归测试。
Undertow能完全替代Tomcat吗?
取决于项目是否依赖JSP、Tomcat管理界面、Valve/Realm等私有能力,纯REST微服务通常可以替换;传统JSP后台和重度Tomcat定制项目不建议直接换。
国产中间件报价一定比Tomcat贵吗?
Tomcat开源免费,国产中间件通常包含软件授权、适配服务和项目支持,报价按节点、CPU、服务年限组合,是否“贵”要算上合规成本、迁移人力和故障响应,不能只比软件单价;最终以采购清单和适配测试结果为准。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/774068.html


