Tomcat配置详解(Tomcat配置server.xml详解)

目录

一、结构图

二、配置详解


一、结构图

Tomcat配置详解(Tomcat配置server.xml详解)_第1张图片

二、配置详解

Tomcat9.0.78的server.xml默认配置如下:



  
  
  
  
  
  
    
  
  
    
    
      
        
      
      
        
      
    
  

Server

        顶层元素,是整个配置文件的根元素,即服务器,每个 tomcat 程序启动后,就是一个 server。

...
  • className: 使用的 java 类名
  • address:服务器等待接收 shutdown 命令的地址,默认 localhost
  • port: 接收 shutdown 命令的端口,设置为 - 1 为禁用关闭端口,也就是你不能通过这种方式来关闭了,这样就会影响你使用脚本 (catalina.sh 或者是 shutdown.sh) 来 stop 了,默认绑定 8005 端口
  • shutdown: 指定 shutdown 命令的别名,默认值 SHUTDOWN

Listener

        监听器,不允许内嵌其他组件;listener中字义的组件可以在某事件发生时执行相应的操作;监听器可以在Server、Engine、Host或Context中,如下代码定义的5个监听器都是在Server中。





  • VersionLoggerListener:当Tomcat启动时,该监听器记录Tomcat、Java和操作系统的信息。该监听器必须是配置的第一个监听器。
  • AprLifecycleListener:Tomcat启动时,检查APR库,如果存在则加载。APR,即Apache Portable Runtime,是Apache可移植运行库,可以实现高可扩展性、高性能,以及与本地服务器技术更好的集成。
  • JreMemoryLeakPreventionListener:与类加载器导致的内存泄露有关。
  • GlobalResourcesLifecycleListener:通过该监听器,初始化< GlobalNamingResources>标签中定义的全局JNDI资源;如果没有该监听器,任何全局资源都不能使用。
  • ThreadLocalLeakPreventionListener:当Web应用因thread-local导致的内存泄露而要停止时,该监听器会触发线程池中线程的更新。当线程执行完任务被收回线程池时,活跃线程会一个一个的更新。只有当Web应用(即Context元素)的renewThreadsWhenStoppingContext属性设置为true时,该监听器才有效。

GlobalNamingResources

        元素定义了全局资源,如下配置可以看出,该配置是通过读取$TOMCAT_HOME/ conf/tomcat-users.xml实现的。


    

Service:一种抽象的服务,是多个Connector和单个Container的组合。Container是一个抽象的概念,由Engine、Realm、Valve和Hosts主组组成。

...
  • className: 要使用的 java 类名,未指定的话就使用标准的实现
  • name: 显示的名称

Connector

        一个Service下可以配置多个Connector,代表一种应用协议,主要负责socket处理,监听请求,将请求转换为request和response,用于处理连接和并发,通常包括两种方式 HTTP 和 AJP。HTTP 是用于网页地址栏 http 这种访问方式;AJP 一般用于搭配 Apache 服务器。

...
  • port: 绑定的端口,如果设置为 0,tomcat 则随机获取一个空闲端口
  • protocol: 传输协议和版本
  • connectionTimeout: 此连接器在接受连接后等待请求URI行显示的毫秒数。使用-1值表示没有(即无限)超时。默认值是60000(即60秒),但请注意,Tomcat附带的标准server.xml将其设置为20000(即20秒)。除非disableUploadTimeout设置为false,否则在读取请求体(如果有的话)时也会使用此超时。
  • redirectPort: 接收到的 ssl 请求后重定向的端口。如果此连接器支持非ssl请求,并且接收到与之匹配的“安全约束”的请求;需要SSL传输,Catalina将自动将请求重定向到此处指定的端口号。
  • maxParameterCount: 从查询字符串中获得的请求参数(包括上传的文件)的最大总数,对于POST请求,如果内容类型为application/x-www-form-urlencoded或multipart/form-data,则从请求体中获得请求参数的最大总数。超出此限制的请求参数将被忽略。小于0的值表示没有限制。如果未指定,则使用默认值1000。注意,FailedRequestFilter过滤器可用于拒绝超过限制的请求
  • asyncTimeout: 异步请求的默认超时(以毫秒为单位)。如果没有指定,该属性将被设置为Servlet规范默认值30000(30秒)。

Engine

        全局Servlet引擎,在Service中有且只有一个。Engine是Service组件中的请求处理组件,Engine组件从一个或多个Connector中接收请求并处理,并将完成的响应返回给Connector,最终传递给客户端。Engine、Host和Context都是容器,Engine包含Host,Host包含Context。

...
  • name: 此引擎的逻辑名称,用于日志和错误消息。当在同一个服务器中使用多个Service元素时,必须为每个引擎分配一个唯一的名称。
  • defaultHost: 默认的host名称,它标识将处理定向到此服务器上的主机名的请求的主机,但这些请求未在此配置文件中配置。这个名称必须匹配嵌套在里面的Host元素的名称属性。。

Host

        是Engine的子容器。Engine组件中可以内嵌1个或多个Host组件,每个Host组件代表Engine中的一个虚拟主机。Host组件至少有一个,且其中一个的name必须与Engine组件的defaultHost属性相匹配。Host组件代表的虚拟主机,可行多个Web应用,并负责安装、展开、启动和结束每个Web应用。

...
  • name: 通常是这个虚拟主机的网络名称,在您的域名服务服务器中注册。无论用于指定主机名的大小写是什么,Tomcat都会在内部将其转换为小写。一个引擎内嵌套的主机必须有一个与该引擎的默认主机设置匹配的名称。有关如何将多个网络名称分配给同一虚拟主机的信息,请参阅主机名别名。名称不能包含通配符,这只在别名中有效。
  • appBase: 此虚拟主机的应用程序基目录。这是一个目录的路径名,该目录可能包含要部署在此虚拟主机上的web应用程序。可以指定绝对路径名,也可以指定相对于$CATALINA_BASE目录的路径名。有关自动识别和部署web应用程序的更多信息,请参阅自动应用程序部署。如果未指定,将使用webapps的默认值。

Value:

        单词Valve的意思是“阀门”,在Tomcat中代表了请求处理流水线上的一个组件;Valve可以与Tomcat的容器(Engine、Host或Context)关联。

  • className:规定了Valve的类型。
  • directory:指定日志存储的位置。如上代码是记录在$TOMCAT_HOME/logs目录下
  • prefix: 指定了日志文件的前缀。
  • suffix:指定了日志文件的后缀。
  • pattern:指定记录日志的格式。
    • %h:远程主机名或IP地址
    • %l:远程逻辑用户名,一律是”-”
    • %u:授权的远程用户名,若没有,则为"-"
    • %t:访问的时间
    • %r:请求的第一行,即请求方法(get/post等)、uri、及协议
    • %s:响应状态,200,404等等
    • %b:响应的数据量,不包括请求头,如果为0,则是"-"

AccessLogValve: 其作用是通过日志记录其所在的容器中处理的所有请求。与Engine、Host或Context关联。Value放Host下记录该Host处理的所有请求。其记录的相信是访问信息,每天记录到一个文件中;

Context

        代表在特定虚拟主机上运行的一个Web应用。是Host 的子容器,一个Host中可以定义多个Context元素。

你可能感兴趣的:(Spring,Web,Java面试,tomcat,xml,servlet)