首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

tomcat7 源码学习札记 1

2013-02-27 
tomcat7 源码学习笔记 1tomcat7启动后,从启动,到对端口完成监听整个过程,如图:其中Bootstrap为tomcat启动

tomcat7 源码学习笔记 1
tomcat7启动后,从启动,到对端口完成监听整个过程,如图:



其中Bootstrap为tomcat启动类,
调用顺序:

Bootstrap.start() --> 反射调用 Catalina.start() -->  StandardServer.start() -->

StandardService.start() --> Connector.start()(启动两个,一个为 HTTP:一个为 AJP)

--> Http11Protocol.start() --> JIoEndpoint.start()

以上类之间的关联方式:

1.在Bootstrap的init()方法中:是采用反射的方式建立对 Catalina 的引用关系:
            


   所以 StandardServer对Connector的引用关系也完成了初始化。
4.Connector中对Http11Protocol的实例化是这样进行的,在server.xml中配置了protocol="HTTP/1.1",然后在代码中有如下创建过程:
   
 Class<?> clazz = Class.forName(protocolHandlerClassName);            this.protocolHandler = (ProtocolHandler) clazz.newInstance();


5.Http11Protocol 对 JIoEndpoint 实例化在构造函数中直接新型,这也是,此条路径下来,唯一一个面向实例的,没有再面向接口的关联方法

public Http11Protocol() {
        endpoint = new JIoEndpoint();
        cHandler = new Http11ConnectionHandler(this);
        ((JIoEndpoint) endpoint).setHandler(cHandler);
        setSoLinger(Constants.DEFAULT_CONNECTION_LINGER);
        setSoTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT);
        setTcpNoDelay(Constants.DEFAULT_TCP_NO_DELAY);
    }

这样看下来,在第3步中,对server.xml的解析,确实做的很好,关于这块应该再写一篇。

热点排行