tomcat虚拟主机的配置(tomcat虚拟主机有什么用)

tomcat虚拟主机的配置(tomcat虚拟主机有什么用)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

Server和Service

Tomcat中Server是最顶级的组件。它代表Tomcat的运行实例。一个JVM中只会包含一个Server。为了方便扩展。Server中引入了监听器Listener组件;为了方便集成JNDI。引入了GlobalNamingResources组件。Server中最重要的组件还是Service。

tomcat虚拟主机的配置(tomcat虚拟主机有什么用)

在Tomcat中。Service组件是服务的抽象。一个Server中可以包含多个Service。Service组件负责从接收客户端请求到处理请求的整个过程。内部包含了若干接收客户端消息的 Connector 组件和一个处理请求的 Engine 组件。

此外。Service组件还包含了Executor组件。每一个Executor都是一个线程池。它可以为Service内其他组件提供执行任务的线程资源。

Connector

Tomcat的核心可以认为主要由连接器(Connector)组件和容器(Container)组件组成。其中Connector负责处理客户端连接。而Container则负责对请求进行逻辑处理。并把结果返回给客户端。

tomcat虚拟主机的配置(tomcat虚拟主机有什么用)

Connector主要的职责就是接收客户端连接并接收消息报文。消息报文经由它解析后送往容器中处理。因为Tomcat支持不同的通信协议。例如HTTP协议、AJP(Apache JServ Protocol)协议等。所以需要不同的Connector组件。每种协议对应一个Connector组件。

另外不同类型的网络I/O。Connector组件的内部实现也不相同。可分为阻塞I/O和非阻塞I/O。以HTTP协议为例。看看阻塞I/O和非阻塞I/O的Connector内部实现有何不同。

BIO Connector

BIO Connector组件

阻塞I/O的Connector主要由三个组件组成:

Http11Protocol组件。是HTTP协议1.1版本的抽象。主要包含JIoEndpoint组件和Http11Processor组件。Tomcat启动时。JIoEndpoint内部的Acceptor开始监听某个端口。一个请求到来后将被扔进线程池Executor。由线程池进行任务处理。处理过程主要是通过Http11Processor组件对HTTP协议解析并传递到Engine容器。

Mapper组件。负责对客户端请求进行路由。即通过请求地址找到对应的Servlet。

CoyoteAdaptor组件。将Connector和Container适配起来的适配器。

NIO Connector

非阻塞I/O的Connector的结构类似BIO Connector。主要区别在于:

Http11Protocol组件改成Http11NioProtocol组件;JIoEndpoint组件改成NioEndpoint;Http11Processor组件改成Http11NioProcessor组件。功能基本类似。

增加了一个Poller组件。负责轮询多个客户端连接。不断检测各个连接是否有可读数据。如果有客户端可读。则尝试进行读取并解析消息报文。

Container

Tomcat内部有4个级别的容器。分别是Engine、Host、Context和Wrapper。Engine代表全局Servlet引擎。每个Service组件只能包含一个Engine容器组件。但Engine组件可以包含若干Host 容器组件。

Tomcat容器

Engine

除了Host以外。Engine容器还包括了Engine容器级别的Listener组件(监听器)、AccessLog组件(日志)、Cluster组件(集群功能)、Pipeline组件(请求处理管道)、Realm组件(用户权限)。

Host

Host组件代表虚拟主机的抽象。一个虚拟主机中可以存放若干Web应用的抽象。即一个Host可以包含多个Context容器。

和Engine类似。Host容器中也包含了Listener、AccessLog、Cluster、Pipeline、Realm这些组件。不过这些组件都是Host容器级别的。

Context

Context组件是Web应用的抽象。我们开发的Web应用部署到Tomcat后运行时就会生成一个Context对象。

Context包含了应用级别的Listener、AccessLog、Pipeline、Realm组件。还包括了Loader组件(加载web应用资源)、Manager组件(会话管理)、NamingResource住院(命名资源)、Mapper组件(Servlet映射器)和Wrapper容器。

Wrapper

Wrapper容器是Tomcat中4个级别的容器中最小的。与之相对应的是Servlet。一个Wrapper对应一个Servlet。

Wrapper中包含的组件有Servlet、ServletPool(Servlet对象池)和Pipeline组件(处理管道)。

Tomcat的请求处理过程

一个客户端请求到达Tomcat之后的处理流程如上图所示:

当Tomcat启动后。Connector的接收器Acceptor会监听是否有客户端连接。

一旦监听到客户端连接。则将连接交给线程池Executor。开始执行请求响应任务。

Http11Processor负责从客户端连接中读取Http报文并进行解析。解析后的报文封装成Request对象。

Maper根据Http协议请求的URL值和Host属性匹配由哪个Host、哪个Context和哪个Wrapper容器来处理请求。

CoyoteAdaptor负责将Connector组件和Engine容器连接起来。将Request对象和Response对象传递到Engine容器中。

Engine容器的请求处理管道开始工作。管道里包括若干Valve。每个Valve都负责一些处理逻辑。

Engine容器的请求处理管道工作完成后。再依次交给Host容器的处理管道、Context容器的处理管道和Wrapper容器的处理管道。最后将结果输出到客户端。

分享到 :
相关推荐

香港cdn加速主机配置怎么选择(香港cdn加速主机配置怎么选择)

香港cdn加速主机配置选择的方法:1。根据网站的建设目的。选择合适的操作系统。如搭建...

云服务器BGP多线有什么用(bgp和多线服务器哪个好)

云服务器BGP多线是什么?一般在购买云服务器时。云服务厂商一般都会提供多种线路选择。...

网站服务器经常出现这些故障(网站服务器经常出现这些故障怎么办)

网站服务器经常出现这些故障?这里能帮你解决!网站的平稳安全性对公司尤为重要。网站的安...

为什么国内企业出海业务首选美国服务器(为什么国内企业出海业务首选美国服务器呢)

大部分中小企业考虑的首要原则就是成本控制。因此在做全球贸易选择美国服务器时候考虑最多...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注