tomcat(二)--tomcat结构
Tomcat结构及组件介绍
上面的层次结构在server.xml中有体现
<Server> <Service> <Connector> <Engine> <Host> <Context> </Context> </Host> </Engine> </Connector> </Service> </Server>
Server : 顶层组件,表示整个Tomcat服务器。运行在jvm的一个tomcat实例。
Service: 容器类组件,包含一个或多个Connector,每个<Service>元素只能包含一个<Engine>元素. 提供<Connector>到<Engine>的绑定。
Connector:连接器,代表外部客户之间的接口,将在一个指定的接口上侦听客户请求,并将获得的请求交给<Engine>进行处理,然后把处理结果返回给客户,一个连接器只能连接一个<Engine>。
Engine : 引擎,每个<Service>元素只能包含一个<Engine>元素,处理<Service>中的所有客户请求,通过<Connectors>接收请求,把这个请求匹配到某个<Host>上进行处理,如果没有找到合适的<Host>来进行处理,则把这个请求交给一个默认虚拟主机处理。 <Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求。
Host : 虚拟主机,一个<Engine>元素中可以包含多个<Host>元素,一个 Host 在 Engine 中代表一个虚拟主机,处理一个特定主机的请求。
Context : Web应用,每个虚拟主机都可以配置一个到多个Web应用,每个Web应用对应一个<Context>,<Host>获得的请求最终匹配到某个<Context>上,由它进行处理。
Tomcat 还有很多其他的组件,如valve(可以实现IP访问控制)、logger(用于除context外的任意容器)、realm(关联认证库)等
组件常用参数
Server
port :指定Tomcat服务器监听shutdown命令的端口.终止Tomcat服务运行时,必须在Tomcat服务器所在的机器上发出Shutdown命令.只监听本地地址,该属性是必须设定的.
shutdown :指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性是必须设定的.
Connector
address:指定连接器监听的地址,默认为所有地址,即0.0.0.0
maxThreads:支持的最大并发连接数,默认为200
port:监听的端口,默认为0
protocol:连接器使用的协议,默认为HTTP/1.1,定义AJP协议时通常为AJP/1.3;
redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口
connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟
enableLookups:是否通过request.getRemoteHost()进行DNS查询以获取客户端的主机名;默认为true
acceptCount:设置等待队列的最大长度;通常在tomcat所有处理线程均处于繁忙状态时,新发来的请求将被放置于等待队列中
Engine
defaultHost:其定义一个接收所有发往非明确虚拟主机请求的host,请求报文的Host首部匹配<HOST>的名字。
Host
appBase:指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录. 如果此项没有设定,默认值为<CATALINA_HOME>/webapps
autoDeploy:如果此项设为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用.;默认为true
unpackWars:如果此项设为true,表示将把Web应用的WAR文件先展开为开放目录结构后再运行.如果设为false,将直接运行WAR文件;默认为true
name :定义虚拟主机的名字
Context
path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径;如果context定义在一个单独的xml文件中,此属性不需要定义。
docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;切记,docBase的路径名不能与相应的Host中appBase中定义的路径名有包含关系,比如,如果appBase为deploy,而docBase绝不能为deploy-bbs类的名字。
reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false。