![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
tomcat
文章平均质量分 81
jack_wjys
哈哈
展开
-
tomcat请求处理分析(一) 启动container实例
1.1.1 启动container实例其主要是进行了生命周期中一系列的操作之后调用StandardEngine中的 startInternal方法,不难看出其调用其父类的startInternal方法, 其父类是ContainerBase.java protected synchronized void startInternal()throws LifecycleExcepti原创 2017-08-18 23:52:14 · 929 阅读 · 0 评论 -
tomcat源码解读三(2) tomcat中JMX的源码分析
在这里我是将tomcat中的jmx给拆分出来进行单独分析,希望通过此种方式能够尽可能的出现更多的问题,以便对其有更多的了解,首先需要声明的是tomcat的JMX是在jsvase原有的基础上做了一些复用,这就必须了解一些JMX的实现过程1.1.1 tomcat中JMX的UML图 1.1.2 启动代码解析 注意:本人是在剥离下来的代码上分析的,跟源代码可能有所出入,但不会太大,主要原创 2017-12-02 21:49:03 · 578 阅读 · 0 评论 -
tomcat源码解读五 Tomcat中Request的生命历程
Request在tomcat中是一个非常核心的的实例,下面以NIO为例来解读一下在各个时期下的状态(其实在Tomcat的几种模式中到了这里之后的处理都是差不多的)1.1 创建coyote/Request 这个request并不是我们最终在servlet中使用的Request,它是tomcat内部处理请求的一种有效方法,其创建过程是在接收到客户请求处理套接字构建Processor具体实现类的构原创 2017-12-02 23:53:06 · 1091 阅读 · 0 评论 -
tomcat源码解读四 tomcat中的processer
Processor是一个接口,针对于不同协议下具有不同的具体实现类,其实现类的具体功能是处理http请求,主要是对协议进行解析,状态处理以及响应。然后起一个中间作用转发到 Adater,下面是其类的关系图 其实现类中我们常用的http协议,所以一般是左边的部分,用红线标注1.1 循环队列protected static class RecycledProcessors<P extends P原创 2017-12-02 23:37:03 · 832 阅读 · 0 评论 -
tomcat源码解读三(1) tomcat的jmx管理
JMX即Java 管理扩展(Java Management Extensions,JMX)用来管理检测 Java 程序(同时 JMX 也在 J2EE 1.4 中被发布)它的作用是可以在程序运行的时候对其进行动态处理,调用相应方法来进行对指定属性值进行修改,在下面我将以代码结合jconsole进行分析(注意:在实际的程序管理过程中并不支持使用jconsole,因为它是一个java的客户端)源代码在下一原创 2017-12-02 19:19:51 · 417 阅读 · 0 评论 -
tomcat源码解读二 tomcat的生命周期
1 生命周期1.1 观察者模型tomcat生命周期采用了观察者模式,所以在介绍生命周期的时候不得不介绍观察者模式观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新观察者模式: 根据UML图可以看出所有被观察的对象Observer的实现类(可以有多个具体实现类)被添加到观察者Subject的实原创 2017-11-13 10:32:29 · 349 阅读 · 0 评论 -
tomcat源码解读一 Digester的解析方式
1 DigesterDigester在tomcat中的作用是对conf下的server.xml文件进行实例化,其是从Catalian这个组件开始,创建Digester实例,再添加对应的规则,然后将其实例化,通过setServer方法,将其实例话的对象作为当前Catalian实例的句柄。这样就实现了对象句柄之间的关联引用,从而实现整个平台的递进启动。 1.1 UML类图原创 2017-11-13 10:26:03 · 1378 阅读 · 0 评论 -
tomcat请求处理分析(六)servlet的处理过程
1.1.1.1 servlet的解析过程servlet的解析分为两步实现,第一个是匹配到对应的Wrapper,第二个是加载对应的servlet并进行数据,这些数据是怎么到界面的,response.getWrite()获取对应的流,然后写入这个流中,这个流中就有上文的outputBuffer。匹配到对应Wrapper 在上文中我们曾经走到过了doRun方法,现在就直接从原创 2017-08-19 00:05:34 · 1015 阅读 · 0 评论 -
tomcat请求处理分析(五) 请求到响应流
1.1.1.1 请求到响应界面流请求处理的过程主要是将所有的东西解析成流,转化成对应的http报文,所以在这里我先不关注servlet因为它最终也就是解析成流里面的数据processKey里面最终执行的是processSocket,它是线从缓存中获取对应的线程池,没有的话就创建一个,然后进行执行protected boolean processSocket(KeyAttachment原创 2017-08-19 00:02:57 · 1524 阅读 · 0 评论 -
tomcat请求处理分析(四) 监听请求轮询处理
1.1.1.1 startInternal方法这个方法是核心的启动方法,目前理解主要做了两件事情,第一件是创建轮询线程,即具体的读取线程,它是进行具体的处理,第二个是创建创建监听请求线程,它是等待请求,然后交给轮训进行处理。public void startInternal()throws Exception { if (!running) { run原创 2017-08-19 00:01:21 · 1369 阅读 · 0 评论 -
tomcat请求处理分析(三) 绑定本地端口监听请求
1.1.1.1 bind方法 注意:这个bind可能在load的过程就已经加载,这里只是验证 NioEndpoint就是使用Java中的NIO技术,来实行对Socket的处理。它主要包含两个部业务处理部分:Poller线程组和Acceptor线程组。1.1.1.1.1 解析过程 首先我们应该知道其bind方法做了一些什么操作,代码如下:public voi原创 2017-08-19 00:00:10 · 1706 阅读 · 0 评论 -
tomcat请求处理分析(二) 启动mapperListener
1.1.1启动mapperListener 这个方法的核心就是注册Host的 public void startInternal()throws LifecycleException{ setState(LifecycleState.STARTING); //获取当前service的container,其实也就是engine @Supp原创 2017-08-18 23:56:38 · 1200 阅读 · 0 评论 -
tomcat源码解读六 tomcat中的session生命历程
session的作用是在一次会话中(从打开浏览器到关闭浏览器同当前服务器的交流)当客户端第一次请求session对象时候,服务器会为客户端创建一个session,并将通过特殊算法算出一个session的ID,用来标识该session对象,当浏览器下次(session继续有效时)请求别的资源的时候,浏览器会sessionID放置到请求头中,服务器接收到请求后就得到该请求的sessionID,服务器根原创 2017-12-02 23:59:13 · 648 阅读 · 0 评论