应用服务器中间件:Tomcat 与 JBoss
Tomcat 就是Java 代码的跑马场——Apache 开源 Servlet 容器,轻量级,你写的 Servlet/Spring Boot WAR 包扔进去它给你跑起来。JBoss/WildFly 是 RedHat 的完整 Java EE 应用服务器,功能全但重。绝大多数 Java Web 项目用 Tomcat 就够了。
5.1 Tomcat 是什么
论Tomcat 的脾气
Apache 开源 Servlet 容器,Java Web 应用服务器,轻量级。它的核心就是"接收 HTTP 请求 → 路由到对应的 Servlet → 跑你的 Java 代码 → 返回响应"。Spring Boot 内嵌的就是 Tomcat(默认),所以你用 Spring Boot 其实已经在用 Tomcat 了。
5.2 目录结构与 server.xml
5.3 性能调优:JVM + 连接器
5.4 集群部署:会话粘滞 + Nginx
Tomcat 集群最简单的方案:Nginx 负载均衡 + ip_hash 会话粘滞。同一个用户的请求永远打到同一台 Tomcat,Session 不用共享。但某台 Tomcat 挂了,那台上的用户 Session 全丢,要重新登录。更好的方案是 Session 放 Redis,所有 Tomcat 共享。
5.5 Tomcat 10/11 与 Jakarta EE 迁移
Tomcat 10 开始,Java EE 改名为 Jakarta EE,所有包名从 javax.servlet.* 改成 jakarta.servlet.*。老项目升级到 Tomcat 10+ 会编译错误,必须批量替换 import。新项目直接用 Tomcat 10.1 + Spring Boot 3.x,全是 jakarta。
5.6 JBoss / WildFly:完整 Java EE 应用服务器
WildFly(原 JBoss)是 RedHat 出品的完整 Java EE/Jakarta EE 应用服务器。Tomcat 只是 Servlet 容器,WildFly 还支持 EJB、JTA(分布式事务)、JMS(消息)、JPA 等全套规范。但它很重,启动慢,配置复杂。现在大多数 Spring Boot 项目用内嵌 Tomcat,WildFly 主要在传统大型企业(金融、电信)里用。
| 对比点 | Tomcat | WildFly/JBoss |
|---|---|---|
| 定位 | Servlet 容器(轻量) | 完整 Java EE 应用服务器(重量) |
| 功能 | 跑 Servlet/JSP | 全套规范(EJB/JTA/JMS...) |
| 启动速度 | 快(几秒) | 慢(几十秒到几分钟) |
| Spring Boot | 默认内嵌 | 需额外配置 |
| 适合 | 90% 的 Java Web 项目 | 传统大型企业系统 |
① Tomcat = Java 代码跑马场,Spring Boot 内嵌的就是它。调优三件套:JVM(Xms/Xmx/G1GC)、maxThreads、关 enableLookups。
② Tomcat 10+ 用 jakarta 包名,老项目升级要批量替换 javax。
③ 集群用 Nginx + ip_hash 会话粘滞,生产推荐 Session 放 Redis 共享。