Tomcat之server.xml配置详解

本文详细解析了Tomcat服务器的配置文件server.xml,包括<Server>、<Service>、<Engine>、<Host>和<Connector>等关键元素的作用和配置参数。<Server>元素是最高层容器,<Service>包含<Engine>和多个<Connector>,<Engine>处理请求,<Host>定义虚拟主机,而<Connector>则负责接收和响应客户请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<Server>元素

它代表整个容器,是Tomcat实例的顶层元素。由org.apache.catalina.Server接口来定义。它包含一个<Service>元素。并且它不能做为任何元素的子元素。

  • <Server port="8005" shutdown="SHUTDOWN">
  • Server的实现类为org.apache.catalina.core.StandardServer,该类是利用org.apache.catalina.ServerFactory工厂创建的,里面采用了单例模式。
  • Port指定Tomcat监听shutdown命令端口。终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令。该属性是必须的。
  • shutdown指定终止Tomcat服务器时,发给Tomcat服务器的shutdown监听端口的字符串,该属性必须设置。


<Service>元素

该元素由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素

<Service name="Catalina"><Service name="Apache">

第一个<Service>处理所有直接由Tomcat服务器接收的web客户请求。

第二个<Service>处理所有由Apache服务器转发过来的Web客户请求。

Service接口类的实现元素为:org.apache.catalina.core.StandardService

name定义Service的名字

<Engine>元素

每个Service元素只能有一个Engine元素。元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求。由org.apache.catalina.Engine接口定义,该接口的实现类为org.apache.catalina.core.StandardEngine。

<Engine name="Catalina" defaultHost="localhost">

  • defaultHost指定处理客户请求的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机
  • name定义Engine的名字
  • 在<Engine>可以包含如下元素<Logger>、<Realm>、<Value>、<Host>

<Host>元素

它由Host接口定义。一个Engine元素可以包含多个<Host>元素。每个<Host>的元素定义了一个虚拟主机。它包含了一个或多个web应用。

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

  • Host接口的实现类为StandardHost。
  • appBase指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录。如果没有此项,默认为<CATALINA_HOME>/webapps。
  • autoDeploy如果此项为true,表示tomcat服务处于运行状态时,能够检测appBase下的文件,如果有新的web应用加入进来,会自动发布这个WEB应用。
  • unpackWARs如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行。如果设置为false将直接运行WAR文件。

<Context元素>

它由Context接口定义。是使用最频繁的元素。每个<Context>元素代表了运行在虚拟主机上的单个web应用。一个<Host>可以包含多个<Context>元素。每个web应用有唯一的一个相对应的Context代表web应用自身。

<Context path="/sample" docBase="Sample" debug="0" reloadable="true">

  • Context接口的实现类为StandardContext类。
  • path指定访问Web应用的URL入口,注意/myweb,而不是myweb。
  • reloadable如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录Class文件的改变。如果监视到class文件被更新,服务器会重新加载Web应用。
  • cookies指定是否通过Cookies来支持Session,默认值为true。
  • useNaming指定是否支持JNDI,默认值为true。
  • 在<Context>元素中可以包含如下元素<Logger>、<Realm>、<Resource>、<ResourceParams>

<Connector>元素

由Connector接口定义。<Connector>元素代表与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果。

<Connector port="8080" maxThread="50" minSpareThreads="25" maxSpareThread="75"
enableLookups
="false" redirectPort="8443" acceptCount="100" debug="0"
connectionTimeout
="20000" disableUploadTimeout="true" />
<Connection port="8009" enableLookups="false" redirectPort="8443" debug="0"
protocol
="AJP/1.3" />

第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定义了一个AJP Connector,它通过8090端口接收其它服务器转发过来的请求。

Connector元素共用属性
1>className指定实现Connector接口的类
2>enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用

request.getRemoteHost方法返回客户机主机名.默认值为true
3>redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转
发至SSL的redirectPort端口
HttpConnector元素的属性
1>className实现Connector的类
2>port设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost即可
因为TCP/IP的默认端口是80
3>address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况下,端口会监听服务
器上所有的ip地址
4>bufferSize设定由端口创建的输入流的缓存大小.默认值为2048byte
5>protocol设定Http协议,默认值为HTTP/1.1
6>maxThreads设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数
目.默认值为200
7>acceptCount设定在监听端口队列的最大客户请求数量,默认值为10.如果队列已满,客户必须等待.
8>connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间
JkConnector的属性
1>className实现Connector的类
2>port设定AJP端口号
3>protocol必须设定为AJP/1.3






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值