Tomcat如何处理多个请求

时间:2013-01-28 16:59:32

标签: java-ee tomcat servlets containers

我知道创建Web应用程序,但我有一个基本的疑问。

我很抱歉提出非常愚蠢的问题但是想清除我的怀疑。

Tomcat容器如何处理请求,我的意思是说当我发送 home.jsp 页面的请求时,我只得到 home.jsp 页面的响应而不是一个 register.jsp 页面,它同时可能是世界其他角落请求的其他人提出的请求。

例如:

Client A --------request(a.jsp)----------> Tomcat (check request received for a.jsp and give proper a.jsp response to client A)

Client B --------request(b.jsp)----------> Tomcat (check request received for b.jsp and give proper b.jsp response to client B)

在这种情况下,Tomcat如何在请求者和对正确请求者的响应之间不会混淆。

内部如何运作。

解释这一点的一些链接也会有所帮助。

感谢。

1 个答案:

答案 0 :(得分:10)

你基本上是在询问TCP的工作原理。这是一个相当大的主题。基本上,它可以按原样恢复:Tomcat侦听给定TCP端口上的连接(默认为8080)。每次某些浏览器打开与Tomcat的连接时,此连接都由远程主机的IP地址以及此主机用于连接到Tomcat的TCP端口标识。

浏览器通过此连接发送HTTP请求,当请求进入Tomcat时,Tomcat会从其线程池中分配一个线程来处理请求。生成并发送响应后,线程将返回池中,准备从任何客户端发出另一个请求。

TCP堆栈本身不是由Tomcat实现的,而是由OS实现的。 Java运行时提供java.io.Socket和其他相关类,它们使用操作系统提供的底层TCP IP堆栈。 Tomcat依赖于java.net.Socket和其他相关的类。