Tomcat加载类和资源的顺序为:
- /Web-INF/classes
- /Web-INF/lib/*.jar
- Bootstrap
- System
- $CATALINA_HOME/common/classes
- $CATALINA_HOME/common/endores/*.jar
- $CATALINA_HOME/common/lib/*.jar
- $CATALINA_HOME/shared/classes
- $CATALINA_HOME/shared/lib/*.jar
Tomcat核心组件Connecter和Container
1.Connecter
1.1Connector的功能
- 一个Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理Engine(Container中的一部分),从Engine出获得响应并返回客户。
- Tomcat中有两个经典的Connector,一个直接侦听来自Browser的HTTP请求,另外一个来自其他的WebServer请求。Cotote HTTP/1.1 Connector在端口8080处侦听来自客户Browser的HTTP请求,Coyote JK2 Connector在端口8009处侦听其他Web Server的Servlet/JSP请求。
- Connector 最重要的功能就是接收连接请求然后分配线程让 Container 来处理这个请求,所以这必然是多线程的,多线程的处理Connector 设计的核心。
1.2Connector的protocol
- protocol负责接收HTTP请求,Tomcat中支持两种协议的连接器:HTTP/1.1与AJP/1.3,默认端口8080,该两种协议有三种不同的实现方式
:JIO(java.io—>BIO阻塞队列)、APR、NIO - protocol配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
-
BIO实现的Connecto