加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

发布时间:2019-11-28 03:29:10 所属栏目:电商 来源:站长网
导读:副标题#e# Tomcat是开源的 Java Web 应用服务器,实现了 Java EE 的部分技术规范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 Sun 公 司为企业级应用推出的标准平台,定义了一系列用于企业级开发的技术规范。除了上述的之外,
副标题[/!--empirenews.page--]

Tomcat是开源的 Java Web 应用服务器,实现了 Java EE 的部分技术规范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 Sun 公 司为企业级应用推出的标准平台,定义了一系列用于企业级开发的技术规范。除了上述的之外,还有 EJB、Java Mail、JPA、JTA、JMS 等,而这些都依赖具体容器的实现。

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

上图对比了 Java EE 容器的实现情况,Tomcat 和 Jetty 都只提供了 Java Web 容器必需的 Servlet 和 JSP 规范,开发者要想实现其他的功能,需要自己依赖其他开源实现。

Glassfish 是由 sun 公司推出,Java EE 最新规范出来之后,首先会在 Glassfish 上进行实现,所以是研究 Java EE 最新技术的首选。

最常见的情况是使用 Tomcat 作为 Java Web 服务器,使用 Spring 提供的开箱即用的强大功能,并依赖其他开源库来完成负责的业务功能实现。

Servlet容器

Tomcat 组成

如下图所示,主要有 Container 和 Connector 以及相关组件构成。

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

Server:指的就是整个 Tomcat 服 务器,包含多组服务,负责管理和 启动各个 Service,同时监听 8005 端口发过来的 shutdown 命令,用 于关闭整个容器 ;

Service:Tomcat 封装的、对外提 供完整的、基于组件的 web 服务, 包含 Connectors、Container 两个 核心组件,以及多个功能组件,各 个 Service 之间是独立的,但是共享 同一 JVM 的资源 ;

Connector:Tomcat 与外部世界的连接器,监听固定端口接收外部请求,传递给 Container,并 将 Container 处理的结果返回给外部

Container:Catalina,Servlet 容器,内部有多层容器组成,用于管理 Servlet 生命周期,调用 servlet 相关方法

Loader:封装了 Java ClassLoader,用于 Container 加载类文件;Realm:Tomcat 中为 web 应用程序提供访问认证和角色管理的机制;

JMX:Java SE 中定义技术规范,是一个为应用程序、设备、系统等植入管理功能的框架,通过 JMX 可以远程监控 Tomcat 的运行状态

Jasper:Tomcat 的 Jsp 解析引擎,用于将 Jsp 转换成 Java 文件,并编译成 class 文件。Session:负责管理和创建 session,以及 Session 的持久化(可自定义),支持 session 的集群。

Pipeline:在容器中充当管道的作用,管道中可以设置各种 valve(阀门),请求和响应在经由管 道中各个阀门处理,提供了一种灵活可配置的处理请求和响应的机制。

Naming:命名服务,JNDI, Java 命名和目录接口,是一组在 Java 应用中访问命名和目录服务的 API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象,目录服务也是一种命名 服务,对象不但有名称,还有属性。Tomcat 中可以使用 JNDI 定义数据源、配置信息,用于开发 与部署的分离。

Container组成

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

Engine:Servlet 的顶层容器,包含一 个或多个 Host 子容器;

Host:虚拟主机,负责 web 应用的部 署和 Context 的创建;

Context:Web 应用上下文,包含多个 Wrapper,负责 web 配置的解析、管 理所有的 Web 资源;

Wrapper:最底层的容器,是对 Servlet 的封装,负责 Servlet 实例的创 建、执行和销毁。

生命周期管理

Tomcat 为了方便管理组件和容器的生命周期,定义了从创建、启动、到停止、销毁共 12 种状态。

tomcat 生命周期管理了内部状态变化的规则控制,组件和容器只需实现相应的生命周期方法,即可完成各生命周期内的操作(initInternal、startInternal、stopInternal、 destroyInternal);

比如执行初始化操作时,会判断当前状态是否 New,如果不是则抛出生命周期异常;是的话则设置当前状态为 Initializing,并执行 initInternal 方法,由子类实现,方法执行成功则设置当前状态为 Initialized,执行失败则设置为 Failed 状态;

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

Tomcat 的生命周期管理引入了事件机制,在组件或容器的生命周期状态发生变化时会通知事件监听器,监听器通过判断事件的类型来进行相应的操作。事件监听器的添加可以在 server.xml 文件中进行配置;

Tomcat 各类容器的配置过程是通过添加 listener 的方式来进行的,从而达到配置逻辑与容器的解耦。如 EngineConfig、HostConfig、ContextConfig。

EngineConfig:主要打印启动和停止日志

HostConfig:主要处理部署应用,解析应用 META-INF/context.xml 并创建应用

Context ContextConfig:主要解析并合并 web.xml,扫描应用的各类 web 资源 (filter、servlet、listener)

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

Tomcat 的启动过程

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读