Tomcat最本质就是一个能运行JSP/Servlet的Web服务器 ,如果真正的想了解tomcat它的运转机制,最典型的应用就是用户通过浏览器访问服务器,Tomcat接收到请求后转发给Servlet,由Servlet处理完成之后,把结果返回给客户端。今天分析tomcat一次request与response的过程。
最简单的方式是,Hello World! 进入debug模式。Tomcat处理请求的核心过程有以下几点:
(1)启动的时候启动预支持协议的Endpoint,Endpoint会起专门的线程监听相应协议的请求,默认的情况下,会启动JIoEndpoint,JIoEndpoint基于Java ServerSocket接收Http的请求。
(2)ServerSocket接收到客户端请求的Socket后,一路包装,并一路从Host一直传递到Wrapper,再请求到相应的Servlet。
通过之前讲的tomcat架构可知道当Tomcat启动的时候会启动Connector,此时Connector会通过ProtocolHandler把Endpoint启动起来。默认情况下,Tomcat会启动两种Connector,分别是Http协议和AJP协议的,依次对应Http11Protocol和AjpProtocol,两者都是启动JIoEndpoint。下面看看JIoEndpoint的start方法:
public void start() throws Exception {
// Initialize socket if not done before
if (!initialized) {
init();
}