`
zybing
  • 浏览: 459143 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat 的 Valve 详解

阅读更多

来源: http://blog.csdn.net/majiabao123/archive/2009/05/15/4189886.aspx

 

Valve组件

概述

Valve元素是插入在Catalina容器(包括Engine,Host或者Context)处理流程中的组件。不同的组件有不同的处理能力。下面将对每个Valve组件进行描述

以下的描述使用变量 $CATALINA_HOME来指Tomcat 5安装的目录。大多数的相对路径都是以该目录为基准。但是,通过设置CATALINA_BASE目录,可以运行多个Tomcat 5实例,这时你应该使用$CATALINA_BASE来作为目录基准,而不是使用$CATALINA_HOME。
访问日志Valve
概述

Access Log Valve用来创建日志文件,格式与标准的web server日志文件相同。可以使用用日志分析工具对日志进行分析,跟踪页面点击次数、用户会话的活动等。Access Log Valve的很多配置和行为特性与File Logger相同,包括每晚午夜自动切换日志文件。Access Log Valve可以和任何Catalina容器关联,记录该容器处理的所有请求。

属性

Access Log Valve支持如下配置属性:

属性描述
className

实现的Java类名。必须被设置成org.apache.catalina.valves.AccessLogValve。

directory

存放日志文件的目录,可以是相对路径或者绝对路径。如果使用相对路径,是指相对于 $CATALINA_HOME的路径。如果不指定directory属性,缺省值是“logs”(相对于 $CATALINA_HOME)

pattern

需要记录的请求/响应不同信息域的格式布局。如果是“common”或者“combine”,说明选择标准格式。下面会有关于配置这个属性的更多信息。

prefix

日志文件名的前缀。如果没有指定,缺省值是“access_log.”。如果不想使用前缀,使用长度为0的字符串。

resolveHosts

将远端主机的IP地址通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端的IP地址。

suffix

日志文件名的后缀。如果没有指定,缺省值是“”。如果不想使用后缀,使用长度为0的字符串。

rotatable

缺省值为true,用来决定日志是否翻转的标志。如果为false,日志文件永远不翻转,并且忽略fileDataFormat。要谨慎使用。

condition

打开条件日志。如果设置了这个属性,只有在ServletRequest.getAttribute()是null的时候,才会为请求创建日志。比如,如果condition设为junk,则只有在Servlet.getAttribute("junk")==null的时候,才会记录这个请求。使用过滤器,可以很容易设置(或者取消设置)不同请求的属性。

fileDateFormat 允许在日志文件名称中使用定制的日期格式。日志的格式也决定了日志文件翻转的频率。如果想每个小时翻转一次,将这个值设为yyyy-MM-dd.HH

pattern属性值由字符串常量和pattern标识符加上前缀"%"组合而成。pattern标识符加上前缀"%",用来代替当前请求/响应中的对应的变量值。目前支持如下的pattern:

  • %a   - 远端IP地址
  • %A   - 本地IP地址
  • %b   - 发送的字节数,不包括HTTP头,如果为0,使用"-"
  • %B   - 发送的字节数,不包括HTTP头
  • %h   - 远端主机名(如果resolveHost=false,远端的IP地址)
  • %H   - 请求协议
  • %l   - 从identd返回的远端逻辑用户名(总是返回 '-')
  • %m   - 请求的方法(GET,POST,等)
  • %p   - 收到请求的本地端口号
  • %q   - 查询字符串(如果存在,以 '?'开始)
  • %r   - 请求的第一行,包含了请求的方法和URI
  • %s   - 响应的状态码
  • %S   - 用户的session ID
  • %t   - 日志和时间,使用通常的Log格式
  • %u   - 认证以后的远端用户(如果存在的话,否则为'-')
  • %U   - 请求的URI路径
  • %v   - 本地服务器的名称
  • %D   - 处理请求的时间,以毫秒为单位
  • %T   - 处理请求的时间,以秒为单位

Access Log Valve还可以记录cookie,消息头,Session或者ServletRequest中的信息。使用与apache类似的语法:

  • %{xxx}i   消息头
  • %{xxx}c   特定的cookie
  • %{xxx}r   xxx 是ServletRequest中的某个属性
  • %{xxx}s   xxx 是HttpSession中的某个属性

上面提到"common"模式(也是缺省的模式)实际上是"%h %l %u %t "%r" %s %b" 的一种简单表示方法

"common"模式后面加上"Referer"和用户代理头(User-Agent   headers)的信息,就是前面提到的"combined"模式。

远端地址过滤器 (Remote Address Filter)
概述

远端地址过滤器将发起请求的客户端的IP地址和一个或多个正则表达式进行比较,以决定接受或者拒绝这个请求。远端地址过滤器可以嵌套在任何Catalina容器中(Engine,Host或者Contxt)。在过滤器起作用之前,容器必须接受所有的请求。

属性

远端地址过滤器支持如下的配置属性:

属性描述
className

实现的Java类名,必须设置成org.apache.catalina.valves.RemoteAddrValve.

allow

用逗号分开的一串正则表达式,客户端的IP地址与这些正则表达式进行比较。如果指定了这个属性,客户端的地址必须匹配这些表达式,其请求才会被处理。如果没有指定这个属性,所有的请求都被接受,除非客户端地址匹配了一个deny模式。

deny

用逗号分开的一串正则表达式,客户端的IP地址与这些正则表达式进行比较。如果指定了这个属性,客户端的地址一定不能匹配这些表达式,其请求才会被接受。如果没有指定这个属性,仅仅由"accept“属性决定是否接受这个请求。

远端主机过滤器 (Remote Host Filter)
概述

远端主机过滤器将发起请求的客户端的主机名和一个或者多个正则表达式进行比较,以决定接受或者拒绝这个请求。远端主机过滤器可以嵌套在任何Catalina容器中(Engine,Host或者Context)。在过滤器起作用之前,容器必须接受所有的请求。

属性

远端主机过滤器支持如下属性:

属性描述
className

实现的Java类名,必须设为org.apache.catalina.valves.RemoteHostValve .

allow

用逗号分开的一串正则表达式,客户端的主机名与这些正则表达式进行比较。如果指定了这个属性,客户端的主机名必须匹配这些表达式,其请求才会被处理。如果没有指定这个属性,所有的请求都被接受,除非客户端主机名匹配了一个deny模式。

deny 用逗号分开的一串正则表达式,客户端的主机名与这些正则表达式进行比较。如果指定了这个属性,客户端的主机名一定不能匹配这些表达式,其请求才会被接受。如果没有指定这个属性,仅仅由"accept“属性决定是否接受这个请求。
Request Dumper Valve
概述

Request Dumper Valve在调试与客户端的交互非常有用。如果配置,它会利用容器(Engine,Host或者Context)的Logger记录下每个请求的详细信息。

属性

Request Dumper Valve 支持如下配置属性:

属性描述
className

实现的Java类名,必须设为org.apache.catalina.valves.RequestDumperValve .

单次登录Valve(Single Sign On Valve
概述

如果希望用户可以登录到虚拟主机中的任意一个web应用,而且登录以后所有其他的web应用都能使用用户的身份信息(即不需要重新登录),就可以使用单次登录Valve。

在Host元素中有更多关于单次登录Valve的信息。

属性

单次登录Valve支持如下的配置属性:

属性描述
className

实现的Java类名,必须设为:org.apache.catalina.authenticator.SingleSignOn .

debug

这个组件的调试信息的详细程度,缺省值为0,即没有调试输出。

分享到:
评论

相关推荐

    tomcat中server.xml详解

    《Tomcat中Server.xml详解》 在Apache Tomcat服务器中,`server.xml`是一个至关重要的配置文件,它定义了服务器的基本结构和行为。这个文件位于Tomcat安装目录下的`conf`子目录中,是整个Tomcat配置的核心。本文将...

    tomcat配置详解

    ### Tomcat配置详解 #### 一、`<Server>`元素 `<Server>`元素作为Tomcat实例的顶级配置节点,负责定义整个Tomcat容器的基本结构和功能。此元素由`org.apache.catalina.Server`接口定义,并且在配置文件中只能出现...

    Tomcat架构解析文档.zip

    【Java面试必备】Tomcat架构解析 Tomcat作为一款开源的、基于Java的Web应用服务器,是许多初学者和开发者入门Java Web应用的首选。它轻量级、高效且易于管理,广泛应用于小型到中型企业级应用。在面试中,对Tomcat...

    tomcat服务器的配置详解

    《深入解析Tomcat服务器配置》 Tomcat作为一款广泛应用的Java EE服务器,其配置的精细程度直接影响到应用程序的性能和稳定性。本文将详尽解析Tomcat的配置文件`server.xml`,并阐述其中的关键参数和配置结构。 ...

    tomcat管道模式 pipeline与valve详解

    在介绍Tomcat的管道模式(Pipeline)与Valve的详细知识点前,我们先来理解一下什么是管道模式。管道模式可以被看作是一种设计模式,它的核心概念是将多个处理对象通过一种类似于管道的结构连接起来,每个处理对象在...

    tomcat安装详解

    ### Tomcat安装详解 #### 一、前言 Apache Tomcat 是一款开源的Servlet容器,主要用来运行Java Web应用程序。本文将详细介绍Tomcat的安装步骤,包括必要的Java环境配置、Tomcat的下载与安装、环境变量设置以及如何...

    tomcat-server.xml详解

    《Tomcat-server.xml配置详解》 Tomcat作为一款广泛应用的Java EE服务器,其核心配置文件`tomcat-server.xml`对于优化服务器性能、管理和监控服务至关重要。本文将详细解析`tomcat-server.xml`中的主要元素和属性,...

    tomcat_server.xml_配置详解

    《Tomcat Server.xml配置详解》 Tomcat作为流行的Java应用服务器,其核心配置文件`server.xml`对于理解和管理服务器的运行至关重要。本文将详细解析`server.xml`中的关键元素、属性及其含义,帮助读者深入理解...

    Tomcat与Java_Web开发技术详解4.pdf

    ### Tomcat与Java Web开发技术详解 #### 一、Tomcat简介 Tomcat是一款开源的Servlet容器,由Apache软件基金会下属的Jakarta项目开发。它实现了Servlet和JSP规范,可以作为独立的Web服务器来运行Java Web应用程序。...

    Tomcat 接口文档 API

    **Tomcat接口文档API详解** Tomcat是一款广泛使用的开源Java Servlet容器,由Apache软件基金会开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,为Web应用程序提供了一个轻量级、高性能的运行环境。...

    tomcat server.xml配置详解

    在深入探讨Tomcat服务器的`server.xml`配置文件之前,我们先简要了解下Tomcat。Apache Tomcat是一个开源的Servlet容器,主要用来运行Java Servlet和JavaServer Pages(JSP)。`server.xml`是Tomcat的核心配置文件,...

    tomcat6 server.xml 详解

    每个容器(Server、Service、Engine、Host、Context)都可以有自己的Valve链。 10. **Realm**: Realm负责认证和授权,例如,MemoryRealm使用内存中的用户和角色信息,UserDatabaseRealm从XML文件加载用户信息。 ...

    tomcatserver.xml配置详解.pdf

    8. 、<Realm> 和 <Valve> 元素:这些元素用于定义日志、用户权限和请求处理阀门。 9. 日志记录配置:可能包括className、prefix、suffix等,用以设置日志记录的类名以及日志文件的名称前缀和后缀。 10. 安全性配置...

    tomcat配置文件server文件详解.pdf

    Tomcat 配置文件 server.xml 详解 Tomcat 配置文件 server.xml 是 Tomcat 服务器的核心配置文件之一,主要用于设置服务器的基本属性、端口设置、路径设置、数据源设置、用户名和密码设置、默认首页设置等。下面我们...

    tomcat_server.xml_配置详解.doc

    《深入解析Tomcat Server.xml配置文件》 在Java Web应用的开发与部署中,Apache Tomcat作为一款开源的Servlet容器,扮演着至关重要的角色。它的灵活性和可定制性,很大程度上依赖于`server.xml`配置文件。本文将对`...

    linux配置Tomcat集群

    ### Linux配置Tomcat集群知识点详解 #### 一、概述与目标 在Linux环境下配置Tomcat集群,主要目的是构建一个能够实现水平扩展、具备高可用性、支持负载均衡以及错误恢复能力的服务架构。通过集群的方式,可以提高...

    apache-tomcat-8.5.68-src

    【Apache Tomcat 8.5.68 源代码详解】 Apache Tomcat 是一个开源的、免费的应用服务器,主要用于部署Java Servlet 和 JavaServer Pages (JSP) 应用程序。Tomcat 8.5.68 版本是其众多版本中的一个重要里程碑,它在...

    《深入剖析 Tomcat》PDF版本下载.txt

    - **Valve**:Valve是容器级别的扩展点,可以通过配置文件添加自定义逻辑到Tomcat的处理流程中。 ### 三、Tomcat内部机制 #### 3.1 启动过程 当启动Tomcat时,其核心组件会按照一定的顺序初始化并准备就绪: 1. *...

    apache+Tomcat负载平衡设置详解

    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> ``` 调整参数以适应你的网络环境。 三、测试与监控 完成上述配置后,启动Apache和所有Tomcat实例,然后通过访问应用来测试负载...

Global site tag (gtag.js) - Google Analytics