Tomcat的server.xml配置文件解析

告别MATLAB依赖:手把手教你用Python实现GCC-PHAT时延估计(附完整代码与对比测试) 本文详细介绍了如何使用Python实现GCC-PHAT时延估计算法,替代传统的MATLAB依赖。通过完整的代码示例和性能对比测试,展示了Python在信号处理领域的强大能力,特别是在广义互相关和TDOA应用中的高效实现。文章还提供了实时音频处理和嵌入式部署的实用技巧,帮助工程师快速掌握这一关键技术。 阅读详情

原帖地址:http://blog.youkuaiyun.com/roderick2015/article/details/52749116,转载请注明。

  server.xml是我们配置和优化Tomcat时最重要的文件,Tomcat的几大核心组件都在这里配置,它上手容易,即食即用,见效快。对想要理解Tomcat原理的读者来说就更必不可少了,下面是它的标签结构。

<Server>
  <Service>
    <Connector/>
    <Engine>
      <Host>
      </Host>
    </Engine>
  </Service>
</Server>

  东西并不多,我们先弄清它的层次结构和关系,再讲配置就是水到渠成的事情了,结构图如下所示。

这里写图片描述

  我们由内往外分析,从图的右边Servlet开始看。

Wrapper
  在Tomcat中Servlet由Wrapper封装,为什么要封装呢?Servlet只是一个接口,但有好几种实现,比如做Web开发经常使用的HttpServlet和JSP页面都属于Servlet的不同实现(对JSP页面有疑惑的读者可以从JspPage接口开始了解),因此封装后就可以屏蔽差异化,统一处理了,这种方式在很多地方都有使用。我们可以在conf/web.xml里配置全局的Servlet(Wrapper),比如处理JSP的JspServlet。

Context
  往上一层的Context,代表应用程序,也就是我们放在webapps下的每个目录,对应着一个Context,比如开发中使用的ServletContext其实是Tomcat采用门面模式封装了Context后的ApplicationContextFacade。为啥用门面模式?把不需要的藏起来呗,你一个小应用要这么多干嘛。

Host
  Host表示站点,它还有另一个名字大家应该听过,叫虚拟主机。像Tomcat多虚拟主机配置,就是在Engine下配置多个Host,每个Host再指定不同的域名。站点怎么理解?它的默认指定路径是webapps,意思就是整个webapps里的东西就是一个站点,Context只是站点上的一个小应用。比如平时本地开发,默认是localhost域名,在webapps里放了个test子应用,那就是通过localhost/test访问。

Engine and Container
  Engine直译是引擎的意思,它可以添加多个Host进行管理,但Container只能有一个Engine,一个Service也只能有一个Container,所以这里是一对一的关系。说到Container,它可是Tomcat里容器的大哥大,我们看下下面这张结构图就清楚了。

这里写图片描述

  可以看到Engine、Host、Context和Wrapper都作为子容器继承自Container,其中ContainerBase提供默认实现。

Connector
  接下来是Connector,它负责处理Service的网络连接,还能把Socket转成Request和Response,当然最终传到Servlet中给咱使用也经过了门面模式的封装。

Server and Service
  Server是Tomcat的顶层容器,它可以启动多个Service。Service负责提供具体的服务,这里提一下配置多个Service和多个Host的区别,Host负责指定站点的目录和域名,如果你只是为了给多个域名部署不同的站点,那么配置多个Host就可以了,因为单个Engine中的Host是共享Connector的,所以监听的端口和协议都是一样的,如果你需要把站点发布在不同的端口上,那就添加多个Service。当然你也可以直接在单机部署多个Tomcat来实现,除非做负载均衡或者服务器内存比较大,需要分割给多个Tomcat以提高JVM垃圾回收的效率,否则不建议这么做。

  简单了解Tomcat层次结构和关系后,下面是Server.xml的配套注释。

