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配置覆盖)
专有特征
访问日志
正常情况下,运行web服务器会生成访问日志。访问日志以标准格式为每个请求输出一行信息。Catalina包含一个可选的Valve实现,可以用标准格式生成日志,还可以使用任意定制的格式。
通过在Engine,Host或者Context中嵌套一个Valve元素,Catalina会为该容器处理的所有请求创建访问日志,如下所示:
<Host name="localhost" ...>
...
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="localhost_access_log." suffix=".txt"
pattern="common"/>
...
</Host>
参考Access Log Valve,以获得更多配置属性的信息;
应用自动发布
如果使用标准的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:
<Host name="localhost" ...>
...
<Listener className="com.mycompany.mypackage.MyListener" ... >
...
</Host>
注意,一个listener可以具有任意多的附加属性。属性名与JavaBean的属性名相对应,使用标准的属性命名方法。
请求过滤器
对每个发送到Engine,Host或者Context的请求,可以要求Catalina检查IP地址或主机名称。Catalina使用一系列配置好的“接受”或者“拒绝”过滤器对客户端的地址或者主机名进行检查,过滤器是按照正则表达式语法定义的,由Jakarta Regexp正则表达式库支持。不被接受的请求会返回一个HTTP“Forbidden”错误。下面是过滤器的定义。
<Host name="localhost" ...>
...
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
...
</Host>
如果想知道过滤器支持的更多选项的信息,参考Remote Address Filter和Remote Host Filter
单次登录(Single Sign On)
在许多环境尤其是门户环境下,对特定虚拟主机上的一套web应用,只希望对用户进行一次认证。这可以在Host元素中嵌套如下的元素完成:
<Host name="localhost" ...>
...
<Valve className="org.apache.catalina.authenticator.SingleSignOn"
debug="0"/>
...
</Host>
单次登录根据如下规则运作:
这个虚拟主机的所有web应用必须共享同一个Realm。在实际情况中,这意味着你可以在这个Host元素中嵌套Realm元素(或者是Engine元素),但不能在web应用对应的Context中嵌套Realm元素
如果用户只访问这个虚拟主机上任意web应用的没有加保护的资源,他们不会被要求认证;
一旦用户访问这个虚拟主机下的任意web应用的保护资源,用户会被要求认证。使用正在访问的web应用的login方法;
一旦认证通过,与这个用户相关联的角色决定了它对所有的web应用的访问控制权限;而不需要对每个应用单独认证;
一旦用户从某个web应用注销(比如,如果使用了基于表单的login,对应的session过期或者无效),用户在所有web应用的session都会失效;任何后续的对保护资源的访问会要求对用户重新认证;
单次登录特征使用HTTP cookies传输令牌,将每个请求和用户身份联系起来,因此客户端必须支持cookies;
用户Web应用
许多web服务器会自动将以"~"和用户名开始的URI映射到用户主目录下的某个目录(通常为public_html)。在Catalina中,通过使用特殊的Listener元素,可以完成上述功能
在利用/etc/password来标识有效用户的Unix系统下使用如下配置:
<Host name="localhost" ...>
...
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html"
userClass="org.apache.catalina.startup.PasswdUserDatabase"/>
...
</Host>
在不使用/etc/password的服务器上,可以要求Catalina将指定的基准目录下的所有目录(比如c:\homes)看成是用户主目录:
<Host name="localhost" ...>
...
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html"
homeBase=c:\Homes"
userClass="org.apache.catalina.startup.HomesUserDatabase"/>
...
</Host>
如果某个名为craigmcc的用户的主目录已经设置好,通过使用如下URL,可以浏览它的内容:
http://www.mycompany.com:8080/~craigmcc
使用这个特征需要注意如下几个问题:
每个用户web应用会使用该Host的DefaultContext元素定义的特征发布;
包含多个Listener元素的实例也是有效的。但是,这只在你希望配置多个homeBase目录情况下才有意义;
执行Catalina的用户名对每个用户的web应用目录以及它的所有内容必须有读的权限;
http://www.blogjava.net/xianeizhu/archive/2006/02/16/31084.html
分享到:
相关推荐
以下是对"Tomcat协同配置参考"的详细说明: 1. **Tomcat与Apache协同端口配置**: 在Tomcat的`server.xml`配置文件中,你需要定义一个`Connector`元素来设置Apache与Tomcat之间的通信。这个例子中,配置了AJP...
### Tomcat配置SQL Server数据库连接池详解 #### 一、背景介绍 随着互联网技术的发展,Web应用程序变得越来越重要。为了确保这些应用能够高效地运行,合理配置应用服务器和数据库之间的连接至关重要。Tomcat作为一...
### Tomcat配置JavaScript ArcGIS API详解 #### 一、引言 随着Web GIS技术的发展,越来越多的应用场景需要在Web端实现地图数据的展示与交互。Esri提供的ArcGIS JavaScript API便成为了开发人员进行地理信息系统...
### Tomcat与JDK环境变量配置详解 #### 一、环境概述 在本文档中,我们将探讨如何正确地配置Tomcat服务器以及相关的JDK环境变量,同时也会...如果在配置过程中遇到任何问题,建议参考官方文档或寻求专业人士的帮助。
现在,让我们看看提供的资源`apache_tomcat配置.txt`。这个文本文件可能包含了配置示例或者步骤说明,内容可能包括如何设置服务器端口、添加新的虚拟主机、配置连接器(如NIO、APR)、安全管理、JVM内存设置等。为了...
tomcat7中server文件配置参考,多域名配置,分路段访问。
【Tomcat配置详解】 Tomcat是一款广泛使用的开源Java Servlet容器,特别适合于部署Web应用程序。本文将详述如何从头开始配置Tomcat,确保你能够独立地手动部署和运行项目。 1. **下载Tomcat服务器** 在配置Tomcat...
【标题】"Tomcat配置PDF"是一份专为初学者准备的详尽指南,它涵盖了Apache Tomcat服务器的安装、配置以及管理等多个方面。Tomcat是世界上最流行的开源Java Servlet容器,广泛用于部署Web应用程序,尤其是那些基于...
《深入解析Tomcat配置》 Tomcat是一款广泛应用的开源Java Servlet容器,它是Apache软件基金会Jakarta项目的一部分。作为Web服务器,Tomcat能够处理HTTP协议,支持Servlet和JSP技术,是开发和部署Java Web应用的理想...
标题中的“tomcat配置ssl-单点登录(sso)”指的是在Apache Tomcat服务器上配置SSL安全套接层,以及实现单点登录(Single Sign-On, SSO)功能。这是一个涉及网络安全和用户认证的重要主题,主要目标是提高Web应用的...
Linux 下配置Tomcat 详解各位大佬敬请参考,沟通交流,
在下载的“apache+tomcat配置文件”中,可能包含了这些配置的示例或模板,可以直接使用或作为参考来配置自己的环境。确保在实际部署前,根据自身的硬件资源和应用需求进行适当的调整,以达到最佳的运行效果。在部署...
### Tomcat服务器配置及数据库连接池配置详解 #### 一、Tomcat服务器配置与环境搭建 ##### 1. JDK安装与配置 - **系统环境**:Windows 2003 Server SP3。 - **JDK路径设置**: - `JAVA_HOME` 设置为 `C:\JDK`。 ...
Linux下Tomcat的安装配置是Java开发者在服务器端部署应用程序时必须掌握的一项基本技能。Tomcat是一款开源的、轻量级的Java应用服务器,主要用于执行Servlet和...对于更复杂的配置和管理,建议参考官方文档和最佳实践。
【标题】:Tomcat安装与MyEclipse配置Tomcat指南 在进行Web应用程序开发时,Apache Tomcat是一款广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用规范。本指南将详细阐述如何安装Tomcat 7的解压版,并在...
《Tomcat参考手册中文版chm》是一部针对Apache Tomcat服务器的详尽指南,它包含了Tomcat的配置、管理和优化等多个方面的内容。Tomcat作为一款广泛使用的开源Java Servlet容器,对于开发和部署Java Web应用程序至关...
3. **版本兼容性**:不同版本的Tomcat可能对`web.xml`文件的格式有不同的要求,因此在配置时需参考对应版本的官方文档。 4. **安全问题**:不要在`web.xml`中泄露敏感信息,例如数据库连接字符串等。 通过以上步骤...
NULL 博文链接:https://seaport2008.iteye.com/blog/905930