基于tomcat配置文件server.xml详解

2019-10-18 16:18:39刘景俊

•name:该线程池的名称,其他组件需要使用该名称引用该线程池。

标准类的属性包括:

•threadPriority:线程优先级,默认值为5。

•daemon:线程是否以daemon的方式运行,默认值为true。

•namePrefix:执行器创建每个线程时的名称前缀,最终线程的名称为:namePrefix+threadNumber。

•maxThreads:线程池激活的最大线程数量。默认值为200。

•minSpareThreads:线程池中最少空闲的线程数量。默认值为25。

•maxIdleTime:在空闲线程关闭前的毫秒数。除非激活的线程数量小于或等于minSpareThreads的值,否则会有空闲线程的出现。默认值为60000,即空闲线程需要保留1分钟的空闲时间才被杀掉。

•maxQueueSize:可执行任务的最大队列数,达到队列上限时的连接请求将被拒绝。

•prestartminSpareThreads:在启动executor时是否立即创建minSpareThreads个线程数,默认为false,即在需要时才创建线程。

例如在connector中指定所使用的线程池,方式如下:

<Connector executor="tomcatThreadPool"
      port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />

4.4 连接器connector

连接器用于接收客户端发送的请求并返回响应给客户端。一个service中可以有多个connector。有多种connector,常见的为http/1.1,http/2和ajp(apache jserv protocol)。在tomcat中,ajp连接协议类型专用于tomcat前端是apache反向代理的情况下。

因此tomcat可以扮演两种角色:

1.Tomcat仅作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;

2.Tomcat既作为web服务器,也作为应用程序服务器:请求来自于浏览器。

Tomcat应该考虑工作情形并为相应情形下的请求分别定义好需要的连接器才能正确接收来自于客户端的请求。

此处暂先介绍HTTP/1.1连接器的属性设置。ajp后文再做介绍。

HTTP连接器表示支持HTTP/1.1协议的组件。设置了该连接器就表示catalina启用它的独立web服务功能,当然,肯定也提供它必须的servlets和jsp执行功能。在一个service中可以配置一个或多个连接器,每个连接器都可以将请求转发给它们相关联的engine以处理请求、创建响应。

如果想要配置某个web server的连接器,则使用AJP协议。

每个流入的请求都需要一个独立的线程来接收。当并发请求数量超出maxThreads指定的值时,多出的请求将被堆叠在套接字中,直到超出acceptCount指定的值。超出accpetCount的请求将以"connection refused"错误进行拒绝。

默认的定义如下:

<Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />