- 文集信息
- 目录大纲
- 最新文档
- 知识宇宙
文集详情
文集导读
Tomcat
Apache Tomcat 是一个开源的、轻量级的 Web 服务器和 Servlet 容器,由 Apache 软件基金会维护。它实现了 Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)和 WebSocket 等 Java EE(现 Jakarta EE)Web 规范的核心部分,广泛用于开发和部署 Java Web 应用程序。
核心功能与架构
Tomcat 的核心功能包括:
- HTTP/1.1 与 HTTP/2 支持:从 Tomcat 9 开始原生支持 HTTP/2(需配合 TLS)。
- Servlet 容器:提供符合 Jakarta Servlet 规范的运行环境。
- JSP 引擎(Jasper):将 JSP 页面动态编译为 Servlet。
- WebSocket 支持:实现完整的 WebSocket 协议(RFC 6455)。
- 安全管理:支持基于角色的访问控制、SSL/TLS 加密等。
- 集群与高可用:通过会话复制(Session Replication)和负载均衡实现横向扩展。
Tomcat 的架构采用模块化设计,主要组件包括:
- Server:代表整个 Tomcat 实例。
- Service:组合一个或多个 Connector 与一个 Container。
- Connector:处理客户端连接(如 HTTP、AJP),负责协议解析与请求转发。
- Container(Catalina):处理 Servlet 请求,包含 Engine、Host、Context、Wrapper 四层嵌套结构。
- Realm:用户认证与授权的数据源。
- Valve:类似过滤器,用于在请求处理链中插入自定义逻辑。
版本演进与 Jakarta EE 迁移
随着 Java EE 向 Jakarta EE 的迁移,Tomcat 也相应调整了其规范支持:
| Tomcat 版本 | Servlet | JSP | EL | WebSocket | Jakarta EE 命名空间 |
|---|---|---|---|---|---|
| 10.1.x | 6.0 | 3.1 | 5.0 | 2.1 | jakarta.* |
| 9.0.x | 4.0 | 2.3 | 3.0 | 1.1 | javax.* |
| 8.5.x | 3.1 | 2.3 | 3.0 | 1.1 | javax.* |
注意:Tomcat 10 及以上版本使用
jakarta.servlet.*包名,而 Tomcat 9 及以下使用javax.servlet.*。迁移应用时需注意包名变更,或使用 Jakarta EE 提供的迁移工具。
典型部署架构
在生产环境中,Tomcat 通常不直接面向公网,而是部署在反向代理(如 Nginx、Apache HTTP Server)之后,以提升安全性、静态资源处理能力和负载均衡能力。
性能调优关键点
- JVM 参数优化:
- 设置合理的堆内存(
-Xms/-Xmx) - 选择合适的垃圾回收器(如 G1GC)
- 设置合理的堆内存(
- Connector 配置:
- 调整
maxThreads、acceptCount、connectionTimeout - 启用 NIO 或 NIO2 协议提升并发能力
- 调整
- 静态资源缓存:
- 配置
DefaultServlet的缓存策略
- 配置
- 会话管理:
- 合理设置会话超时时间
- 在集群环境中使用 Redis 或 Memcached 存储会话
安全最佳实践
- 禁用不必要的默认应用(如
manager,host-manager)或限制其访问 IP - 使用强密码保护管理界面
- 配置 HTTPS 并禁用弱加密套件
- 定期更新 Tomcat 至最新稳定版本以修复安全漏洞
- 避免在生产环境中启用调试或堆栈跟踪
通过合理配置与持续维护,Tomcat 能够稳定、高效地支撑从小型应用到大型分布式系统的 Web 服务需求。
目录大纲
最新文档
知识宇宙
正在加载知识图谱...