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结构的更多相关文章

  1. tomcat(二)--tomcat结构

    Tomcat结构及组件介绍 上面的层次结构在server.xml中有体现 <Server> <Service> <Connector> <Engine> ...

  2. Tomcat结构、启动过程、关键组件简单分析

                            Tomcat   结构:   Tomcat最顶层容器叫Server,代表整个服务器,Server中包含至少一个Service,用于具体提供服务,Serv ...

  3. Tomcat结构(转)

    资料:http://wenku.baidu.com/view/20720e78a26925c52cc5bfd6.html Tomcat系统架构 http://wenku.baidu.com/view/ ...

  4. tomcat#结构

    下面是一个tomcat的配置文件,通过分析tomcat配置文件的结构,和相关注释,可以大致了解tomcat的结构 <?xml version="1.0" encoding=& ...

  5. Tomcat【介绍Tomcat、结构目录、虚拟目录、临时域名、虚拟主机、体系结构】

    什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器. 为什么我们需要用到Tomcat 如果你学过html,c ...

  6. 浅入tomcat

    前言:学习笔记,以供参考 1.什么是服务器 所谓的服务器其实就是一段别人写好的程序,服务器有两个能力. a.可以帮助我们来管理资源. b.可以将资源向外界发布以便于外界来访问这个资源. 2.资源有哪些 ...

  7. Eclipse导入Tomcat源码(转)

    想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...

  8. Tomcat源码导入Eclipse测试

    想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...

  9. Tomcat 原理篇

    TOMCAT 原理篇一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个se ...

随机推荐

  1. [转]Node.js中koa使用redis数据库

    本文转自:https://blog.csdn.net/offbye/article/details/52452322 Redis是一个常用的Nosql数据库,一般用来代替Memcached做缓存服务, ...

  2. [转]Docker基础-使用Dockerfile创建镜像

    本文转自:https://www.cnblogs.com/jie-fang/p/7927643.html 1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # T ...

  3. asp.net-常用服务器控件-20180329

    常用服务器控件 1.文本类型控件 Label控件 TextBox控件 2.按钮类型控件 Button控件 ImageButton控件 3.选择类型控件 CheckBox控件 RadioButton控件 ...

  4. [日常] nginx与负载均衡策略

    upstream mail.sina.net { #upstream的负载均衡,weight是权重,可以根据机器配置定义权重.weigth参数表示权值,权值越高被分配到的几率越大. server we ...

  5. [android] android消息机制入门

    上一节,先把访问网络的部分放到一个子线程里面去执行,new Thread(){}.start(),new Thread直接使用匿名内部类来实现,重写run()方法,内部类访问外部的变量,这个变量应该定 ...

  6. C-Linux_毫秒级随机值获取

    秒级随机值-常用方法: #include <stdlib.h> #include <stdio.h> #include <stdio.h> #include < ...

  7. setTimeout()与clearTimeout()

    setTimeout(code,millisec)setTimeout() 只执行 code 一次.如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeo ...

  8. JavaScript 变量及类型

    在JavaScript中,所有的number都是以64位浮点型数据来存储的.所有的编程语言,包括js,对浮点型数据的精度都很难确定. var a = 0.1 + 0.2; console.log(a ...

  9. 【Wyn Enterprise BI知识库】 认识多维数据建模与分析 ZT

    与业务系统类似,商业智能的基础是数据.但是,因为关注的重点不同,业务系统的数据使用方式和商业智能系统有较大差别.本文主要介绍的就是如何理解商业智能所需的多维数据模型和多维数据分析. 数据立方体 多维数 ...

  10. Wyn BI的机会在哪里:越靠近消费者的行业,比如零售、文娱和金融,信息化投入越大 ZT

    近日,全球知名信息技术咨询公司IDC在网易云创大会上发布了<2018中国企业数字化发展报告>(下称报告).报告显示,近几年我国数字经济占GDP比重逐年增加,至2017年已经达到32.9%, ...