当前位置: 首页 > news >正文

JavaWeb服务器/servlet容器(Tomcat、Undertow 、WebLogic)

🚀 1、Java 生态中的 Web 服务器(Servlet 容器)

名称简介特点
TomcatApache 开发的 Servlet 容器,最广泛使用稳定、成熟、社区大
JettyEclipse 维护的轻量级容器,适合嵌入式使用启动快、可扩展性好
UndertowJBoss(Red Hat)开发,WildFly 默认使用异步非阻塞、超轻量、支持 HTTP/2
Resin商业产品,性能好但闭源(部分开源)快速、高性能
GlassFishOracle 推出的全功能 Java EE 服务器支持完整 Java EE 规范,重量级
WildFlyJBoss 新一代 Java EE 服务器支持微服务、集成 Undertow
WebLogicOracle 商业产品,用于大型企业 Java EE 部署重型、功能强、企业级支持
WebSphereIBM 推出的 Java EE 服务器重型、功能强、用于大型企业系统

🌐 2、其他主流 Web 服务器(跨语言)

名称开发语言简介应用场景与特点
NginxC高性能反向代理服务器,支持静态资源和负载均衡Web 网关、静态资源服务、代理后端 Java 等
Apache HTTPC最老牌 Web 服务器之一,功能全面支持模块多,但性能不如 Nginx
CaddyGo自动 HTTPS、配置简洁的新一代 Web 服务器适合中小型项目
LighttpdC轻量 Web 服务,适合低内存场景嵌入式设备或轻量部署

💡  3、总结:Java 项目常用选择

场景需求推荐服务器说明
Spring Boot 默认Tomcat支持好,稳定,开箱即用
高并发、高性能Undertow非阻塞 IO、轻量
嵌入式、微服务部署Jetty/Undertow启动快,占内存少
Java EE 全规范GlassFish/WildFly支持 Java EE 全栈
商业项目、企业采购WebLogic/WebSphere企业支持强,功能全面

⚡ 4、常见用途搭配

前端服务后端服务搭配示例
NginxSpring Boot + TomcatNginx 代理静态资源和 API 请求给后端
NginxSpring Boot + Undertow支持高并发接口服务,响应快
Apache HTTPWebLogic用于传统 Java EE 项目部署

📌 5、三个最常用的服务器(Tomcat和 Jetty 和 Undertow)

5.1 ✅ 基本介绍

项目TomcatJettyUndertow
开发组织ApacheEclipseRed Hat / JBoss
采用方式Spring Boot 默认内嵌容器手动引入依赖或替换默认容器手动引入依赖或替换默认容器
IO 模型支持 NIO(阻塞为主)支持异步 NIO(部分支持非阻塞)完全异步、非阻塞
是否支持 HTTP/2需扩展支持支持原生支持

5.2 ⚙️性能与资源占用

指标/对比点TomcatJettyUndertow
启动速度非常快
内存占用较低最低
并发处理能力中等中等偏上高并发处理优异
CPU 占用稳定利用率高但高效
请求吞吐量普通中等

5.3 📦功能特性对比

功能特性TomcatJettyUndertow
Servlet 支持✅ 完整✅ 完整✅ 完整
JSP 支持✅ 支持⚠️ 需额外依赖❌ 不支持
WebSocket 支持
HTTP/2 支持⚠️ 手动配置✅ 支持✅ 原生支持
支持异步请求部分支持支持✅ 原生支持
嵌入式部署支持

5.4 📁 Spring Boot 配置对比

容器Maven 依赖
Tomcat默认(无需额外配置)
Jetty排除 Tomcat,引入 spring-boot-starter-jetty
Undertow排除 Tomcat,引入 spring-boot-starter-undertow

5.5 🧠 适用场景建议

应用场景推荐服务器理由
普通企业 Web 项目Tomcat稳定、支持 JSP、社区广泛
嵌入式系统、启动快、轻量服务Jetty启动快,内存占用少,易于嵌入
高并发微服务系统、网关服务Undertow非阻塞 IO,吞吐量高,性能优
使用 JSP 页面渲染Tomcat唯一默认支持 JSP 的容器
要求支持 HTTP/2、高性能接口Undertow原生支持 HTTP/2 与异步

🔚 6、一句话总结:微服务前后端分离、不用JSP,用undertow就对了!

6.1 Springboot项目maven引入undertow

    <dependencies><!-- SpringBoot Web容器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 移除springboot默认的tomcat服务器 --><exclusions><exclusion><artifactId>spring-boot-starter-tomcat</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><!-- web 容器使用 undertow --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId></dependency></dependencies>

6.2 yml文件配置

  undertow:# HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的max-http-post-size: -1# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理# 每块buffer的空间大小,越小的空间被利用越充分buffer-size: 512# 是否分配的直接内存direct-buffers: truethreads:# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程io: 8# 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载worker: 256
http://www.dtcms.com/a/318213.html

相关文章:

  • 前端应用场景题目(待总结优化)
  • 攻防世界WEB(新手模式)20-unseping
  • 基于 kubeadm 搭建 k8s 集群
  • 京东商品评论接口开发全指南:从数据获取到分析应用实战
  • 【20205CVPR-目标检测方向】基于事件的高效目标检测:具有空间和时间注意力的混合神经网络
  • Lodash 的终极进化Radashi
  • JAVA 程序员cursor 和idea 结合编程
  • 北京JAVA基础面试30天打卡03
  • SAP MR51 显示不是ALV格式的问题
  • 开源远程工具rustdesk
  • 力扣 hot100 Day67
  • Linux firewall 防火墙管理
  • SpringBoot 接入SSE实现消息实时推送的优点,原理以及实现
  • React:生命周期
  • 二、Istio流量治理(一)
  • 佳文鉴赏 || FD-LLM:用于机器故障诊断的大规模语言模型
  • 性能为王:一次从压测到调优的实战全流程复盘
  • PHP常用日期时间函数
  • 线程-线程池篇(二)
  • 【CSS】动态修改浏览器滚动条宽度
  • 楼宇自控系统对建筑碳中和目标的实现具重要价值
  • MCU程序的ARM-GCC编译链接
  • Powershell---替换文本文件中指定行的整行内容
  • K8S云原生监控方案Prometheus+grafana
  • Java throw exception时需要重点关注的事情!
  • TCP的三次握手和四次挥手实现过程。以及为什么需要三次握手?四次挥手?
  • 使用Cursor创建iOS应用
  • Xcode 26 如何在创建的 App 包中添加特定的目录
  • 北大、蚂蚁三个维度解构高效隐私保护机器学习:前沿进展+发展方向
  • 安装Chocolatey一文通