<!-- 表示会在8005端口监听SHUTDOWN指令,收到则关闭Tomcat。为了安全可以设为-1来禁止该功能 -->
<Server port="8005" shutdown="SHUTDOWN">
  <!-- Server的监听器 -->
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- 监听JSP页面,比如我们在开发过程中,修改JSP页面后它会对页面重新编译,所以我们可以及时的看到页面变化。-->
  <Listener className="org.apache.catalina.core.JasperListener" />
  <!-- 监听JRE内存泄露-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- 全局 JNDI 资源配置 -->
  <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">

    <!--
      为Connector配置线程连接池,可以让多个Connector共享一个Executor,也可单个配置。
      下面的配置是最大线程数150,最小线程数4,这个线程数也不能乱配,一般是根据系统的
      core数和实际流量来定,可以通过测试来找到最优值,资源就这么多,线程开多了反而浪费资源。
      线程池配置默认是注释的,Tomcat会采用默认属性。     
    -->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->


    <!-- 表示监听8080端口,采用HTTP1.1协议,20秒请求超时,如果是SSL请求会重定向到8443端口,
    我这里加了个针对中文乱码的UTF-8编码。
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

    <!-- 如果需要指定Executor按以下配置-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <!-- 设置了默认的Host,当下面的Host匹配失败时,会使用该域名 -->
    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <!-- 指定域名为localhost,对应的站点目录是webapps,unpackWARs表示是否自动解压war文件,
           autoDeploy表示是否自动部署 -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- 这个Valve的作用是在logs目录下生成请求日志,不清楚的读者可以了解下Tomcat的Pipeline和Valve -->
        <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>

  配置文件中的Connector一共有三种运行模式:

  1.BIO模式
  也就是阻塞模式:即线程会干等你的处理结果,如果处理时间比较长,那这个线程就啥也干不了了,所以并发数一般就几百。

  2.Apr模式
  由Apache提供的运行时环境,并发处理优于BIO模式,但是比较复杂导致维护成本提高,而且得预装Apr和native。

  3.NIO模式
  使用的是JAVA的NIO处理,即同步非阻塞 IO,虽然不断询问会造成CPU浪费,但避免了阻塞从而提高并发。

  从Tomcat7开始,部署在Windows7或以上系统中默认使用Apr模式,可以在启动日志中查看,如下图所示。
这里写图片描述

  在Linux系统中,Tomcat8默认使用NIO模式,如果安装了Apr,会被AprLifecycleListener监听并自动使用Apr模式,无需配置。Tomcat7则使用的是BIO模式,如果想使用NIO模式,需要把< Connector />中的protocol改为org.apache.coyote.http11.Http11NioProtocol。

  单从Tomcat的默认最大连接数来看,BIO模式是200,NIO模式10000,APR模式8192。但并发处理能力还是需要根据实际情况和代码实现来决定,比如你的系统有很多处理较慢或是keep-alive的情况,使用BIO肯定就悲剧了,具体可以参考这篇帖子进一步学习,讲解的非常详细。

3.5.3以太网ETH TC8-PMA物理层测试 英文原版-OA_Automotive_Ethernet_ECU_TestSpecification_Layer_1_100BASE-T1_v3.0.pdf。PMA测试时各个测试项目所进入的测试模式不同,如TX_01对应测试模式1;TX_04对应测试模式5;例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。TX_07对应测试模式5;物理层测试主要分为两部分:IOP测试(包括链接时间,信号质量,线路诊断),PMA测试。 阅读详情

相关推荐

ArcMap学习笔记(三)地图数字化

地图数字化前言地图数字化实现步骤1.加载地形图2.新建要素图层3.开启编辑环境4.设置捕捉环境5.选择数字化图层6.数字化控制点7.数字化等高线8.数字化图幅边框9.保存数字化成果总结 前言 使用软件:ArcMap10.4.1中文版 如果出现侵权,请在评论留言,我会及时删除,谢谢。 地图数字化 空间数据采集(输入)是将现有的地图、外业观测成果、航空像片、遥感图片数据、文本资料等转换成GIS可以直接...

JayWang博客 1万+

Tomcat基本配置详解

Tomcat基本配置详解 1、Tomcat的启动与关闭 ​ Tomcat是基于Java开发的,所以在运行Tomcat是必须配置了jre (1)启动 在Tomcat的bin目录下startup.bat(windows下的)/startup.sh(Linux下的)脚本文件双击即可启动Tomcat。推荐使用cmd命令的形式运行这个脚本文件。 (2)关闭 在Tomcat的bin目录下shutdown.bat(windows下的)/shutdown.sh(Linux下的)脚本文件双击即可关闭Tomcat。推荐使用cm

ww741258963123的博客 5127

Verilog简易电梯控制系统(2层)

