Coder 爱翻译 How Tomcat Works 第三章 第二部分
The Connector(连接器)
HttpConnector类代表了一个负责创建一个等待HTTP请求的服务器socket连接器。
HttpConnector类实现了java.lang.Runnable接口,所以它可以当做自己的一个独立的线程。当你启动这个应用程序,一个HttpConnector的实例就被创建,然后它执行它的run方法。
run方法包含一个while循环来处理下面的事情:
?等待HTTP请求
?为每一个请求创建一个HttpProcessor实例
?调用这个HttpProcessor的process方法
你可以看到,这HttpConnector类和之前的HttpServer1类很相像。除了当从java.net.ServerSocket的accept方法获得了一个socket后,一个HttpProcessor实例被创建,和调用process方法,传递socket。
注意:HttpConnector类的另外一个方法getScheme是返回scheme(HTTP)。
HttpProcessor类的process方法接收一个从HTTP请求来的socket。对于每一个来访的HTTP请求,做了一下事情:
?创建一个HttpRequest对象。
?创建一个HttpResponse对象
?解析HTTP请求的第一行、头信息和填充HttpRequest对象。
?传递HttpRequest和HttpResponse对象给ServletProcessor或StaticResourceProcessor。ServletProcessor调用被请求的servlet的service方法。StaticResourceProcessor发送静态资源内容。
Process方法在获取了socket的输入流和输出流后开始执行。注意:在这个方法我们使用继承自java.io.InputStream的SocketInputStream类。
ParseRequest方法在SocketInputStream类的readRequestLine方法调用后执行。