Tomcat结构
Tomcat结构
Server(服务器)
服务器代表整个Tomcat容器。 Tomcat提供了服务器接口的默认实现(很少由用户定制)。
Service(服务)
服务是位于服务器内部的中间组件,将一个或多个连接器(Connector)绑定到一个引擎(Engine)。默认实现很简单且足够,很少由用户自定义。
Connector(连接器)
连接器处理与客户端的通信。 Tomcat有多个可用的连接器,例如HTTP连接器、AJP连接器。
HTTP连接器:负责与客户端建立HTTP连接。
AJP连接器:负责与其他web服务器建立连接。
PS :AJP是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。
Container(容器)
Container容器由四个子容器组件构成,分别是:Engine、Host、Context、Cluster。
Engine(引擎)
引擎是特定服务的请求处理管道。服务可能有多个连接器,引擎会接收并处理这些连接器的所有请求,并将响应传递给适当的连接器。引擎接口可以定制实现,但并不常见。
PS:引擎可以通过设置jvmRoute参数用于Tomcat服务器集群。
Host(主机)
Host是Tomcat服务器里网络名称的关联。引擎可能包含多个Host,Host元素也支持网络别名。
Context(上下文)
一个Context代表一个web应用程序。一个Host可能包含多个Context,每个Context都有唯一的路径。
Cluster(集群)
Tomcat集群实现提供会话复制,上下文属性复制和WAR文件的集群部署。
server.xml例子
<Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina">
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="test" path="/test" reloadable="true" source="org.eclipse.jst.jee.server:test"/>
</Host>
</Engine>
</Service>
服务器启动
启动方式
1、命令行启动。
2、作为Java程序的嵌入式服务器。
3、Windows服务自动启动。
Tomcat启动顺序
从命令行启动
类:org.apache.catalina.startup.Bootstrap
1、设置类加载器
2、加载启动类(反射)
3、Bootstrap.daemon.init()完成
处理命令行参数(开始,停止)
1、Catalina.setAwait(true);
2、Catalina.load();
initDirs -> initNaming -> createStartDigester -> server.xml加载 -> System.out和System.err分配给SystemLogHandler类 -> 初始化所有组件
3、Catalina.start();
启动NamingContext -> 启动服务 -> StandardHost
4、通过HTTP端口接收请求
5、调用servlet类
参考文献
https://tomcat.apache.org/tomcat-8.0-doc/architecture/index.html
Tomcat结构的更多相关文章
- tomcat(二)--tomcat结构
Tomcat结构及组件介绍 上面的层次结构在server.xml中有体现 <Server> <Service> <Connector> <Engine> ...
- Tomcat结构、启动过程、关键组件简单分析
Tomcat 结构: Tomcat最顶层容器叫Server,代表整个服务器,Server中包含至少一个Service,用于具体提供服务,Serv ...
- Tomcat结构(转)
资料:http://wenku.baidu.com/view/20720e78a26925c52cc5bfd6.html Tomcat系统架构 http://wenku.baidu.com/view/ ...
- tomcat#结构
下面是一个tomcat的配置文件,通过分析tomcat配置文件的结构,和相关注释,可以大致了解tomcat的结构 <?xml version="1.0" encoding=& ...
- Tomcat【介绍Tomcat、结构目录、虚拟目录、临时域名、虚拟主机、体系结构】
什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器. 为什么我们需要用到Tomcat 如果你学过html,c ...
- 浅入tomcat
前言:学习笔记,以供参考 1.什么是服务器 所谓的服务器其实就是一段别人写好的程序,服务器有两个能力. a.可以帮助我们来管理资源. b.可以将资源向外界发布以便于外界来访问这个资源. 2.资源有哪些 ...
- Eclipse导入Tomcat源码(转)
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...
- Tomcat源码导入Eclipse测试
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...
- Tomcat 原理篇
TOMCAT 原理篇一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个se ...
随机推荐
- [转]使用Git Submodule管理子模块
本文转自:https://blog.csdn.net/qq_37788558/article/details/78668345 实例代码: 父项目:https://github.com/jjz/pod ...
- 黑客常用 Linux 入侵常用命令
大学曾误入歧途算是一个脚本小子.... 系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cp ...
- Java学习笔记之——final关键字
最终的,最后的 可以修饰:变量.方法.类 (1) 修饰变量 不可改变,即常量,只能赋值一次,赋值之后不可改变 a. 修饰属性:private final int num; 要求属性要显式赋值 通常在属 ...
- 02-Java中的对象和类
面向对象: 程序由对象构成,每个对象包含对用户公开的特定功能部分(public)和隐藏实现部分(private). 类: 构造对象的模板 对象: 对象的行为 --- 可以对对象施加的操作(方法) 对象 ...
- tomcat中 server.xml
tomcat服务器, 配置文件server.xml中的各项配置的意义 <?xml version="1.0" encoding="UTF-8"?> ...
- 弹性盒模型flex
一.flex flex是flexible box的缩写,意为“弹性布局”: 定义弹性布局 display:flex; box{ display:flex; } 二.基本定义 我只简单的说一下容器和项目 ...
- 16-pymysql模块的使用
[转]16-pymysql模块的使用 本节重点: pymysql的下载和使用 execute()之sql注入 增.删.改:conn.commit() 查:fetchone.fetchmany.fetc ...
- CSS3 - 盒子的 box - size
两个参数: border-box和content-box <!DOCTYPE html> <html lang="en"> <head> < ...
- Python模块之信号(signal)
在了解了Linux的信号基础之 后,Python标准库中的signal包就很容易学习和理解.signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂 停并等待信号,以及定时 ...
- Android星球效果实现
在项目中看着这个旋转效果挺炫的,就抽取出来做个记录.主要是使用CarrouselLayout 稍微修改 CarrouselLayout代码Demo下载z地址:GitHub https://github ...