深入浅出Tomcat结构

简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器。Tomcat是一个运行Java程序的容器,通过启动startup.bat(bin目录下文件):
1)执行Bootstrap.java下的main()方法,开始启动tomcat容器,
2)继续调用init();
3)创建Catalina对象,这是个核心容器再继续调用load()方法,实际上是通过反射调用了catalina的load方法。
4)找到config file(server.xml)然后创建digester,解析server.xml,生成各组件对象(Server、Service、Container、Connector等)以及建立相互之间的关系。

下面就先来了解下Tomcat体系结构,再说下核心配置,最后说下性能优化策略。

1 Tomcat体系结构

整个Tomcat就是⼀个Catalina实例,Tomcat 启动的时候会初始化这个实例,Catalina实例通过加载server.xml完成其他实例的创建,创建并管理⼀个Server,Server创建并管理多个服务Service,如下图所示:(即:Tomcat是 1个Server 对应 N个Service)
在这里插入图片描述
每⼀个Service实例下可以有N个Connector实例和1个Container实例以及若干其他模块为它提供⽀撑的,它将若⼲个Connector组件绑定到⼀个Container。

Connector连接器,负责对外交流,处理Socket连接,负责⽹络字节流与Request和Response对象的转化;

Container容器,负责负责内部处理,处理⽤户的servlet请求,并返回对象给web⽤户的模块;

Jasper 模块提供 JSP 引擎,Naming 提供JNDI 服务,Juli 提供⽇志服务,Executor线程池等等

在这里插入图片描述
每个Connector连接器包含:

EndPoint :通信监听的接⼝,是具体Socket接收和发送处理器,是对传输层的抽象,因此EndPoint⽤来实现TCP/IP协议的

Processor :⽤来实现HTTP协议,Processor接收来⾃EndPoint的Socket,读取字节流解析成Tomcat Request和Response对象,并通过Adapter将其提交到容器处理,Processor是对应⽤层协议的抽象

ProtocolHandler :通过Endpoint 和 Processor , 实现针对具体协议的处理能⼒。Tomcat 按照协议和I/O 提供了6个实现类 (AjpNioProtocol ,AjpAprProtocol, AjpNio2Protocol , Http11NioProtocol ,Http11Nio2Protocol ,Http11AprProtocol)

Adapter :由于协议不同,客户端发过来的请求信息也不尽相同,Tomcat定义了⾃⼰的Request类来封装这些请求信息。

Container实例包含:

Engine 表示整个Catalina的Servlet引擎,⽤来管理多个虚拟站点,⼀个Service最多只能有⼀个Engine,但是⼀个引擎可包含多个Host

Host 代表⼀个虚拟主机,或者说⼀个站点,可以给Tomcat配置多个虚拟主机地址,⽽⼀个虚拟主机下可包含多个Context

Context 表示⼀个Web应⽤程序, ⼀个Web应⽤可包含多个Wrapper

Wrapper 表示⼀个Servlet,Wrapper 作为容器中的最底层,不能包含⼦容器

在这里插入图片描述

2 Tomcat核心配置

Tomcat的下载包解压之后的目录
在这里插入图片描述
Tomcat 作为服务器的配置,主要是 server.xml ⽂件的配置;server.xml中包含了 Servlet容器的相关配置;server.xml在conf文件下面。

server.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!--
 port:关闭服务器的监听端⼝
 shutdown:关闭服务器的指令字符串
-->
<Server port="8005" shutdown="SHUTDOWN">
<!-- 以⽇志形式输出服务器 、操作系统、JVM的版本信息 -->
  <Listener 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值