
tomcat
jzq114
这个作者很懒,什么都没留下…
展开
-
Tomcat源码阅读
Tomcat是一款非常优秀的servlet容器或者说是服务器,相信很多人都能非常熟练的使用它。但是对于技术有基情的人是不会仅仅停留在熟练使用的阶段的。为了不只当一个熟练工,那么我们就要去研究它运行的原理。研究运行原理最好的办法当然就是去阅读tomcat的源码。当然,阅读源码必须得讲究方式方法了,每个人的理解方式不同,阅读的方法也就不一样了。比如把tomcat拆分成不同的组件,一个一个的剖析,这是最原创 2016-06-25 15:20:30 · 1427 阅读 · 0 评论 -
Tomcat源码阅读之请求过程
Tomcat接收到请求之后便进行解析请求的工作。解析Http请求是个非常复杂的过程,比如解析请求头,解析请求行,解析参数等过程都比较复杂。对解析Http请求过程感兴趣的同学可以结合Http协议相关的资料深入研究。 Http请求解析完的数据会填充到request对象中,注意是org.apache.coyote.Request类型的对象。这个类是Tomcat内部使用的描述请求的信息类,作用就是在服务器原创 2016-08-25 22:45:28 · 388 阅读 · 0 评论 -
Tomcat源码阅读之Connector启动
Tomcat的主要功能简单概括起来就是接收请求,处理请求,返回结果,而接收请求和返回结果的过程都需要Connector组件参与。那么我们以Http/1.1对应的连接器为例,看下Connector组件启动过程的源码。Connector组件启动的主要逻辑在JIoEndpoint类的start方法中。public void start() throws Exception {原创 2016-08-22 23:31:03 · 369 阅读 · 0 评论 -
Tomcat源码阅读之过滤器
过滤器是web开发中常用的组件,可以通过web.xml中的和标签来配置过滤器的相关信息。过滤器的功能有点类似Servlet,但是使用起来更加灵活。在Tomcat中,跟过滤器相关的接口主要有三个:Filter,FilterChain和FilterConfig。 其中Filter接口是web开发中比较常用的一个接口,只要通过实现这个接口,就可以实现自定义的过滤器。Filter接口中定义了三个方法:pu原创 2016-08-21 20:56:06 · 829 阅读 · 0 评论 -
Tomcat源码阅读之初始化Server组件
组件实例化完之后,便进入到了组件的初始化过程,进行initialize操作,注意这里的初始化跟前面的实例化是两个不同的操作。 首先初始化扥是Server组件。public void initialize() throws LifecycleException { lifecycle.fireLifecycleEvent(INIT_EVENT, nul原创 2016-08-08 22:10:19 · 445 阅读 · 0 评论 -
Tomcat源码阅读之Context启动
Tomcat中一个web应用程序对应一个Context容器,Context容器启动的主要逻辑在StandardContext类的start方法中。 start方法中首先会执行init方法,Context容器对应的监听器是ContextConfig,产生的init事件交由ContextConfig的init方法处理: 1、读取conf/context.xml配置文件,并解析它。 2、读取/con原创 2016-08-21 14:10:25 · 766 阅读 · 0 评论 -
Tomcat源码阅读之Cookie和Session
Http协议是一种无状态协的请求/响应协议。服务器处理来自客户端的请求,然后向客户端回送一条响应。Web服务器几乎没有什么信息可以用来判断是哪个客户端发送的请求,也无法记录来访客户端的请求序列。 Cookie的作用就是识别不同的客户端,实现持久会话。Cookie的基本思想就是让浏览器持有一组服务器特有的信息,每次访问服务器时都将这些信息提供给它。 接下来我们看看Cookie是如何工作的。客户端第原创 2016-08-31 14:01:39 · 945 阅读 · 0 评论 -
Tomcat源码阅读之Host启动
Engine容器在启动过程中调用StandardHost类的start方法启动Host容器。 Host容器启动流程和Engine容器大同小异,标准实现类的start方法中注册JMX服务,然后调用父类ContainerBase的start方法启动子容器和产生相应的事件。Engine容器启动过程对事件的处理都较为简单,而Host容器启动过程对于start事件的处理逻辑则比较复杂,那么接下来看看Hos原创 2016-08-17 22:20:42 · 774 阅读 · 0 评论 -
Tomcat源码阅读之实例化Container
Container组件在Tomcat中代表容器组件,其对应的接口名称为Container,所有的Servlet容器都必须要实现这个接口。实例化Container组件,也就是实例化Tomcat的四个Servlet容器,分别是Engine,Host,Context,Wrapper。对应的接口分别是Engine,Host,Context,Wrapper,都继承自Container接口,标准实现类分别为S原创 2016-08-06 21:59:53 · 491 阅读 · 0 评论 -
Tomcat源码阅读之处理请求
web开发中我们常见的请求类型有三种: 1、页面跳转请求。 2、ajax请求。3、请求静态资源,如图片,css文件等。那么我们以最常用的页面跳转请求为例看看Tomcat的处理流程。Tomcat处理请求的逻辑主要在StandardWrapperValve类的invoke方法中。 接收到页面跳转请求之后,Tomcat首先会创建JspServlet实例,但是该实例在Context容器启动的时候就已经被创原创 2016-08-28 21:26:21 · 645 阅读 · 0 评论 -
Tomcat源码阅读之Load过程
tomcat的load过程是从Bootstrap类的load方法开始的。load方法通过反射调用Catalina类的load方法。整个load过程主要有两条主线,一条主线是利用Digester的方式实例化容器组件,另一条主线是根据容器组件等级关系,进行逐级初始化。容器组件等级请查看tomcat组成图。 那么首先阅读Digester实例化容器组件部分的源码。protected Digest原创 2016-08-01 21:07:07 · 491 阅读 · 0 评论 -
Tomcat源码阅读之Engine启动过程
Tomcat的Start过程有两条主线,第一条启动Container组件,另一条启动Connector组件。public void start() throws LifecycleException { 。 。 。 略原创 2016-08-16 21:59:55 · 483 阅读 · 0 评论 -
Tomcat源码阅读之Init过程
Tomcat启动过程相当复杂,总结起来大概分为三个阶段,分别是初始化(Init)过程,加载(load)过程和启动(start)过程。先来分析下初始化的过程。程序的入口是Bootstrap类的main方法。原创 2016-07-07 22:18:00 · 933 阅读 · 0 评论 -
Tomcat源码阅读之初始化连接器组件
Server组件初始化之后,接着就该初始化Service组件。public void initialize() throws LifecycleException { initialized = true; 。 。 。原创 2016-08-14 14:37:03 · 718 阅读 · 0 评论