`
- 浏览:
115619 次
- 性别:
- 来自:
苏州
-
1)org.apache.catalina.connector.http.HttpConnector
实现了org.apache.catalina.Connector接口,java.lang.Runnable接口(确保在自己的线程中运行)和org.apache.catalina.Lifecycle接口。Lifecycle接口用于维护每个实现了该接口的tomcat的组件的生命周期。
HttpConnector的initialize方法会调用一个私有方法open,返回一个java.net.ServerSocket实例,赋值给成员变量serverSocket。这里并没有直接调用ServerSocket的构造方法,而是用过open方法调用ServerSocket的一个工厂方法来实现。
2)org.apache.catalina.Connector接口
该接口有很多方法,最重要的是getContainer,setContainer,createRequest和createResponse。
3)HttpProcessor
在tomcat的默认connector中,使用了一个HttpProcessor的对象池, 其中的每个对象都在其自己的线程中使用。因此,connector可同时处理多个http请求。
HttpConnector维护了一个HttpProcessor的对象池,避免了频繁的创建HttpProcessor对象。该对象池使用java.io.Stack实现。
在HttpConnector中,创建的HttpProcessor数目由两个变量决定:minProcessors和maxProcessors。
在tomcat的默认连接器中,HttpProcessor实现了java.lang.Runnable接口,每个HttpProcessor的实例都可以在其自己的线程中运行,成为“处理器线程”(“processor thread”)。HttpConnector创建每个HttpProcessor实例时,都会调用其start方法,启动其处理器线程。
4)HttpConnector类实现了java.lang.Runnable接口,这样它可以专注于自己的线程。启动应用程序时,会创建一个HttpConnector对象,其run方法会被调用。其run方法中是一个循环体,执行以下三件事:
等待http请求;
为每个请求创建一个HttpPorcessor对象;
调用HttpProcessor对象的process方法。
HttpProcessor类的process方法从http请求中获取socket。对每个http请求,它要做一下三件事:
创建一个HttpRequest对象和一个HttpResponse对象;
处理请求行(request line)和请求头(request headers),填充HttpRequest对象;
将HttpRequest对象和HttpResponse对象传给ServletProcessor或StaticResourceProcessor的process方法。
5)HttpProcessor类的process方法
process方法做了三件事,解析连接,解析请求,解析请求头
parseConnection,parseRequest和parseHeaders
HttpProcessor对象负责创建HttpRequest对象,并填充它的成员变量。在其parse方法中,将请求行(request line)和请求头(request header)信息填充到HttpRequest对象中,但并不会填充请求体(request body)和查询字符串(query string)。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
【标题】"Tomcat5.0+6.0" 指的是Apache Tomcat服务器的两个不同版本,分别是5.0版和6.0版。Apache Tomcat是一款开源的...学习和了解这两个版本有助于深入理解Tomcat的历史演进,以及如何根据项目需求选择合适的版本。
Java Web开发是软件行业中一个广泛讨论的话题,涵盖了诸如Servlet、JSP、JDBC、MVC框架、企业级组件以及各种工具和技术。...通过学习和参考这些笔记,可以提升Java Web开发技能,更好地应对实际项目中的挑战。
3. Tomcat配置:Tomcat是常用的Java应用服务器,配置过程可能会遇到问题,包括设置classpath、创建Web应用等。正确配置是确保服务器能够正确运行Servlet和JSP的关键。 4. 查询用户名和密码的URL:在Android应用中,...
Liferay提供了一个名为Tomcat的内置服务器,可以通过Liferay SDK轻松启动。SDK包含了运行和构建Liferay所需的全部配置。下载Liferay SDK后,按照官方文档的指导配置工作区和服务器设置。 在IDE中导入Liferay ...
标题中的“Flex整合J2EE开发小记+源码下载”揭示了本文的主题,即如何将Adobe Flex技术与Java EE(J2EE)平台相结合,进行Web应用的开发。Flex是一种用于构建富互联网应用程序(RIA)的开源框架,它允许开发者创建...