Tomcat
一念成佛_LHY
这个作者很懒,什么都没留下…
展开
-
Tomcat内核详解(一):Web服务器机制
1通信协议1.HTTP/HTTPSHTTP经过SSL/TLS协议再进入到TCP传输层,就是HTTPS协议;一般HTTP的端口号为80,HTTPS的端口号为443SSL/TCL协议层主要职责就是借助下层协议的信道安全的协商出一份加密密钥,并且用此密钥来加密HTTP请求响应报文;它解决了以下三个方面的问题:提供验证服务,验证本次会话实体身份的合法性; 提供加密服务,强加密机制...原创 2018-08-01 08:31:52 · 631 阅读 · 0 评论 -
Tomcat内核详解(十三):公共与隔离的类加载器
类加载器:就是用于加载Java类到Java虚拟机中的组件,它负责读取Java字节码,并转换为java.lang.Class类的一个实例,是字节码.class文件得以运行。一般类加载器负责根据一个指定的类找到对应的字节码,然后根据这些字节码定义一个java类,它还可以加载资源,包括图像文件和配置文件;类加载器的好处是:可以使Java类动态的加载到JVM中并运行,即可以在程序运行时候再加载类,提供...原创 2018-08-02 08:41:06 · 479 阅读 · 0 评论 -
Tomcat内核详解(十四):请求URI映射器Mapper
Mapper组件主要职责就是负责Tomcat的请求路由,每个客户端的请求到达Tomcat之后,都将由Mapper路由到对应的处理逻辑上(Servlet)上,在Tomcat结构中有两种部分包含Mapper组件,一个是Connector组件,称为全局路由Mapper;另一个是Context组件,称为局部路由Mapper;1.请求的映射类型每个完整的请求都会对应服务端Tomcat内部的Host、...原创 2018-08-02 08:41:20 · 512 阅读 · 0 评论 -
Tomcat内核详解(十五):Tomcat的JNDI
一般来讲,要使用JNDI需要完成以下三个步骤:驱动器jar包放置; 配置文件的配置; 在程序中调用;根据范围层次,可分为两种配置方案。一种是Web应用层次上的局部配置方式,它只可以在自己的Web项目中使用。另一个是全局配置方式,通过资源连接,它可以供该Tomcat下的所有Web应用使用;4.1 Web应用的局部配置方式找到Tomcat的server.xml找到工程的Context...原创 2018-08-02 08:41:43 · 354 阅读 · 0 评论 -
Tomcat内核详解(十六):JSP编译器Jasper
Jasper模块是Tomcat的JSP核心引擎,我们知道JSP本质上是一个Servlet。Tomcat使用Jasper对JSP语法进行解析,生成Servlet并生成Class字节码。另外,在运行的时候,Jasper还会检测JSP文件是否修改,如果修改,则会重新编译JSP文件。1.从JSP到Servlet1.语法树的生成——语法解析2.语法树的遍历——访问者模式访问者模式可以将数...原创 2018-08-02 08:41:54 · 2768 阅读 · 0 评论 -
Tomcat内核详解(十七):运行、通信以及访问的安全管理
1.运行安全管理1.1 Java安全管理器——SecurityManager1.2 Tomcat的系统安全管理Tomcat在启动的时候开启了安全管理器,它采用的是默认的安全管理器——SecurityManager。1.3 安全管理器特权2.安全的通信2.1 SSL/TLS协议SSL层提供三方面的服务:证书:认证客户端和服务器,确保数据发送到正确的客户端和服务器; ...原创 2018-08-02 08:42:07 · 447 阅读 · 0 评论 -
Tomcat内核详解(十八):处理请求和响应的管道
1.管道模式——管道与阀门管道模式: 划分出的每个小模块之间互相独立并且各自负责一段处理逻辑,这些逻辑处理小模块根据顺序连接起来,前一模块的输出作为后一个模块的输入,最后一个模块的输出为最终的处理结果。如此依一来 这就是管道模式,在管道中连接一个或多个阀门,每个阀门负责一部分逻辑处理,数据按规定的顺序往下流。此模式分解了逻辑处理任务,可方...原创 2018-08-02 08:42:29 · 560 阅读 · 0 评论 -
Tomcat内核详解(十九):多样化的会话管理器
1.Web容器的会话机制【客户端是如何把jsessionid传递到服务端的呢?】一般会有三种方式:①cookie方式,即通过浏览器读取小文本cookie,读取jsessionid值后附加到http协议的cookie头部,http协议报文传输到服务端后解析cookie头部便可以获取,但如果你把浏览器的cookie给禁止了则这种方式会失效。②重写url方式,即把jsessionid...原创 2018-08-02 08:42:49 · 871 阅读 · 0 评论 -
Tomcat内核详解(二十):高可用的集群实现
对于Web容器来说,在请求是无状态的情况下,如果实现做集群功能其实是非常简单的,只需要把机器连接到具备一定的分发策略的分发器上即可实现集群功能,同时也要保证这个分发器必须具备故障转移的能力。后面需要多少机器的集群直接添加即可,不但达到了负载均衡的效果,而且达到了高可用的效果;实际情况中,很多请求都是有状态的,简单的讲,就是请求与会话有关。Tomcat中使用了自己的Tribes组件实现集群之...原创 2018-08-02 08:43:08 · 3332 阅读 · 0 评论 -
Tomcat内核详解(二十一):集群通信框架
现在如果要构造一个真正在生产环境上可使用的可靠的系统,基本都离不开集群的概念,总的来说集群是指由若干互相独立的机器通过高速网络组成的一个整体服务,整个集群的内部实现相对外部是透明的,对外部而言它就像一个独立的服务器。要使若干机器协同工作不是一件简单的事,其核心是如何在多机器之间进行通信及各种任务调度使之协同工作。 在工程上常见的两种集群是——负载均衡集群和高可用集群。 负载均衡集群(Load ...原创 2018-08-03 08:29:39 · 916 阅读 · 0 评论 -
Tomcat内核详解(十二):日志框架及其国际化
1.系统内日志Tomcat底层使用JDK自带的日志工具,没有使用第三方日志工具。以减少包的引用,没有采用JDK日志工具的默认配置,而是通过系统变量和重写某些类达到特定的效果;2.日志的国际化使用到了JDK里面的三个类:MessageFormat、Locale、ResourceBundle,Tomcat中利用StringManamger将这三个类封装起来,方便操作,每个Java包对应一个...原创 2018-08-02 08:40:45 · 515 阅读 · 0 评论 -
Tomcat内核详解(十一):生命周期管理
Tomcat这么大的系统,必然需要对生命周期进行统一管理;1.生命周期统一接口——LifecycleTomcat是以容器的方式来组织整个系统架构的,就像数据结构的树。这样只需要启动根容器,就可以将其他所所有的容器都启动,达到统一启动、停止和关闭的效果;作为统一的入口,Lifecycle把所有的启动、停止和关闭、生命周期相关的方法都组织到一起,就可以很方便的管理Tomcat各个容器组...原创 2018-08-02 08:40:29 · 243 阅读 · 0 评论 -
Tomcat内核详解(二):Servlet规范
Java体系的Web服务器基本上都会遵守Servlet规范,该规范描述了HTTP请求以及响应处理过程相关的对象及其作用。Tomcat其实可以看成是一个Servlet容器,所以它需要遵守Servlet规范。下面介绍Servlet规范主要的一些对象;1.Servlet接口Java Servlet API中提供了两个抽象类方便开发者实现Servlet类。分别是:GenericServle...原创 2018-08-01 08:32:13 · 655 阅读 · 0 评论 -
Tomcat内核详解(三):初识Tomcat
1.Tomcat的批处理1.startup.batstartup.bat是windows下的启动批处理脚本,它的主要功能就是找到另一个批处理脚本catalina.bat,并且执行catalina.bat。2.shutdown.bat关闭脚本shutdown.bat的内容与启动脚本startup.bat的内容基本一样,其执行顺序也是先找到另一个批处理脚本catalina.bat的路径...原创 2018-08-01 08:33:00 · 474 阅读 · 0 评论 -
Tomcat内核详解(四):预览Tomcat
如果把Tomcat的内核高度的抽象,则它可以看成连接器(Connector)组件和容器(Container)组件组成,其中Connector组件负责在服务端处理客户端的连接,包括接收客户端连接、接收客户端的消息报文以及消息报文的解析等工作;Container组件则负责对客户端的请求进行逻辑处理,并把结果返回给客户端。1.整体结构及属性介绍从Tomcat服务器配置文件server.xml...原创 2018-08-01 08:33:08 · 394 阅读 · 0 评论 -
Tomcat内核详解(五):Server组件与Service组件
1.Server组件作为Tomcat最外层的核心组件,Server组件的作用主要有以下几个。提供了监听器机制,用于在Tomcat整个生命周期中对不同事件进行处理; 提供了Tomcat容器全局的命名资源实现; 监听某个端口以接收SHUTDOWN命令;1.生命周期监听器为了在Server组件的某阶段执行某些逻辑,于是提供了监听器机制。在Tomcat中实现一个生命周期监听器很简单,只要...原创 2018-08-01 08:33:16 · 2193 阅读 · 0 评论 -
Tomcat内核详解(六):Connector组件
Connector(连接器)组件是Tomcat最核心的两个组件之一,主要的职责就是负责接收客户端连接和客户端请求的处理加工。每个Connector都将指定一个端口进行监听,分别负责对请求报文的解析和响应报文组装,解析过程生成Request对象,而组装过程涉及Response对象;如果将Tomcat整体比作一个巨大的城堡,那么Connector组件就是城堡的城门,每个人要进入城门就必须通过城门,...原创 2018-08-01 08:33:24 · 6373 阅读 · 0 评论 -
Tomcat内核详解(七):Engine容器
Engine即为全局引擎容器,包含以下主要组件:虚拟主机——Host组件Host组件是Engine容器的一个子容器,它表示一个虚拟主机。Host组件也包含了很多其他的组件访问日志——AccessLog组件因为Engine是一个全局的Servlet容器,所以这里的访问日志作用的范围是所有客户端的请求访问,不管访问哪个虚拟主机都会被该日志组件记录。管道——Pipeline组件Pipe...原创 2018-08-01 08:33:31 · 1317 阅读 · 0 评论 -
Tomcat内核详解(八):Host容器
一个Servlet引擎可以包含若干个Host容器,它是根据URL地址中的主机部分抽象的,一个Servlet引擎可以包含若干个Host容器,而一个Host容器可以包含若干个Context容器、AccessLog组件、Pipeline组件、Cluster组件、Realm组件、HostConfig组件和Log组件。1. Web应用——Context每个Host容器保安若干个Web应用(Conte...原创 2018-08-01 08:33:38 · 632 阅读 · 0 评论 -
Tomcat内核详解(九):Context容器
Container容器是子容器的父接口,所有的子容器都必须实现这个接口,在Tomcat中Container容器的设计是典型的责任链设计模式,其有四个子容器:Engine、Host、Context和Wrapper。这四个容器之间是父子关系,Engine容器包含Host,Host包含Context,Context包含Wrapper。 我们在web项目中的一个Servlet类对应一个Wrapper,多...原创 2018-08-01 08:33:48 · 2029 阅读 · 0 评论 -
Tomcat内核详解(十):Wrapper容器
Wrapper容器是Tomcat中最小级别的容器,可能对应一个Servlet对象,也可能对应一个Servlet对象池;1.Servlet工作机制Servlet在初始化的时候调用init方法,在销毁时调用destroy方法,而对客户端的请求则调用service方法。对于这些机制,都必须由Tomcat在内部提供支持,具体则由Wrapper容器提供支持;2.Servlet对象池Servl...原创 2018-08-01 08:33:56 · 708 阅读 · 0 评论 -
Tomcat内核详解(二十二):监控与管理
Tomcat在对内部监控上主要使用了JMX。JMX即Java管理扩展(Java Management Extension),作为一个Java管理体系的规范标准,其主要负责系统管理,是基于此规范而扩展的系统拥有管理监控功能。通过它对Tomcat运行时进行监控和管理,包括服务器性能、JVM相关性能、Web连接数、线程池、数据库连接池、配置文件重新加载等。并且提供了一些远程可视化管理。它实时性高,同时也...原创 2018-08-03 08:30:02 · 456 阅读 · 0 评论