读书人

tomcat源码分析系列之起步-暗度陈仓

发布时间: 2012-07-04 19:33:55 作者: rapoo

tomcat源码分析系列之启动---暗度陈仓

??? 前面我们分析了tomcat是如何启动的,但我们好像并没有看到我们期待发生的诸如在什么地方启动了服务,什么地方启动了监听,好像只是做了些加载资源、设置环境变量等鸡毛蒜皮的事,这到底是怎么回事?我们回顾一下前面提到的一个函数:解析server.xml的函数

??? 在前面我们并没有详细去看这个函数,只是知道它解析了server.xml文件,现在我们深入这个方法看一下。这个方法里反复调用了下面三个方法:

?这个方法就是定义了一个创建对象的规则:匹配的规则(遇到server.xml里什么样的表达式),默认要实例化的类名,默认的一个属性名(xml配置属性)。就是说如果server.xml里遇到跟规则相匹配的项,如果没有设定指定attributeName属性的值,则使用这里设置的默认的类。

?定义了一个调用setter方法的规则:把这个值设置给谁

?这个方法很关键,第一个参数依旧是匹配的规则,第二个参数是要调用父元素的方法名,第三个参数是方法需要的参数类型。看到这个我们或许明白了点。我们再回头看下前面提到的方法:

LifecycleBase最后又调用个实现类里的initInternal和startInternal方法,所以我们只需要看具体类里的这两个方法就可以了。

StandardService里的initInternal

?从上面的代码我们可以看出,父容器在启动时会把下面所有的组件都启动起来。Connector在启动的时候调用了protocolHandler.start();这个protocolHandler会是什么呢?它是Http11Protocol的实例,这个类就是http1.1 协议的一个实现类,就是真正解析、处理请求的地方。接下来我们会去分析一下这个类以及由它引申出来的内容。

?

读书人网 >开源软件

热点推荐