Tomcat的配置文件server.xml总结

tomcat的配置文件位于tomcat目录的conf文件夹下。/conf/server.xml
下面主要讲解server.xml配置文件的内容和配置方法。

源码如下,已去除注释

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <GlobalNamingResources>
    <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>
  <Service name="Catalina">
  	<!--
  	线程池默认没有配置
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

可以看到server.xml文件中的有效配置代码还不是很多的。下面逐一总结每个标签的意义。

1. 文件格式说明
<?xml version="1.0" encoding="UTF-8"?>
2. Server是server.xml的根元素,配置tomcat容器
<Server port="8005" shutdown="SHUTDOWN">
	...
</Server>
  • port : Tomcat 监听的关闭服务器的端口。
  • shutdown: 关闭服务器的指令字符串。
3. Listener 监听器配置

监听器配置。
默认配置的5个Listener 的含义:

  <!‐‐ 用于以日志形式输出服务器 、操作系统、JVM的版本信息 ‐‐>
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!‐‐ 用于加载(服务器启动)  销毁 (服务器停止) APR。 如果找不到APR库, 则会输出日志, 并不影响Tomcat启动 ‐‐>
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!‐‐ 用于避免JRE内存泄漏问题 ‐‐>
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <!‐‐ 用户加载(服务器启动)  销毁(服务器停止) 全局命名服务 ‐‐>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <!‐‐ 用于在Context停止时重建Executor 池中的线程, 以避免ThreadLocal 相关的内存泄漏 ‐‐>
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
4. GlobalNamingResources全局命名配置
  <GlobalNamingResources>
    <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>
5. Service服务配置

该元素用于创建 Service 实例,默认使用 org.apache.catalina.core.StandardService。

 <Service name="Catalina">
	...
 </Service>
6. Executor线程池配置

此处可以使用JDK自带的工具查看jvm的进程与线程信息,具体使用方法详见我得另一篇博客https://blog.csdn.net/weixin_43155866/article/details/108910600

默认情况下,Service 并未添加共享线程池配置。 如果我们想添加一个线程池, 可以在
下添加如下配置:

此处引用黑马程序员讲师资料

<Executor name="tomcatThreadPool"
	namePrefix="catalina‐exec‐"
	maxThreads="200"
	minSpareThreads="100"
	maxIdleTime="60000"
	maxQueueSize="Integer.MAX_VALUE"
	prestartminSpareThreads="false"
	threadPriority="5"
	className="org.apache.catalina.core.StandardThreadExecutor"/>

在这里插入图片描述
如果不配置共享线程池,那么Catalina 各组件在用到线程池时会独立创建。

7. Connector连接器配置

Connector 用于创建链接器实例。默认情况下,server.xml 配置了两个链接器,一个支持HTTP协议,一个支持AJP协议。因此大多数情况下,我们并不需要新增链接器配置,只是根据需要对已有链接器进行优化。

    <!--基于HTTP的-->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!-- 基于AJP的 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  1. port: 端口号,Connector 用于创建服务端Socket 并进行监听, 以等待客户端请求链接。如果该属性设置为0,Tomcat将会随机选择一个可用的端口号给当前Connector使用。
  2. protocol : 当前Connector 支持的访问协议。 默认为 HTTP/1.1 , 并采用自动切换机制选择一个基于 JAVA NIO 的链接器或者基于本地APR的链接器(根据本地是否含有Tomcat的本地库判定)。
  3. connectionTimeOut : Connector 接收链接后的等待超时时间, 单位为 毫秒。 -1 表示不超时。
  4. redirectPort:当前Connector 不支持SSL请求, 接收到了一个请求, 并且也符合security-constraint 约束, 需要SSL传输,Catalina自动将请求重定向到指定的端口。
  5. executor : 指定共享线程池的名称, 也可以通过maxThreads、minSpareThreads等属性配置内部线程池。
  6. URIEncoding : 用于指定编码URI的字符编码, Tomcat8.x版本默认的编码为 UTF-8 ,Tomcat7.x版本默认为ISO-8859-1。

tomcat 的最大连接数设置

