公告 |
求真务实打基础, 宁缺毋滥读好书。
数据挖掘青年(DMman) |
链接 |
|
Blog信息 |
blog名称:DMman(数据挖掘青年) 日志总数:102 评论数量:564 留言数量:57 访问次数:1753697 建立时间:2007年4月9日 |

| |
[Java EE]转:Tomcat服务器配置参考(4)Engine容器 网上资源
数据挖掘青年 发表于 2007/4/19 21:39:28 |
概述
Engine元素代表与特定的Catalina Service相关的所有请求处理机制。它从一个或者多个Connector接受请求并处理,将完整的响应返回给Connector,由Connnector最终传回给客户端。
每个Service元素必须有且仅有一个Engine元素,Engine元素跟在对应的Connector元素的后面。
属性
公共属性
Engine的所有实现支持如下属性:
属性
描述
backgroundProcessorDelay
这个值代表在该engine及其子容器(包括所有的wrappers)上调用backgroundProcess方法的延时,以秒为单位。如果延时值非负,子容器不会被调用,这意味着子容器使用自己的处理线程。如果该值为正,会创建一个新的线程。在等待指定的时间以后,该线程在Engine及其 子容器上调用backgroundProcess方法。如果没有指定,缺省值为10,代表10秒的延时。
className
实现的Java类名。该类必须实现org.pache.catalina.Engine接口。如果没有指定,使用标准实现。
defaultHost
缺省主机名,缺省主机用来处理不能匹配任何Context路径的请求。所有嵌套在Engine中的Host元素中,必须有一个Host的name属性与这个名称匹配。
jvmRoute
在使用负载平衡的情况下,用来使能session affinity的标识符。这个标识符在所有参与集群的Tomcat 5 服务器中必须是唯一的。标识符附加在session标识符后面,因此前端代理总是可以把特定的session转发到同一个Tomcat 5 实例。
name
Engine的逻辑名,用在日志和错误消息中。
标准实现
Engine的标准实现是org.apache.catalina.core.StandardEngine。它支持如下的附加属性:
属性
描述
debug
与这个Engine相关联的Logger记录的详细程度。数字越大,输出越详细。如果没有指定,缺省值为0。
嵌套元素
可以在Engine元素中嵌入一个或者多个Host元素,每个Host元素代表一个不同的虚拟主机。至少需要定义一个Host,并且嵌套的Host元素中,必须有一个名称与上面指定的defaultHost属性匹配。
也可以在Engine元素嵌入一个DefaultContext元素(可选),用来定义自动发布的web应用的缺省属性。
下列元素可以嵌套在Engine元素中,但每种元素至多只能嵌套一次:
Logger - 配置一个logger,用来接收和处理Engine的所有日志消息,还包括与这个Engine相关的所有Connector的消息。另外,Engine还负责记录嵌套的所有Host和Context的消息,除非被低层的Logger配置覆盖;
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'>
<Engine name="Standalone" ...>
...
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="catalina_access_log." suffix=".txt"
pattern="common"/>
...
</Engine>
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>
参考Access Log Valve,以获得更多配置属性的信息;
生命期Listeners(Lifecycle 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'>
<Engine name="Standalone" ...>
...
<Listener className="com.mycompany.mypackage.MyListener" ... >
...
</Engine>
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>注意,一个listener可以具有任意多的附加属性。属性名与JavaBean的属性名相对应,使用标准的属性命名方法。
请求过滤器(Request Filters)
对每个发送到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'>
<Engine name="Standalone" ...>
...
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
...
</Engine>
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>
500)this.width=500'>如果想知道过滤器支持的更多选项的信息,参考Remote Address Filter和Remote Host Filter |
|
|