tomcat 7 doc笔记
中英互译:terminology:术语。term:词。
?
context指一个web application。
?
tomcat的主配置文件是/conf/server.xml。所有配置文件只在tomcat启动时启动,若要使启动后的配置文件生效,需要重启tomcat。
?
在运行tomcat前,请确保系统已经配置好JAVA_HOME和CATALINA_HOME变量。
?
tomcat7运行在jdk6下。
?
全局(所有) context共享的lib可以放到$Catalina_home/lib下,例如jdbc驱动。
?
$context/META-INF/context.xml文件可以用来定义tomcat的一些特殊配置。
?
通过复制app文件夹或app.war到$Catalina_Home/webapps/下的方法,可以让tomcat自动加载该app。该app的context path为app的文件名。
?
通过$catalina_home/webapps/Manager应用可以在运行时动态布置app。
?
context代表一个app。早期的tomcat把context的配置放在$catalina_home/conf/server.xml下。虽然现在也可以这样,但不建议。context应该在以的其中一个地方配置$catalina_home/conf/[enginename]/[hostname]/context.xml。$catalina_home/webapps/[webappname]/META-INF/context.xml。
?
如果不为应用配置context.xml文件,tomcat会使用默认的值配置这个context。
?
默认情况下,tomcat启动时会先启动有context.xml的应用,然后再布置没有context.xml文件的应用,最后会解压.war文件(旧的被解压的.war目录会被删除)。
?
如果Host节点设置了autoDeploy属性为true,即tomcat后台线程会动态检测应用的改变实现动态布置。移入新的war文件、加入新的app、更改/web-inf/web.xml文件、更改对应和context.xml文件都会使tomcat重新加载该应用。
?
/manager模块可以实现应用的动态部署、删除、重新加载、列举在线应用等功能。另外也可以查看session的状况。
?
在/catalina_home/conf/tomcat-users.xml中可以配置/manager模块的用户。
?
?
realm是一个放置用户名和密码的集合。你可以实现自已的jdbc/datasource/等类形的realm。默认采用/catalina_home/conf/tomcat-users.xml中的realm。realm可以设置在engine/host/context下,在不同的地方设置,作用域也不同。
?
tomcat7的classloader各个app拥用自已的classloader,上一层是common,然后是system、bootstrap。
?
bootstrap装载的是jre及jre/lib/ext下的类。system装载的是$catalina_home/bin/bootstrap.jar和juli.jar里的类。common装载的是$catalina_home/lib下的类。app装载的是web/lib和class下的类。
?
类加载体系加载类的顺序为jvm/systemclass loader、web-inf/classes、web-inf/lib/*.jar、$catalina_home/lib。
?
有一个默认的servlet,配置文件在$catalina_base/conf/web.xml下。作用是列举目录。这个配置文件还为一些文件配置了doctype及欢仰文件。
?
在server.xml的engine节点下可以配置多个不同的virtual host,不同的host可以设置不同的appBase(webapps目录)。需要注意的是context节点的docbase不能为任何一个appbase相同。而ROOT的文件夹名应用为根应用。
?
tomcat7的架构。最外层的是Server。Server代表整个容器。下一层是Service,Service是Server下的一个中间组件。再下一层是Engine。Engine是处理请求与响应的管道。再下一层是Host,一个Engine可以有多个Host,而一个Host可以有一个网洛名及多个别名。再下一层是Context。一个Host下可以有多个Context。每个Context代表一个应用。Connector在Service之下,与Engine并排。Connector处理与用户的交互,它包含http connector/ajp connector等。简单一点就是:Server-Service-(Conector)/(Engine-Host-Context)。
?
$Catalina_home/conf/server.xml的配置说明如下:
?
Server节点中的address属性用于设置可发出关闭命令的地址,默认为localhost。port为接收关闭命令的端口,设置为-1可以关闭该功能,同时让shutdown.bat失效。
?
Service下可以配置executor节点,其中属性maxThreads用于设置最大线程池的大小,默认为200,minSpareThreads用于设置最小闲置线程,默认为25。maxIdleTime用于设置线程被关闭前的时间,默认为一分钟。Service下配置executor节点是全局共享下。另外也可以为每个connector配置单独的线程词。
?
http connector中的maxPostSize用于设置最大post表单url大小,默认为2m,port用于设置请求端口,protocol用于设置协议,URIEncoding用于设置URL编码,,默认为iso-8859-1。acceptCount用于设置最大的请求队列,默认为100,超出该出求队列的请求将会被拒绝。address用于在一台机多个IP情况下只处理一部份IP的情况。默认情况下处理所有的IP。disableUploadTimeout用于设置是否在上传文件时延长超时,默认为ture,executor用于设置该connector所有的executo,如果设置了,即executor的参数将复盖该connector的参数。keepalivetimeout用于设置关闭一个connection前等待另一个请求的时间。maxHttpHeaderSize用于设置最大的http报头,默认为8k,maxThreads用于设置最大的链接线程数。
?
context可以定义在$home/conf/server.xml中,但不建议这样做。另外可以定义在$home/conf/Context.xml中。也可以定义在$home/conf/[enginename]/[hostname]/context.xml或者$home/conf/[enginename]/[hostname]/[contextname].xml
?
Context中的一些重要属性:docBase用行设置应用的目录。path用于设置上下文路径。reloadable用于设置是否在运行时监测class/lib目录的改变并重新另载。
?
可以在Context元素下增加一个<Value className/prefix/suffix/pattern来设置日志。
?
在web.xml中设置<context-param><param-name><param-value>和在context元素中设置<Parameter name是一样的效果。
?
可以在context元素中增加元素<value className/allow/deny来限制IP。
?
Engine节点中也可以设置Value元素限制IP。
?
Host节点的元素意义如下:appBase用于设置默认的webapp目录,放到该目录下的所有app都会被加载。xmlBase用于设置加载context.xml文件的路径。autoDeploy用于设置在运行时是否自动检查有新的应用被布置。deployOnStartup用于设置是否在tomcat启动时自动加载应用。name用于设置host的域名。
?
在Host节点下也可以增加Value节点用于设置log的位置和命名。
?
在host下可以设置多个<alias节点,用于设置多个域名。
?
Host同样可以通过Value设置过虑IP。
?
?