一、Tomcat 各组件及关系
* Server 和 Service
* Connector 连接器
* HTTP 1.1
* SSL https
* AJP(Apache JServ Protocol) apache 私有协议,用于apache 反向代理Tomcat
* Container
* Engine 引擎 catalina
* Host 虚拟机 基于域名 分发请求
* Context 隔离各个WEB应用 每个Context的 ClassLoader都是独立
* Component
* Manager (管理器)
* logger (日志管理)
* loader (载入器)
* pipeline (管道)
* valve (管道中的阀)
二、Tomcat server.xml 配置详解

server
root元素:
server 的顶级配置
主要属性 :
port:执行关闭命令的端口号
shutdown:关闭命令
#基于telnet 执行SHUTDOWN 命令即可关闭(必须大写)
telent 127.0.0.1 8005
SHUTDOWN
service
服务:将多个connector 与一个Engine组合成一个服务,可以配置多个服务。
Connector
连接器:用于接收 指定协议下的连接 并指定给唯一的Engine 进行处理。
主要属性:
* protocol 监听的协议,默认是http/1.1
* port 指定服务器端要创建的端口号
* minThread 服务器启动时创建的处理请求的线程数
* maxThread 最大可以创建的处理请求的线程数
* enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
* redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
* acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
* connectionTimeout 指定超时的时间数(以毫秒为单位)
* SSLEnabled 是否开启 sll 验证,在Https 访问时需要开启。
Engine
引擎:用于处理连接的执行器,默认的引擎是catalina。一个service中只能配置一个Engine。
主要属性:name 引擎名称 defaultHost 默认host
Host
虚拟机:基于域名匹配至指定虚拟机。类似于nginx当中的server,默认的虚拟机是localhost.
主要属性:
<Host name="www.test.com" appBase="/usr/www/test" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.test.com.access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
Context
应用上下文:一个host 下可以配置多个Context ,每个Context 都有其独立的classPath。相互隔离,以免造成ClassPath 冲突。
主要属性:<Context docBase="hello" path="/h" reloadable="true"/>
三、Tomcat 支持四种线程模型
BIO同步阻塞模型 (6.0) 一个线程对应一个请求 protocol=“org.apache.coyote.http11.Http11Protocol“
NIO同步非阻塞模型(7.0) 一个线程对应多个请求 protocol=”org.apache.coyote.http11.Http11NioProtocol“
AIO异步非阻塞模型 (8.0) 一个线程对应多个请求 protocol=”org.apache.coyote.http11.Http11Nio2Protocol“
APR模型 不常用 protocol=”org.apache.coyote.http11.Http11AprProtocol“
四、Tomcat connector 并发参数解读

补充:检查配置文件是否有误 linux: ./bin/catalina.sh configtest window: catalina.bat configtest

1276



被折叠的 条评论
为什么被折叠?