电梯处于1楼,按KEY3,LED3亮,电梯处于上行状态时,立刻按 KEY2,LED2亮,电梯继续运行至2楼,LED3灭;按KEY3,LED3亮,电梯处于上行状态时,立刻按 KEY0,LED0亮,电梯继续运行至2楼,LED3灭;电梯处于2楼,按KEY2,LED2亮,电梯处于下行状态时,立刻按 KEY3,LED3亮,电梯继续运行至1楼,LED2灭;电梯处于2楼,按KEY2,LED2亮,电梯处于下行状态时,立刻按 KEY1,LED1亮,电梯继续运行至1楼,LED2灭;电梯运行至2楼后LED1灭,2楼待机。

m0_54240221的博客 6952

tomcat 配置文件server.xml 详解 Connector Engine Host Context

目录 一 server.xml 1.1 server 配置 1.2 service 配置 1.3 Executor 1.4 Connector 配置 1.5 Engine 其他tocmat 文章 一 ...

weixin_30726161的博客 1321

计量经济学——事件研究法/事件分析法

计量经济学——事件研究法/事件分析法

weixin_46189461的博客 6752

OSNet代码解析(普通卷积,分组卷积,深度可分离卷积,OSblock组成)

文章目录普通卷积和分组卷积普通卷积和深度可分离卷积用深度可分离卷积(LightConv3x3)代替普通卷积(Conv3x3)减少参数OSBlock (bottleneck)OSNet OSNet之所以轻量(2.2M)在于网络浅,使用深度可分离卷积代替传统卷积,但是很有效 普通卷积和分组卷积 所谓分组卷积,就是右图的input features分成一组一组,如上图groups=3,那么输入的特征分成3组,每组有12/3=4的通道的特征参与输出。然后根据输出通道的维度,得到每组的输入特征要计算两次(6/3=2

Mr_DaYang的博客 9801

Tomcat的server.xml配置详解

Tomcat配置、Tomcat的server.xml,Tomcat部署多个war包,tomcat自动部署

糖拌西红柿 2815

MPU6050芯片 寄存器详解与配置指南(详解)

分频值越小,数据刷新越快(如分频值 = 0 时,刷新率 = 8kHz/1=8kHz)。功能:配置采样频率分频系数,控制 ADC 转换速度和数据刷新率。数据刷新率 = 陀螺仪输出时钟频率 /(1 + 分频值)

m0_74696257的博客 1420

Tomcat主配置文件(server.xml)详解

Tomcat主配置文件(server.xml)详解

Mortalz7 9466

DISM错误87详解:RestoreHealth选项无法识别的修复方法

DISM(部署映像服务和管理工具)是Windows系统维护与修复的核心命令行工具,常与SFC(系统文件检查器)配合使用,用于扫描和修复组件存储损坏、系统文件缺失等问题。在执行系统健康检查时,用户常会遭遇错误87,提示“未在此上下文中识别出restorehealth选项”。该错误的本质并非工具损坏,而是命令参数结构不符合DISM的语法解析规则,或当前系统环境(如Windows 7、WinRE/PE、32位环境)不支持该参数。理解DISM的命令层级、参数挂载关系以及运行上下文,是精准排除故障的前提。通过核对标准

weixin_34116482的博客 467

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

平台:基本常用平台包括安卓,苹果(max和IOS),Windows64,Linux都行。10. 注意,如果从移动设备浏览器连接服务,信令服务器的SSL证书一定要先设好。想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方法和实例。8. 打开电脑浏览器,地址栏输入http://127.0.0.1,点击Receiver Sample。新建Unity项目,模板选Third Person,Project Name随意。启动App,控制台出现如下信息表示成功。

每日出拳老爷子的博客 2518

tomcat server.xml 配置详解[转]

元素名 属性 解释 server port 指定一个端口,这个端口负责监听关闭tomcat的请求 shutdown 指定向端口发送的命令字符串 service name 指定service的名字 Connector(表示客户端和service之间的连接) ...

kalogen的专栏 845

SpringCloud详细教程(下)

SpringCloud详细教程,springcloud完全教程。Springcloud微服务教程(上)的姊妹篇:介绍了其它SpringCloud组件。

鸟哥哥的专栏 4万+

Tomcat配置文件server.xml解析

本文翻译自Tomcat官方文档,主要介绍Tomcat安装目录中conf/server.xml配置文件中各元素、属性的含义,希望通过本文可以使大家更好地理解Tomcat的工作原理。

kobemin的博客 1393

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java解析Tomcat配置文件server.xml

        因为工作缘故,需要对Tomcat配置文件server.xml进行解析,导出层级关系到数据库,查找相关资料,再加上在同事的帮助下,解决了这个问题,代码如下:package com.test; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.Lis...

Yuruiyu的博客 1534

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Tomcat(三)Tomcat配置文件Server.xml解析

Tomcat配置文件Server.xml解析一 核心的解析逻辑1.1 parseServerXml二 XML文件解析方法2.1 预加载DOM树2.2 事件机制的SAX三 Digester3.1 Digester基本架构3.2 Digester解析XML文档的流程3.3 使用流程四 Digester解析xml示例 一 核心的解析逻辑 Catalina的load方法中,完成了server.xml的解析,将server.xml配置的Server、Service、Connector、Engine、Host各组件

weixin_42242792的博客 1287

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Tomcat server.xml配置文件解析

Tomcat conf/server.xml 配置文件解析: 顶级元素:Server、Service: &lt;Server&gt;是整个配置文件的根元素,而&lt;Service&gt;表示一组与引擎关联的连接器。 Executors:执行器表示可以在Tomcat中的组件之间共享的线程池。历史上,每个创建的连接器都有一个线程池,但这允许您在(主要)连接器和其他组件之间共享一个线程池,当这些...

bokeUser的博客 341

Tomcat server.xml 配置文件源码解析及工作原理分析

server.xml文件是Tomcat的主要配置文件,用于定义Tomcat服务器的结构和行为。该文件采用XML格式,包含了Tomcat的核心组件的配置信息。通过修改server.xml文件,用户可以自定义Tomcat服务器的行为,如调整端口号、配置虚拟主机、启用SSL等。server.xml文件是Tomcat的核心配置文件,定义了Tomcat服务器的结构和行为。通过深入理解server.xml文件的配置项和工作原理,我们可以更好地掌握Tomcat的配置和优化技巧,从而提升Tomcat服务器的性能和稳定性。

weixin_39033358的博客 932

tomcat配置文件web.xml与server.xml解析--重要

Web.xml里主要的内容:   关于servlet的定义:         default                   org.apache.catalina.servlets.DefaultServlet                             debug             0

li758568825的专栏 3225

深度解析tomcat核心配置文件server.xml

前言 对于tomcat,大家都应该很熟悉,哪怕你是一个小白,也应该略知一二。在日常开发中我们一般都是用tomcat来进行部署测试的,tomcat是属于apache的一个轻量级的应用服务器,tomcat本身涉及的底层技术有很多,大家有兴趣可以深入研究一下。这里主要是和大家一起学习一下tomcat的核心配置文件server.xml。之所以说它是tomcat的核心配置文件,因为tomcat中的组件都是

爱琴孩的博客 2776

tomcat服务器配置文件,tomcat7的配置文件server.xml解析

这里对tomcat7的server.xml文件进行解释一下,方便在分析启动源码的时候理解Digester做的事情。type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDa...

weixin_42169971的博客 662

详解 Tomcat 配置文件 server.xml以及请求解析过程

前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛。server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制。因此,学习server.xml文件的配置,对于了解和使用Tomcat至关重要。 本文将通过实例,介绍serv

norujeynie的博客 423

Tomcat的服务器配置文件server.xml解析

徐进 327

Tomcat服务器配置文件server.xml的配置解析及Context的配置(网上文档的学习整理)

server.xml配置文件解析 以下是这个文件中的基本配置信息: server: port 指定一个端口,这个端口负责监听关闭tomcat的请求 shutdown 指定向端口发送的命令字符串 service: name 指定service的名字 Connector (表示客户端和service之间的连接) port 指定服务器端要创建的端

liuhaolzjtu的专栏 - 学而不思则罔,思而不学则殆。 1210

接收多个文件和参数_Tomcat配置文件server.xml解析与应用

在Tomcat架构初识介绍了Tomcat的架构,其中主要包括了服务器(server)、服务(service)、连接器(connector)、引擎(engine)、主机(host)、上下文(context)等组件以及它们之间的从属关系。那么这些组件在哪里进行定义了?1.server.xml文件的作用server.xml文件中各元素对应着Tomcat架构中各个组件,通过修改xml文件中的元素配置信息,...

weixin_39952190的博客 433
上一篇: 聊聊设计模式 — 观察者模式
下一篇: 深入浅出ClassLoader
Roderick2015
博客等级 码龄10年 9粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值