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

【Apache Tomcat】

目录

  • Tomcat 基本简介
  • Tomcat 架构组成
  • Tomcat 的目录结构
  • Tomcat 的工作原理
  • Tomcat 的配置文件
  • Tomcat 与其他服务器对比
  • Tomcat 使用场景
  • Tomcat 与 Spring Boot
  • 常见问题与优化

Tomcat(全称 Apache Tomcat)是由 Apache 软件基金会开发和维护的一款 开源的 Web 服务器与 Servlet 容器,用于运行基于 Java 的 Web 应用程序。它广泛应用于中小型企业和开发测试环境中,是学习和部署 Java Web 的首选服务器。

Tomcat 基本简介

  • 开发者:Apache 软件基金会
  • 编程语言:Java
  • 最新版本:可参考官网 https://tomcat.apache.org
  • 核心功能:
    • 支持 Servlet 规范(如 Servlet 4.0)
    • 支持 JSP(Java Server Pages)
    • 支持 WebSocket
    • 支持 HTTP/1.1、HTTP/2 等协议(版本依赖)

Tomcat 实际上是一个轻量级的 Servlet 容器(Servlet Container),它也可以当作 HTTP Web 服务器来使用,但它不是一个完整的 Java EE 应用服务器(如 GlassFish、WildFly)。

Tomcat 架构组成

Tomcat 主要由以下几个核心组件组成:

  1. Server
    • 表示整个服务器实例,server.xml 配置文件中最顶层的元素。
  2. Service
    • Server 可以包含多个 Service。
    • 每个 Service 由 Connector 和 Engine 两部分组成。
  3. Connector(连接器)
    • 负责与客户端通信(接收 HTTP 请求,返回响应)。
    • 支持协议:HTTP、AJP 等。
    • 常见配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
  1. Engine(引擎)
    • 处理 Connector 传入的请求。
    • 属于 Service 内部组件。
    • 包含 Host 容器。
  2. Host(虚拟主机)
    • 每个 Host 表示一个虚拟主机。
    • 一个 Host 包含多个 Web 应用(Context)。
  3. Context(上下文)
    • 表示一个 Web 应用,通常对应 webapps 下的一个目录。
    • 每个 Context 对应一个 web.xml 文件。

Tomcat 的目录结构

apache-tomcat-<version>/
├── bin/         # 启动与关闭脚本(startup.sh / shutdown.bat)
├── conf/        # 配置文件(server.xml、web.xml 等)
├── lib/         # 所有 Tomcat 运行所需的 jar 包
├── logs/        # 日志文件
├── webapps/     # 默认 Web 应用部署目录
├── work/        # Servlet/JSP 编译后的临时文件
├── temp/        # 临时文件

Tomcat 的工作原理

  1. 启动 Tomcat(执行 bin/startup.sh)
  2. 初始化配置(加载 server.xml)
  3. 创建 Connector,监听端口(如 8080)
  4. 接收到 HTTP 请求后交给对应 Context
  5. Servlet 容器处理请求:
    • 查找对应 Servlet
    • 调用其 service() 方法
  6. 返回处理结果给客户端

Tomcat 的配置文件

  1. conf / server.xml
    Tomcat 的主配置文件,管理服务、端口、连接器等。
  2. conf / web.xml
    默认 Web 应用的全局配置文件,比如 MIME 类型映射、默认欢迎页、错误页面等。
  3. conf / context.xml
    所有 Web 应用的共享 Context 配置。

Tomcat 与其他服务器对比

服务器类型是否支持 Java EE 完整规范特点
TomcatWeb服务器+Servlet容器轻量、高性能、易于部署
JettyServlet 容器模块化、嵌入式应用多
GlassFishJava EE 应用服务器官方 Java EE 实现,重量级
WildFlyJava EE 应用服务器高性能企业级服务器

Tomcat 使用场景

  1. Java Web 开发与学习
  2. 轻量级 Web 应用部署
  3. 微服务架构中的 Servlet 容器嵌入
  4. 嵌入式服务器(可内嵌到 Spring Boot)

Tomcat 与 Spring Boot

Spring Boot 内置了 Tomcat,默认使用的是 org.apache.catalina.startup.Tomcat 启动类,实现嵌入式部署:

@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}

可以通过配置文件指定端口:

server:port: 8081

常见问题与优化

  1. 启动慢 / 内存不足
    • 优化 JVM 参数(setenv.sh 或 catalina.sh)
    • 分析日志查找瓶颈
  2. 端口占用
    • 修改 server.xml 中
  3. Session 共享问题
    • 使用 Redis / 数据库持久化 session
    • 或配置 Tomcat 集群
  4. JSP 编译慢
    • 预编译 JSP 或使用更高版本的 JDK
http://www.dtcms.com/a/302645.html

相关文章:

  • Thymeleaf语法大全:30个实用示例
  • UE5 UI自适应 DPI缩放
  • 分布式微服务--核心组件与架构关系(一)
  • 前端面试题--副本
  • 【n8n教程笔记——工作流Workflow】文本课程(第一阶段)——5.7 调度工作流 (Scheduling the workflow)
  • <PLC><西门子><modbusTCP>在西门子S7-1200系列PLC中,如何设置modbusTCP通讯?
  • 深度学习核心模型架构解析:Transformer自注意力机制与Query-Key-Value投影的向量空间几何解释
  • 【GitHub Workflows 基础(一)】认识 .github/workflows/ 下的多个工作流
  • ubuntu qt环境下出现No suitable kits found解决方案
  • 国产化PDF处理控件Spire.PDF教程:Java 提取 PDF 图片,高质量提取与图片过滤技巧
  • ros2的package.xml和rosdep
  • 青少年编程高阶课程介绍
  • LangGraph智能体(天气和新闻助手)开发与部署
  • 嵌入式Linux:注册线程清理处理函数
  • 墨者:SQL过滤字符后手工绕过漏洞测试(万能口令)
  • 婚纱摄影管理系统(发送邮箱、腾讯地图API、物流API、webSocket实时聊天、协同过滤算法、Echarts图形化分析)
  • Android15广播ANR的源码流程分析
  • 【Unity】Application类常见路径一览表
  • 05 OpenCV--图像预处理之图像轮廓、直方图均衡化、模板匹配、霍夫变化、图像亮度变化、形态学变化
  • Jenkins流水线部署+webhook2.0
  • Rust/Tauri 优秀开源项目推荐
  • Flutter渲染引擎:Impeller和Skia
  • RPC 详解
  • 鱼皮项目简易版 RPC 框架开发(二)
  • 基于Spring Boot和Vue电脑维修平台整合系统的设计与实现
  • 计算机网络(基础篇)
  • linux内核中kfifo实现队列
  • 并发安全之锁机制一
  • Day22-二叉树的迭代遍历
  • kruscal重构树