Tomcat服务器配置参考
Host容器 |
|
概述 |
Host元素代表一个虚拟主机,虚拟主机将服务器的网络名(比如www.mycompany.com)和运行Catalinade的某个特定服务器联系起来。为了生效,网络名称必须在管理你所在的Internet域的DNS服务器进行登记---请联系你的网络管理员。
在许多情况下,系统管理员可能希望为同一个虚拟主机或应用关联多个网络名称(比如www.mycompany.com和company.com)。这可以利用下面讨论的Host Name Alias特征来完成。
在Engine元素中可以嵌套一个或多个Host元素。在Host元素中可以嵌套context元素。在与每个Engine相关联的所有Host中,必须有一个Host的名称与Engine的defaultHost属性匹配。
以下的描述使用变量$CATALINA_HOME来指Tomcat 5安装的目录。大多数的相对路径都是以该目录为基准。但是,通过设置CATALINA_BASE目录,可以运行多个Tomcat 5实例,这时你应该使用$CATALINA_BASE来作为目录基准,而不是使用$CATALINA_HOME。 |
属性 |
公共属性 |
所有Host的实现必须支持如下属性:
属性 |
描述 |
appBase |
虚拟主机的Applicaton Base目录。这是在该虚拟主机上发布web应用的目录路径。你可以指定绝对路径,或者使用相对于$CATALINA_HOME 的路径。有关web应用的自动识别和发布的更多信息,请参考应用自动发布。 |
autoDeploy |
这个标志表示,在Tomcat运行的时候,放到appBase目录下的新的web应用是否自动发布。缺省为true。这方面的更多信息参考应用自动发布 |
backgroundProcessorDelay |
这个 值代表在该host及其子容器(包括所有的wrappers)上调用backgroundProcess方法的延时,以秒为单位。如果延时值非负,子容器不会被调用,这意味着子容器使用自己的处理线程。如果该值为正,会创建一个新的线程。在等待指定的时间以后,该线程在Host及其子容器上调用backgroundProcess方法。Host使用后台处理进行与web应用实时发布有关的操作。如果没有指定,缺省值是-1,说明host依赖其所属的Engine的后台处理。
|
className |
实现的Java类名。该类必须实现org.apache.catalina.Host接口。如果没有指定,使用标准实现(在下面定义) |
deployOnStartup |
这个标志表明这个host的web应用是否由host configurator 自动发布。缺省为true。这方面的更多信息参考自动应用发布。 |
name |
虚拟主机的网络名称,也就是在DNS服务器上注册的名称。嵌套在Engine的所有Host中,必须有一个Host的名字与Engine的defaultHost属性相同。如果想为同一个虚拟主机指定多个网络名称,参考主机名别名。
| |
标准实现 |
Host的标准实现是org.apache.catalina.core.StandardHost。它还支持如下的附加属性
属性 |
描述 |
debug |
与Engine相关联的Logger的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省值为0。 |
deployXML |
如果不想使用Context XML配置文件来发布web应用,设为false。同时也失去了利用manager应用程序安装web应用或者“.war”文件的能力(这些web应用或.war文件不在Host的配置基准目录$CATALINA_HOME/conf/[engine_name]/[host_name] 下面)
web应用使用catalina的安全许可发布,如果需要让不可信的用户管理web应用,这个值可以设为false。缺省为true。 |
errorReportValveClass |
Host使用的错误报告valve的Java类名。这个valve的责任是输出错误报告。设置这个值可以定制Tomcat产生的错误页面的格式。这个类必须实现org.apache.catalina.Valve接口。如果没有指定,使用缺省值
og.apache.catalina.valvees.ErrorReportValve. |
unpackWARs |
如果希望将位于appBase目录下的WAR文件解压缩成对应的目录结构,设为true。如果希望直接从WAR文件运行web应用,设为false。更多信息参考应用自动发布。 |
workDir |
Host的web应用使用的临时目录的路径。每个应用都有自己的子目录,用于临时的读写。如果在Context中设置了workDir属性,它将会覆盖Host的workDir属性。如Servlet Specification中所述,通过servlet context的属性javax.servlet.context.tempdir,这个目录可以被servlet使用。如果没有指定,使用$CATALINA_HOME/work 下面的合适的目录。 | | |
嵌套组件 |
可以在Host元素中嵌套一个或者多个Context元素,每个Context元素代表这个虚拟主机下的一个不同的web应用。同时,你可以嵌套一个DefaultContext元素,用来定义后续发布的web应用的缺省值
可以在Host元素中选择嵌套一个DefaultContext元素,用来定义自动发布的web应用的缺省特性。
下列元素可以嵌套在Host元素中,但至多只能嵌套一个实例:
- Logger - 配置一个logger,用来接收和处理Host的所有日志消息,以及这个Host的所有Context的日志消息(除非被低一级的Logger配置覆盖)
- Realm -配置一个realm,Realm的用户数据库以及用户角色被这个Host的所有Context共享(除非被低一级的Realm配置覆盖)
|
专有特征 |
应用自动发布 |
如果使用标准的Host实现,当Catalina第一次启动时,如果deployOnStartup属性为true,tomcat会自动采取如下的步骤:
- 假定
$CATALINA_HOME/conf/[engine_name]/[host_name] 目录中的任何XML文件都包含一个Context元素(以及它的相关的子元素),通常情况下,这个<Context>的docBase属性指向一个web应用目录的绝对路径,或者是WAR文件的绝对路径。
- 如果WAR文件对应的目录不存在,则这个WAR文件会被自动展开,除非unpackWARs属性设为false。在重新发布更新后的WAR文件时,重新启动Tomcat之前一定要删除展开后的目录,这样更新后的WAR文件才会被重新展开(如果使能了auto deployer,它会自动完成这项工作)
- application base目录下的任何子目录,如果包含/WEB-INF/web.xml文件,Tomcat认为这个一个展开后的web应用,会为这个目录自动产生一个Context元素,即使这个目录没有在conf/server.xml文件中出现。产生的Context会使用DefaultContext中的属性来配置。自动产生的Context的context路径是“/”后面跟上目录名,除非目录名是ROOT,这种情况下context路径是空字符串(“”);
除了启动时候的自动发布以外,在Tomcat运行的时候,当新的XML 配置文件,WAR文件或者子目录(包含新的web应用)放到appBase目录下,或者当XML配置文件放到$CATALINA_HOME/conf/[engine_name]/[host_name]目录 )的时候,该web应用被自动发布。auto deployer也负责跟踪web应用的如下变化:
- 如果更新了WEB-INF/web.xml文件,会触发web应用的重载;
- 如果WAR文件被更新,并且WAR文件已经展开,首先删除展开的web应用,然后发布更新的WAR文件;
- 如果XML配置文件被更新,首先删除该应用(但是不删除任何展开以后的目录),然后发布相关的web应用
|
主机名别名 |
在许多服务器环境中,多个网络名称可能指向同一个IP地址(比如,www.mycompany.com和company.com都指向192.168.1.1)。正常情况下,每个网络名称应该在conf/server.xml中对应一个Host元素,每个Host元素有自己的一套web应用。
但是,有些情况下,可能希望两个或者更多网络名称解析到同一个虚拟主机上,运行相同的一套web应用。这种情况的典型用途是公司网站。用户可以使用www.mycompany.com和company.com访问同样的内容和应用。
通过在Host元素中嵌套一个或者多个Alias元素,可以完成上述功能。
|
|
|
|
<Host name="www.mycompany.com" ...>
...
<Alias>mycompany.com</Alias>
...
</Host>
|
|
|
|
|
为了使这个策略生效,所有的网络名称必须在DNS服务器登记,指向运行Catalina实例的同一台计算机。
|
生命期Listeners |
如果一个Java对象需要知道Context什么时候启动,什么时候停止,可以在这个对象中嵌套一个Listener元素。该Listener元素必须实现了org.apache.catalina.LifecycleListener接口,在发生对应的生命期事件的时候,通知该Listener。可以按照如下的格式配置这样的Listener:
|
|
posted on 2006-02-16 17:05
java之海 阅读(3035)
评论(0) 编辑 收藏