https://www.cnblogs.com/wx170119/p/10456179.html

  • maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
  • acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
  • maxConnections:在连接数达到了maxConenctions之后,tomcat仍会保持住连接,但是不处理,等待其它请求处理完毕之后才会处理这个请求。

因此tomcat的最大连接数就等于: maxConnections这个值加上acceptCount这个值

8. Engine引擎
<Engine name="Catalina" defaultHost="localhost">
		...
</Engine>

1) name: 用于指定Engine 的名称, 默认为Catalina 。该名称会影响一部分Tomcat的
存储路径(如临时文件)。
2) defaultHost : 默认使用的虚拟主机名称, 当客户端请求指向的主机无效时, 将交
由默认的虚拟主机处理, 默认为localhost。

defaultHost指向默认主机,在其内部配置

9. Host

Host 元素用于配置一个虚拟主机

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        ...
      </Host>

主机Host配置的信息
1) name: 当前Host通用的网络名称, 必须与DNS服务器上的注册信息一致。 Engine中
包含的Host必须存在一个名称与Engine的defaultHost设置一致。

2) appBase: 当前Host的应用基础目录, 当前Host上部署的Web应用均在该目录下
(可以是绝对目录,相对路径)。默认为webapps。

3) unpackWARs: 设置为true, Host在启动时会将appBase目录下war包解压为目
录。设置为false, Host将直接从war文件启动。

4) autoDeploy: 控制tomcat是否在运行时定期检测并自动部署新增或变更的web应
用。

通过给Host添加别名,我们可以实现同一个Host拥有多个网络名称,配置如下:

<Host name="www.web1.com" appBase="webapps" unpackWARs="true"
	autoDeploy="true">
	<Alias>www.web2.com</Alias>
</Host>

这个时候,我们就可以通过两个域名访问当前Host下的应用(需要确保DNS或hosts中添
加了域名的映射配置)

Context标签

Context 用于配置一个Web应用,默认的配置如下:

<Context docBase="myApp" path="/myApp">
	....
</Context>
<Host name="localhost"  appBase="webapps"
    unpackWARs="true" autoDeploy="true">
    <!-- 配置context -->
    <Context docBase="myApp" path="/myApp"></Context>
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

1) docBase:Web应用目录或者War包的部署路径。可以是绝对路径,也可以是相对于
Host appBase的相对路径。

2) path:Web应用的Context 路径。如果我们Host名为localhost, 则该web应用访问
的根路径为: http://localhost:8080/myApp。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您解释一下 Tomcat 配置文件 server.xml 的详细内容。 Tomcatserver.xml 是一个核心配置文件,它用于配置 Tomcat 服务器的基本设置和各种连接器。以下是 server.xml 文件的一些主要配置内容: 1. Server 元素:定义 Tomcat 服务器的全局设置,如 HTTP 端口、AJP 端口、最大线程数等。 2. Service 元素:定义 Tomcat 服务器中的服务,一个 Tomcat 可以有多个服务,每个服务可以包含多个连接器。 3. Connector 元素:定义 Tomcat 服务器中的连接器,包括 HTTP 连接器、AJP 连接器等。通过配置该元素可以指定连接器的端口、协议、编码等相关属性。 4. Engine 元素:定义 Tomcat 服务器中的引擎,一个 Tomcat 可以包含多个引擎,每个引擎可以包含多个虚拟主机。 5. Host 元素:定义 Tomcat 服务器中的虚拟主机,通过该元素可以配置虚拟主机的别名、主机名、应用程序等相关属性。 6. Context 元素:定义 Tomcat 服务器中的 Web 应用程序,通过该元素可以配置 Web 应用程序的部署路径、上下文路径、会话管理等相关属性。 除了上述主要元素外,server.xml 文件还包含一些其他配置内容,如 Realm 元素、Valve 元素、Listener 元素等,这些元素用于配置 Tomcat 服务器的一些扩展功能,如身份验证、日志记录、监听器等。 需要注意的是,修改 server.xml 文件可能会对 Tomcat 服务器的稳定性和安全性产生影响,因此在进行修改前应该备份该文件,并确保了解所做更改的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值