本站首页    管理页面    写新日志    退出



公告


 求真务实打基础,
 宁缺毋滥读好书。

数据挖掘青年(DMman)


我的分类(专题)

日志更新
问君能有几多愁,恰似一群太监上青楼
我和僵尸有个约会:灵异世界或真实存在?
赤壁(下)观后小感:雷人
英科学家:酒精和烟草的危害大于大麻和摇头
只有社会主义才能拯救世界(由金融危机引发
求职心得(非名牌院校 硕士 计算机)
省外就业协议录入
数据挖掘方面的资源、期刊、会议的网址集合
面试心得(摘)
为学
EI收录中国期刊-核心(2008-5)
混沌理论:随机世界的建模
分子计算机已经问世,纳米计算机指日可待?
绝对好用免费的网络电话
NLP:基于机器学习的人类思想及行为建模
Weka中用于组合多个模型的的装袋、提升
数据挖掘在企业中应用的四种途径
(转)几点做人做事的建议
大学计算机软件专业生应该学什么(转)
一个程序员对学弟学妹建议(转)

最新评论

留言板

链接

Blog信息
blog名称:DMman(数据挖掘青年)
日志总数:102
评论数量:564
留言数量:57
访问次数:1661268
建立时间:2007年4月9日




[Java EE]转:Tomcat服务器配置参考(5)Host容器
网上资源

数据挖掘青年 发表于 2007-4-19 21:40:42

概述 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会为该容器处理的所有请求创建访问日志,如下所示: 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> <Host name="localhost" ...> ... <Valve className="org.apache.catalina.valves.AccessLogValve" prefix="localhost_access_log." suffix=".txt" pattern="common"/> ... </Host> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'>参考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元素,可以完成上述功能。   500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> <Host name="www.mycompany.com" ...> ... <Alias>mycompany.com</Alias> ... </Host> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 为了使这个策略生效,所有的网络名称必须在DNS服务器登记,指向运行Catalina实例的同一台计算机。   生命期Listeners 如果一个Java对象需要知道Context什么时候启动,什么时候停止,可以在这个对象中嵌套一个Listener元素。该Listener元素必须实现了org.apache.catalina.LifecycleListener接口,在发生对应的生命期事件的时候,通知该Listener。可以按照如下的格式配置这样的Listener: 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> <Host name="localhost" ...> ... <Listener className="com.mycompany.mypackage.MyListener" ... > ... </Host> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'>注意,一个listener可以具有任意多的附加属性。属性名与JavaBean的属性名相对应,使用标准的属性命名方法。 请求过滤器 对每个发送到Engine,Host或者Context的请求,可以要求Catalina检查IP地址或主机名称。Catalina使用一系列配置好的“接受”或者“拒绝”过滤器对客户端的地址或者主机名进行检查,过滤器是按照正则表达式语法定义的,由Jakarta Regexp正则表达式库支持。不被接受的请求会返回一个HTTP“Forbidden”错误。下面是过滤器的定义。 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> <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> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'>   如果想知道过滤器支持的更多选项的信息,参考Remote Address Filter和Remote Host Filter 单次登录(Single Sign On) 在许多环境尤其是门户环境下,对特定虚拟主机上的一套web应用,只希望对用户进行一次认证。这可以在Host元素中嵌套如下的元素完成: 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> <Host name="localhost" ...> ... <Valve className="org.apache.catalina.authenticator.SingleSignOn" debug="0"/> ... </Host> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 单次登录根据如下规则运作: 这个虚拟主机的所有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系统下使用如下配置: 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> <Host name="localhost" ...> ... <Listener className="org.apache.catalina.startup.UserConfig" directoryName="public_html" userClass="org.apache.catalina.startup.PasswdUserDatabase"/> ... </Host> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 在不使用/etc/password的服务器上,可以要求Catalina将指定的基准目录下的所有目录(比如c:\homes)看成是用户主目录: 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> <Host name="localhost" ...> ... <Listener className="org.apache.catalina.startup.UserConfig" directoryName="public_html" homeBase=c:\Homes" userClass="org.apache.catalina.startup.HomesUserDatabase"/> ... </Host> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 如果某个名为craigmcc的用户的主目录已经设置好,通过使用如下URL,可以浏览它的内容: 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> http://www.mycompany.com:8080/~craigmcc 500)this.width=500'> 500)this.width=500'> 500)this.width=500'> 500)this.width=500'>   使用这个特征需要注意如下几个问题: 每个用户web应用会使用该Host的DefaultContext元素定义的特征发布; 包含多个Listener元素的实例也是有效的。但是,这只在你希望配置多个homeBase目录情况下才有意义; 执行Catalina的用户名对每个用户的web应用目录以及它的所有内容必须有读的权限;


阅读全文(1965) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144421972 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号