怎样关闭tomcat管理界面_Tomcat的整体架构你了解吗

本文围绕Tomcat整体架构展开,指出了解其架构对深入了解Tomcat至关重要。介绍了Tomcat顶层架构,包括Server、Service、Connector和Container的关系及作用,还提及Server掌管Tomcat生死大权,Service对外提供服务等,最后阐述了Server组件的相关内容。

Tomcat整体架构

作者:兔哥

前言

俗话说,要站在巨人的肩膀上看世界。一般学习的时候也是先总览整体,然后逐步个个击破,最后形成思路,了解具体细节。Tomcat的结构很复杂,但是 Tomcat 非常的模块化,找到了 Tomcat最核心的模块,问题才可以迎刃而解。因此说,了解了Tomcat的整体架构对以后深入了解Tomcat来说至关重要!

一、Tomcat顶层架构

先上一张Tomcat的顶层结构图,如下:

c1f3b1e40b26db4ed2d1dad05866b99e.png

Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。

Service主要包含两个部分:Connector和Container。从上图可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下:

1、Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;

2、Container用于封装和管理Servlet,以及具体处理Request请求;

一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接,示意图如下(Engine、Host、Context下边会说到):

bc1efa70bb0565c1dccbb87dc8fcfc0f.png

多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,但是 Service 还要一个生存的环境,必须要有人能够给她生命、掌握其生死大权,那就非 Server 莫属了!所以整个 Tomcat 的生命周期由 Server 控制。

另外,上述的包含关系或者说是父子关系,都可以在tomcat的conf目录下的server.xml配置文件中看出,下图是删除了注释内容之后的一个完整的server.xml配置文件(Tomcat版本为8.0.X)

7c159ceabf3408f9fa44f00a4778a189.png

详细的配置文件文件内容可以到Tomcat官网查看:http://tomcat.apache.org/tomcat-8.0-doc/index.html

上边的配置文件,还可以通过下边的一张结构图更清楚的理解:

240e3aa4857432d5640a823cbba5ac5c.png

Server标签设置的端口号为8005,shutdown=”SHUTDOWN” ,表示在8005端口监听“SHUTDOWN”命令,如果接收到了就会关闭Tomcat。一个Server有一个Service,当然还可以进行配置,一个Service有多个,Service左边的内容都属于Container的,Service下边是Connector。

二、Tomcat顶层架构小结:

(1)Tomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container; (2) Server掌管着整个Tomcat的生死大权; (4)Service 是对外提供服务的; (5)Connector用于接受请求并将请求封装成Request和Response来具体处理; (6)Container用于封装和管理Servlet,以及具体处理request请求;

Tomcat加载时相应组件(容器)的配置参数都是从上面的文件读进去的,这个文件也是Tomcat性能优化的关键。接下来我们就根据上图以及conf/server.xml的内容来一步步描述一下上面所说的各种组件吧。

三、Server

Server相当于一个实体的家,这是它们在社会上生存之本,有了家它们就行安心的为人民服务了。

Server 要完成的任务非常easy。就是要可以提供一个接口让其他程序可以訪问到这个 Service 集合、同一时候要维护它所包括的全部 Service 的生命周期。包括怎样初始化、怎样结束服务、怎样找到别人要访问的 Service。还有其他的一些次要的任务,如您住在这个地方要向当地政府去登记、可能还有要配合当地公安机关日常的安全检查什么的。

Server是Tomcat中最顶层的组件,它可以包含多个Service组件。Server 的类结构图例如以下:

2b590568fc43d698cc91dcbb2f92bdab.png

在Tomcat源代码中Server组件的标准实现类 是 org.apache.catalina.core.StandardServer 。StandardServer的继承关系图如下图所示:

78b35c25569dbb8e3b12d28b45e16552.png

Lifecycle是Tomcat的生命周期接口。保持组件启动和停止一致的的机制通过实现org.apache.catalina.Lifecycle接口来实现。

StandardServer 实现了上面 Server的方法,同一时候也实现了 Lifecycle、MbeanRegistration 两个接口的全部方法,以下主要看一下 StandardServer 重要的一个方法 addService 的实现:

StandardServer.addService

@Override
public void addService(Service service) {
service.setServer(this);
synchronized (servicesLock) {
Service results[] = new Service[services.length + 1];
System.arraycopy(services, 0, results, 0, services.length);
results[services.length] = service;
services = results;
if (getState().isAvailable()) {
try {
service.start();
} catch (LifecycleException e) {
// Ignore
}
}
// Report this property change to interested listeners
support.firePropertyChange("service

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值