转载

U01_003 server.xml其他标签

概念:

  • <Listener> 是监听器标签,可以在特定事件发生时执行特定的操作,被监听的事件通常是Tomcat的启动和停止。
  • 监听器可以在 <Server><Engine><Host><Context> 中。
  • 监听器不允许内嵌其他组件。
  • 监听器需要配置的最重要的属性是className,该属性规定了监听器的具体实现类,该类必须实现了org.apache.catalina.LifecycleListener接口。
接口 描述
VersionLoggerListener 当Tomcat启动时,该监听器记录Tomcat、Java和操作系统的信息,该监听器必须是配置的第一个监听器。
AprLifecycleListener Tomcat启动时,检查APR库,如果存在则加载。APR,即Apache Portable Runtime,是Apache可移植运行库,可以实现高可扩展性、高性能,以及与本地服务器技术更好的集成。
JreMemoryLeakPreventionListener 与类加载器导致的内存泄露有关。
GlobalResourcesLifecycleListener 通过该监听器,初始化 < GlobalNamingResources> 标签中定义的全局JNDI资源,如果没有该监听器,任何全局资源都不能使用。
ThreadLocalLeakPreventionListener 当Web应用因thread-local导致的内存泄露而要停止时,该监听器会触发线程池中线程的更新。当线程执行完任务被收回线程池时,活跃线程会一个一个的更新。只有当Web应用(即Context元素)的 renewThreadsWhenStoppingContext 属性设置为 true 时,该监听器才有效。
JasperListener 在Web应用启动之前初始化Jasper,Jasper是JSP引擎,把JVM不认识的JSP文件解析成java文件,然后编译成class文件供JVM使用。

2. <GlobalNamingResources> 标签

概念: <GlobalNamingResources> 负责定义了全局资源,其中的 <Resource> 可以读取了某个配置文件的信息,本例中读取了 conf/tomcat-users.xml 文件的信息

配置:

<GlobalNamingResources>
    <!-- 是一个可编辑的用户数据库的映射--》
    <!-- <Realm>可以使用这个<Resource>进行安全验证用户 -->
    <Resource 
        name="UserDatabase" auth="Container"
        type="org.apache.catalina.UserDatabase"
        description="User database that can be updated and saved"
        factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
        pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
复制代码

3. <Realm> 标签

概念:

  • <Realm><Engin> 中的一个子标签,它提供了一种用户密码与web应用的映射关系,从而达到角色安全管理的作用。
  • <Realm> 的配置使用 nameUserDatabase 的资源实现,该资源在 <Server> 元素中使用 <GlobalNamingResources> 配置。

配置:

<!-- 使用LockOutRealm实现可以阻止恶意攻击猜测账号密码 -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
    <!-- 这个realm领域指向了UserDatabase -->
    <!-- 对此UserDatabase执行的任何编辑都可立即供Realm使用 -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
复制代码
属性 描述
className 安全管理的某种实现类
resourceName 这个实现是在 <GlobalNamingResources> 中配置的

4. <Valve> 标签

概念:

  • 单词Valve的意思是"阀门",在Tomcat中代表了请求处理流水线上的一个组件,Valve可以与Tomcat的容器中的 <Engine><Host><Context> 关联。
  • 不同的Valve有不同的特性,AccessLogValve的作用是通过日志记录其所在的容器中处理的所有请求,Valve放在 <Host> 下,便可以记录该Host处理的所有请求。
  • AccessLogValve 记录的日志就是访问日志,每天的请求会写到一个日志文件里。

配置:

<Valve 
    className="org.apache.catalina.valves.AccessLogValve" 
    directory="logs"
    prefix="localhost_access_log" 
    suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />
复制代码
属性 描述
className 规定了Valve的类型为AccessLogValve。
directory 指定日志存储的位置为 %TOMCAT_HOME%/logs 目录下。
prefix 指定了日志文件的前缀为 localhost_access_log
suffix 指定了日志文件的后缀为 .txt
pattern 指定记录日志的格式为 %h %l %u %t &quot;%r&quot; %s %b
占位符 描述
%h 远程主机名或IP地址:如果有nginx等反向代理服务器进行请求分发,该主机名/IP地址代表的是nginx,否则代表的是客户端。
%l 远程逻辑用户名,一律是"-",可以忽略
%u 授权的远程用户名,如果没有,则是"-"
%t 访问的时间
%r 请求的第一行,即请求方法(get/post等)、uri、及协议
%s 响应状态,200,404等等
%b 响应的数据量,不包括请求头,如果为0,则是"-"
原文  https://juejin.im/post/5e9d0c23f265da47f144c14f
正文到此结束
Loading...