再转一篇关于tom猫的文章,此文出自http://blog.csdn.net/nanjingjiangbiao/article/details/7711923
1. Tomcat的大结构
tomcat启动之后,将作为一个运行于JVM上的进程存在。
tomcat从层次上,最外围是server本身。
然后server里可以有多个service。每个service可以监听几个不同的端口号。
接下来,每个service里有多个connector。不同的connector监听不同的端口号,使用不同的通信协议。多个connector连接同一个container,container管辖多个webapp。
所有的这一切都定义在server.xml中。
- <!—最高节点 8005端口是shudown shell用端口号-->
- <Server port="8005" shutdown="SHUTDOWN">
- //JNDI全局资源
- <GlobalNamingResources>
- //service,可以有多个
- <Service name="Catalina">
- //connector 我们一般都是用8080端口的http请求
- <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
- //每个connector都可以定义自己的线程池
- <Connector executor="tomcatThreadPool"
- port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" />
- //处理请求的容器
- <Engine defaultHost="localhost" name="Catalina">
- //cluster配置
- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
- //虚拟主机,可以定义多个虚拟主机。比如www.aaa.com,www.bbb.com,全部映射到同一个容器中。(用于实现SSO)
- <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
- //具体的context,用来指明webapp的路径
- <Context docBase="xxx" path="/xxx" reloadable="true" source="xxx"/>
作为tomcat的启动而言,一般来说
① 根据conf/server.xml启动所有必要组建
② 加载conf/web.xml中所有配置
③ 依次加载所有webapp中的web.xml
2. Tomcat中请求的处理
假设来自客户的请求为:http://www.xxx.com/test/index.jsp
a. 请求被发送到该物理机器的默认端口80,被在那里侦听的Coyote HTTP/1.1 Connector获得 (没有考虑apache)
b. Connector封装http请求,并且从线程池中唤醒一个线程,将任务调度给该线程
- 被唤醒线程在Engine中寻找www.xxx.com匹配的虚拟主机
- 被找到的Host获得请求/test/index.jsp,匹配它所拥有的所有Context
- Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
- path="/test"的Context获得请求/index.jsp
- Context开始解析http请求,首先由filter处理,再次交给servlet。现行的Web框架都是由filter拦截,顺便提一下,这也就是为什么很多人说servlet不是线程安全的。
- Context把执行完了之后的HttpServletResponse对象返回给Host
- Host把HttpServletResponse对象返回给Engine
- Engine把HttpServletResponse对象返回给Connector
- Connector把HttpServletResponse对象返回给客户browser
- 线程重回wait状态
相关推荐
tomcat中server配置文件的结构,以及处理一个http请求的全过程
本文将深入探讨 Tomcat 的架构和请求处理流程。 首先,Tomcat 作为一个 HTTP 服务器,其核心功能之一是通过 Socket 进行网络通信,遵循 TCP/IP 协议。Socket 提供了应用程序之间进行低级别网络通信的接口,使得 ...
#### 五、请求处理流程 1. **客户端**发送HTTP请求到Tomcat服务器。 2. **Connector**接收请求,并将其转换成内部请求对象。 3. **Connector**将请求对象传递给对应的`Engine`。 4. `Engine`根据请求中的虚拟主机名...
- **Server**:这是Tomcat结构中的最外层容器,代表一个独立的Tomcat实例。它可以包含一个或多个Service组件。 - **GlobalNamingResources**:提供了一种方式来管理服务器范围内的命名资源(如数据源等)。 ##### 2...
Tomcat 的结构可以分为四个部分:顶层类元素、连接器类元素、容器类元素和嵌套类元素。顶层类元素包括Server元素和Service元素,他们位于整个配置文件的顶层。连接器类元素代表了介于客户与服务之间的通信接口,负责...
在`server.xml`中,还有一些嵌套组件,如`<Logger>`、`<Valve>`、`<Realm>`等,它们提供了更细粒度的控制,如日志记录、请求处理管道和用户认证。 对于Tomcat 5.x版本,与4.x版本不同的是,不推荐在`common`、`...
在结构上,Tomcat的顶层类元素包括`<Server>`和`<Service>`,连接器类元素负责通信接口,而容器类元素则分为`Engine`、`Host`和`Context`,它们分别负责处理请求、特定虚拟主机请求和特定Web应用请求。所有的Tomcat...
7. **Pipeline and Valve**: Tomcat的Pipeline和Valve机制提供了请求处理的链式结构。Valve是处理请求的基本单元,Pipeline则负责串联Valve。通过自定义Valve,可以添加额外的功能,如日志记录、权限检查等。 8. **...
1. **Catalina**:这是Tomcat的核心组件,负责Servlet容器的主要功能,如容器管理、生命周期管理和请求处理。Catalina包含Context、Host和Engine等层次结构,它们分别对应于Web应用、虚拟主机和整个服务器。 2. **...
1. 请求处理流程:当客户端发送请求到达Tomcat时,Coyote接收请求并将其转换为内部表示,然后传递给Catalina进行处理。Catalina通过Context、Wrapper和Servlet三级结构,找到对应的Servlet实例,执行其service方法。...
1. **Catalina**:这是Tomcat的主要组件,负责处理Servlet和JSP的请求。Catalina实现了Servlet和JSP规范,使得开发者可以使用这些标准来构建Web应用程序。 2. **Jasper**:这是Tomcat中的JSP引擎,用于将JSP页面...
- `Pipeline`和`Valve`:请求处理流水线,Valve是处理请求的组件,可以串联起来执行。 3. **Jasper**: Jasper是Tomcat的JSP编译器,它将JSP文件转换为Java源代码,再编译成Servlet。在`catalina`模块中可以找到...
对于初学者来说,了解Tomcat的基本结构和工作原理是非常重要的。通过阅读源码,你可以学习到更多关于Web服务器设计的知识,这将有助于你在Java Web开发中提升技能。如果你在安装或使用过程中遇到任何问题,可以通过...
1. catalina:这是Tomcat的核心模块,负责处理Servlet容器的主要功能,如Servlet和Context的生命周期管理,请求处理等。 2. coyote:Coyote是Tomcat的HTTP/HTTPS连接器,负责接收和发送网络请求。 3. common:这个...
源码分析部分可能包括Tomcat的启动过程、请求处理流程、线程池管理、容器结构实现以及特定Servlet的生命周期管理等方面。通过阅读源码,开发者可以深入理解Tomcat如何处理网络请求,如何调度线程,以及如何管理和...
4. **请求处理流程**:从接收到HTTP请求开始,追踪请求如何被Coyote解析,然后如何传递给Catalina进行处理。 5. **会话管理**:Tomcat提供了多种会话跟踪机制,包括基于cookie和URL重写,理解这些实现有助于优化...
6. **错误处理和日志**:增强了错误报告和日志功能,提供了更详细的运行时信息,有助于问题诊断。 **文件名称列表解析** `apache-tomcat-6.0.35-windows-x64.zip` 这个文件是Apache Tomcat 6.0.35版本的64位...
每个组件在Tomcat的运行机制中扮演着不同的角色,共同协作完成Web应用的请求处理流程。 - **Server**:代表整个Tomcat服务器实例,是最顶层的配置元素,可以包含一个或多个Service元素。 - **Service**:包含一个...
3. **请求处理流程**:当一个HTTP请求到达Tomcat时,Coyote Connector会捕获请求并将其转化为内部格式,然后交给Catalina的Engine进行分发。Engine根据请求的虚拟主机名(Host)和上下文路径(Context)来定位相应的...
如果你想要了解Tomcat的工作原理,或者想要对Tomcat进行定制化修改,你可以查阅这些源码。源代码的结构遵循了Java的模块化设计,如Catalina是核心Servlet容器,Jasper处理JSP,而Common目录下包含了一些通用的类库。...