Tomcat目录详解
最近在项目部署时,有时通过使用公司提供的Jdoc容器引擎部署上线项目,有时使用Jenkins自动化部署,甚至有的项目直接打war包上传到弹性云的tomcat中进行部署。虽然部署方式略有不同,但是归根结底主要是将war包上传到服务器中的tomcat中进行部署。因此,最近忙里偷闲,关于tomcat的目录结构进行了一定的深挖和研究。
Tomcat 顶层结构
如上图所示,在Tomcat中最顶层的容器是Server,代表着整个服务器,在一个Tomcat中只有一个server容器,但是在这个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和Container。其中Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;Container用于封装和管理Servlet,以及具体处理Request请求。
因此,总结如下,在一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接,示意图如下。多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,但是 Service 还要一个生存的环境,那就是Server。因此Tomcat的生命周期由Server来控制。
Connector架构分析
Connector用于接受请求并将请求封装成Request和Response,然后交给Container进行处理,Container处理完之后在交给Connector返回给客户端。
Connector就是使用ProtocolHandler来处理请求的,不同的ProtocolHandler代表不同的连接类型,比如:Http11Protocol使用的是普通Socket来连接的,Http11NioProtocol使用的是NioSocket来连接的。
其中ProtocolHandler由包含了三个部件:Endpoint、Processor、Adapter。
(1)Endpoint用来处理底层Socket的网络连接,Processor用于将Endpoint接收到的Socket封装成Request,Adapter用于将Request交给Container进行具体的处理。
(2)Endpoint由于是处理底层的Socket网络连接,因此Endpoint是用来实现TCP/IP协议的,而Processor用来实现HTTP协议的,Adapter将请求适配到Servlet容器进行具体的处理。
(3)Endpoint的抽象实现AbstractEndpoint里面定义的Acceptor和AsyncTimeout两个内部类和一个Handler接口。Acceptor用于监听请求,AsyncTimeout用于检查异步Request的超时,Handler用于处理接收到的Socket,在内部调用Processor进行处理。
Container架构分析
Container用于封装和管理Servlet,以及具体处理Request请求,在Connector内部包含了4个子容器,结构图如下:
4个子容器的作用分别是:
(1)Engine:引擎,用来管理多个站点,一个Service最多只能有一个Engine;
(2)Host:代表一个站点,也可以叫虚拟主机,通过配置Host就可以添加站点;
(3)Context:代表一个应用程序,对应着平时开发的一套程序,或者一个WEB-INF目录以及下面的web.xml文件;
(4)Wrapper:每一Wrapper封装着一个Servlet;
Tomcat的目录结构
Tomcat的目录结构如上图所示,其中各个文件夹中存放的内容如下:
/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件
/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
/doc:存放Tomcat文档
/lib:存放Tomcat服务器所需的各种JAR文件
/logs:存放Tomcat执行时的日志文件
/src:存放Tomcat的源代码
/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
/work:存放JSP编译后产生的class文件
Tomcat目录详解的更多相关文章
- Tomcat 目录详解
一.文字版本: bin: 该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe.tomcat6w.exe,前者是在控制台下启动Tomcat,后者是 ...
- Tomcat--各个目录详解(二)
Tomcat整体目录: 一.bin文件(存放启动和关闭tomcat脚本) 其中.bat和.sh文件很多都是成对出现的,作用是一样的,一个是Windows的,一个是Linux. ① startup文件: ...
- TOMCAT原理详解及请求过程(转载)
转自https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Ser ...
- tomcat 日志详解
1 tomcat 日志详解 1.1 tomcat 日志配置文件 tomcat 对应日志的配置文件:tomcat目录下的/conf/logging.properties. tomcat 的日志等级有 ...
- tomcat日志详解
1 tomcat 日志详解 1.1 tomcat 日志配置文件 tomcat 对应日志的配置文件:tomcat目录下的/conf/logging.properties. tomcat 的日志等级有:日 ...
- Go语言的GOPATH与工作目录详解
这篇文章主要介绍了Go语言的GOPATH与工作目录详解,本文详细讲解了GOPATH设置.应用目录结构.编译应用等内容,需要的朋友可以参考下 GOPATH设置 go 命令依赖一个重要的环境变量:$GOP ...
- Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解(转http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目录是很重要的,各种设备都在下面.下面 ...
- tomcat配置文件详解
Tomcat系列之服务器的安装与配置以及各组件详解 tomcat 配置文件详解
- Server.MapPath()目录详解
最近在做相关的开发,碰到了Server.MapPath(),顺便来温习一下 Server.MapPath()获取网站的目录详解 ./当前目录 /网站主目录 ../上层目录 ~/网站虚拟目录 如果当前 ...
随机推荐
- Source Code Structure - Python 源码目录结构
Source Code Structure - Python 源码目录结构 Include 目录包含了 Python 提供的所有头文件, 如果用户需要用 C 或 C++ 编写自定义模块扩展 Pytho ...
- Nginx之美多商城前台部署
这里我们采用动静分离的方式来部署美多商城项目. 动态请求:采用uwsgi与Django进行通信处理动态业务. 静态请求:采用Ngins通过socket与uwsgi进行通信处理静态业务. 第一步:实现u ...
- vue学习(四)登陆、注册、首页模板页区分
按照上面文章配置完毕后,会发现有个问题,我登陆页面.注册页面是不需要视图页的. 开始配置路由 重新配置main.js 引入 import App from './App' //引入vue组件 更改启动 ...
- Java TreeMap使用方法
1.使用默认的TreeMap 构造函数,其中key值需要有比较规则. 2.使用默认的TreeMap 构造函数,Key中添加自定义类型,自定义类型必须继承Comparator. 3.使用比较器类来来实现 ...
- 在Linux安装MySQL
yum 方式卸载MySQL与安装MySQL . rpm -qa | grep -i mysql命令查看已经安装过的组件 [root@VM_0_10_centos ~]# rpm -qa | grep ...
- 获取Data和Log默认路径
使用SERVERPROPERTY()来得到Data和Log的默认路径: InstanceDefaultDataPath和InstanceDefaultLogPath分别返回默认数据和日志目录. DEC ...
- 【转载】ibit-mybatis介绍
原文链接:ibit-mybatis介绍 概述 ibit-mybatis是一个Mybatis的增强工具,在Mybatis的基础上增加了新的特性与功能,志在简化开发流程.提高开发效率. 特性 无侵入 ...
- List泛型
.Net自从2.0以后开始支持泛型. 泛型的作用:可以创建独立于被包含类型的类和方法.泛型类使用泛型类型,并可以根据需要使用特定的类型替换泛型类型.这就保证了类型安全性:如果某个类型不支持泛型类,编译 ...
- java 企业 网站源码 模版 屏幕自适应 有前后台 springmvc SSM 生成静态化
前台: 支持四套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以访问 ...
- windows10禁止更新
1. WIN10 禁止自动更新 转载于https://jingyan.baidu.com/article/1e5468f94dc9a3484961b7a8.html 方法一:(注册表方式关闭) 在co ...