![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Tomcat
石硕页
不滞于物,草木竹石均可为剑
展开
-
SpringBoot 在启动的时候内置tomcat 做了啥?
前言不得不说SpringBoot的开发者是在为大众程序猿谋福利,把大家都惯成了懒汉,xml不配置了,连tomcat也懒的配置了,典型的一键启动系统,那么tomcat在springboot是怎么启动的呢?内置tomcat开发阶段对我们来说使用内置的tomcat是非常够用了,当然也可以使用jetty。<dependency><groupId>org.springframework.boot</groupId><artifactId>...转载 2020-10-21 20:59:23 · 702 阅读 · 0 评论 -
How Tomcat Works 12:StandardContext
我们已经知道,一个上下文容器Context 代表一个web 应用,每一个上下文包括多个包装器(wrapper),每个包装器代表一个servlet。但是上下文,还需要一些其他的组件,比如加载器,和管理器,本章主要介绍Context 的主要是先 StandardContext StandContext 类:public class StandardContext extends ...原创 2018-12-29 16:29:42 · 139 阅读 · 0 评论 -
How Tomcat Works 15:Digester
Tomcat 中会用到多种配置,主要是通过web.xml 配置文件来实现。在Tomcat 中,则是通过Digester 对象将XML 元素转换为Java 对象。此外,web.xml 也用于配置 servlet/JSP 应用。Tomcat 必须能够解析web.xml 文件,并基于web.xml 文档配置上下文对象,幸运的是,Digester 很优雅的解决了这个问题。为什么在配置上下文Cont...原创 2019-01-18 21:03:56 · 126 阅读 · 0 评论 -
How Tomcat Works 16:关闭钩子
在很多环境中,关闭应用程序时,需要做一些清理操作。问题在于,用户如果正常关闭,那么会正常清理,但是当用户非正常退出时,可能会导致没有全部清理。比如,Tomcat 启动时,会通过调用服务的start 方法来启动一个servlet 容器。该方法又会调用其他组件的start方法。关闭的时候,也是一样,但如果突然关闭,则可能会出现意想不到的情况。幸运的是,在java 中可以通过关闭钩子优雅的解决这个问...原创 2019-01-18 21:20:02 · 156 阅读 · 0 评论 -
How Tomcat Works 13:主机(Host)和引擎(Engine)
本章主要论述的内容的是:主机和引擎如果需要在一个Tomcat 中部署多个上下文,需要使用一个主机。(理论上,当只有一个上下文容器的时候不需要主机)引擎表示整个Catalina 的Servlet 引擎。如果使用的话,引擎位于容器等级的最高层。可以添加到引擎的容器主要是:Host 和 Context接下来主要介绍的是Host 相关的StandardHost、StandardHostMa...原创 2019-01-14 22:09:38 · 276 阅读 · 0 评论 -
How Tomcat Works 14:服务器(Server)和服务(Service)
在之前的章节中已经看到的是:如何初始化连接器和容器,并将它关联起来,并作为servlet 容器。但是,前面只有一个连接器,通过端口8080对HTTP 请求进行服务。但你不能添加另一个连接器来处理例如HTTPS的请求。另外之前的代码程序,都没有一套启动和停止 Servlet容器的机制。Server 服务器Server 接口表示整个Catalina Servlet 容器以及它的组件。...原创 2019-01-14 22:57:52 · 302 阅读 · 0 评论 -
How Tomcat Works 17:Tomcat 启动
这一章关注的重点是:Tomcat 如何使用 org.apache.catalina.startup 下面的Catalina 类和Bootstrap 类来启动的。Catalina 类用来启动和停止一个服务器对象,并解析tomcat 的配置文件即web.xml (使用前一章的Digester)Bootstrap 类创建一个Catalina 的实例,并调用它的process 方法(最新的版本已经...原创 2019-01-21 19:48:33 · 180 阅读 · 0 评论 -
How Tomcat Works 18:部署器
一个应用要可以使用,一个上下文必须先部署在主机上。在Tomcat 中,一个上下文可以以war 文件的形式部署,也可以直接将整个应用程序部署在Tomcat 安装目录的webapps 目录下面。对你配置的每个应用,都可以有一个配置脚本来配置该上下文,配置脚本以XML 文档的形式存在。在很早的Tomcat 版本中,部署器都是用 org.apache.catalina.Deployer 接口表示。...原创 2019-01-21 20:08:47 · 122 阅读 · 0 评论 -
How Tomcat Works 19:管理Servlet
Manager 应用程序用于管理部署的应用程序Manager 应用可以在 %CATALINA_HOME%/server/webapps/manager 目录下找到。该应用的主servlet 是 ManagerServlet 在Tomcat 中,用户角色在 %CATALINA_HOME%/conf 目录下的tomcat-users.xml 文件中有列表。因此要进入Manager 应用程序,必...原创 2019-01-27 13:43:14 · 154 阅读 · 0 评论 -
How Tomcat Works 20:JMX-based Management
JMX 简介JMX: Java Management Extension 。java 管理扩展要想让一个 Java 对象称为 JMX 管理资源,必须创建一个 Managed Bean或者 MBean 的对象。当然,你也可以编写MBean 管理多个 Java 对象。一共有四种 MBean:标准 standard,动态 dynamic, 打开 open, 和模型 model。从结构...原创 2019-01-27 14:23:08 · 147 阅读 · 0 评论 -
How Tomcat Works 5:容器
容器是一个处理用户servlet 请求并返回响应给web 用户的模块。org.apache.catalina.Container 接口定义了容器的形式,主要有四种:Engine (引擎):表示整个catalina 的servlet 引擎 Host (主机):表示一个拥有数个上下文的虚拟主机 Context (上下文):表示一个Web应用,一个context 包含一个或多个wrapper...原创 2018-12-18 16:12:43 · 174 阅读 · 0 评论 -
How Tomcat Works 10:安全
概述有些web 应用程序的内容是有限制的,只允许有权限的用户在提供正确的用户名和密码的情况下才允许访问。servlet 通过配置部署文件web.xml 来对安全性提供技术支持。一个servlet 通过一个叫 authenticator 的阀门vavle 来支持安全性限制。当容器启动的时候,authenticator 被添加到的容器的流水线上。(域)Realm域是用于进行用户...原创 2018-12-23 21:51:06 · 182 阅读 · 0 评论 -
How Tomcat Works 1:一个简单的Web 服务器
我们可以将Tomcat 简单理解成一个Web 服务器。这一节主要是讲解Web 服务器是如何工作的。Web 服务器也可以看作是Http 服务器,主要是因为它是使用Http 来与客户端进行通信的。一个基于Java 的Web 服务器,最重要的两个类是java.net.Socket 和 java.net.ServerSocket , 并通过Http 消息进行通信。其中前者是Socket 客户端,后者是...原创 2018-09-27 22:41:51 · 1296 阅读 · 2 评论 -
How Tomcat Works 2:一个简单的Servlet 容器
这一章的主要内容是讲解如何构造自己的Servlet 容器。我们首先看一个servlet 容器需要做什么工作来为一个servlet 来提供HTTP请求。Servlet 编程是通过 javax.servlet 和 javax.servlet.http 这两个包的类和接口来实现的。这里面最重要的就是 javax.servlet.Servlet 接口。所有的servlet 实现类必须实现这个接口。...原创 2018-11-05 15:30:00 · 186 阅读 · 0 评论 -
How Tomcat Works 6:生命周期
Catalina 由多个组件构成 ,在Catalina 启动的时候,这些组件也会启动。当Catalina 停止的时候,这些组件也要被清除。比如,容器组件停止的时候,必须唤醒所有加载servlet 的destory 方法。保持组件启动和停止一致的机制通过实现org.apache.catalina.LifeCycle 接口实现。LifeCycle 接口主要是触发以下事件:BEFORE_...原创 2018-12-20 09:50:18 · 210 阅读 · 0 评论 -
How Tomcat Works 7:日志系统
tomcat 中的日志组件也是 catalina的组件之一。这一章主要介绍 org.apache.catalina.Logger 接口。并分析它的三个实现类日志系统 是一个相对简单的跟容器相关联的组件。Logger 接口,是catalina 中日志功能的基础接口。这个接口里面可以接受一个冗余级别,如果传递数字低于该类的实例设置的冗余级别,就会将信息记录下来,否则则会忽略信息。这...原创 2018-12-21 15:08:36 · 192 阅读 · 0 评论 -
How Tomcat Works 3:连接器
catalina 中的主要两个模块是 连接器和容器。一个规范的连接器必须是创建了javax.servlet.http.HttpServletRequest 和 javax.servlet.http.HttpServletResponse。并将这两个对象传递给被调用servlet的service方法。连接器解析HTTP请求头部,并让servlet 可以获得头部,cookies,参数名/值...原创 2018-12-11 19:47:06 · 186 阅读 · 0 评论 -
How Tomcat Works 4:Tomcat 的默认连接器
Tomcat 默认连接器,就是在上一章的简单连接器的基础上,可以和catalina 工作的一个更加完善的连接器。这里说的tomcat 默认连接器仅仅局限于 tomcat4 版本。(事实上,默认连接器早已废弃使用,但是用来理解连接器的原理还是很有价值的)一个Tomcat 默认连接器必须符合以下条件:必须实现接口 org.apache.catalina.Connector 必须创建请求对...原创 2018-12-11 21:41:39 · 195 阅读 · 0 评论 -
How Tomcat Works 11:StandardWrapper
这一章主要是讲tomcat 的标准包装器。前面已经介绍了主要的四个容器分别是:引擎engine、主机host、上下文context、包装器wrapper上下文可以包含多个包装器,而包装器里面主要是servlet方法调用序列对于每一个连接,连接器都会调用关联容器的invoke 方法,而容器又会调用它的全部子容器的invoke 方法。这样就相当于是一个方法调用序列。整个序列的步骤是...原创 2018-12-28 20:24:53 · 212 阅读 · 0 评论 -
How Tomcat Works 8:加载器
一个servlet 容器需要一个定制的容器,而不是简单的使用系统的加载器。如果像前面章节那样使用系统的加载器来加载servlet 和其他需要的类,这样servlet 就可以进入java 虚拟机classpath 环境下面的任何类和类库,这样会带来安全隐患。servlet 只允许访问WEB-INF / 目录及其子目录下面的类以及部署在WEB-INF/lib 目录下的类库。所以servle...原创 2018-12-23 21:10:40 · 153 阅读 · 0 评论 -
How Tomcat Works 9:Session 管理
概述catalina 通过一个管理器组件来完成session 管理工作。这个组件就是 org.apache.catalina.Manager 接口。一个管理器通常跟一个上下文容器相关联,它负责创建、更新以及销毁session 对象,并能给任何请求组件返回一个合法的session。一个servlet 可以通过getSession 方法获得一个session 对象默认情况下,管理器...原创 2018-12-23 21:22:19 · 162 阅读 · 0 评论 -
How Tomcat Works 0:介绍
本系列文章,都是自己对《How Tomcat Works》这本书的中文版的一个学习心得。很多文字出自此书。正文现在的tomcat版本已经迭代到了tomcat 9.x。在作者写那本书时,主要是剖析的是4.1.12和5.0.18版本,现在看来算是比较旧的版本了,但是这并不影响我们洞悉tomcat的内在逻辑。tomcat可以简单的看做是一个Servlet容器,免费、开源。代号是Catal...原创 2018-07-26 14:24:12 · 186 阅读 · 0 评论