Tomcat源码分析:一、tomcat组件认识

 

前言

     最近一次上线过程中出现了jekin是自动化部署的web环境跟本地开发环境不一致的情况,导致生产环境应用访问失败,因此阅读tomcat源码,以加深对web的认识。

基本组件

在阅读源码之前,最好是对整个应用架构进行了解跟分析,从而会对程序阅读带来事半功倍的效果。

change our perspective,Tomcat整体组件结构图如下:

基本组件图

Server:一个tomcat实例,tomcat支持在一台机器上启动多个tomcat实例。不同的tomcat实例产生不同的JVM进程,同一个实例下的不同的application共享一个JVM,但是具有独立的appclassloader(以此来达到资源隔离)。

Service:是一组Connector与Engine的集合。采用关联关系将外部请求与内部处理器连接的桥梁。

Connector:  是外部请求的入口,通过端口监听、连接控制、协议解析等手段,实现外部请求到tomcat内部对象的映射(映射)

Engine:整个servlet引擎。该引擎提供了多个虚拟主机Host的支持(多域名支持)

Host:虚拟主机。一个虚拟主机包含多个context

Context:一个context代表了一个servlet context。从context是Tomcat的抽象概念,servlet context则是j2e规范层次。一个context实际上对应了一个application。

Container:tomcat申明 A Container is an object that can execute requests received from a client, and return responses based on those requests. 但是在源码中未发现Container添加对客户端请求处理的能力。container是对engine、host、context、warpper组件的抽象。

配置文件初探

server.xml

猜你喜欢

转载自blog.csdn.net/qq_42199792/article/details/83149423