Tomcat服务器的server.xml解读

<?xml version="1.0" encoding="UTF-8"?>

<Server>:定义 Tomcat 服务器的顶级元素,包含一个或多个 <Service> 元素。

在最外层有一个<Server>元素,shutdown属性表示关闭Server的指令; port属性表示Server接收shutdown指令的端口号,设为-1可以禁掉该端口。
Server的主要任务,就是提供一个接口让客户端能够访问到这个Service集合,同时维护它所包合的所有的Sevice的声明周期,包括如何初始化、如何结束服务、如何找到客户端要访问的Service。

<Server port="8005" shutdown="SHUTDOWN">

<Listener>:定义一个监听器,用于监听 Tomcat 服务器的事件,如应用程序启动、关闭等。

  <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>:定义一个 Tomcat 服务,通常包含一个或多个 <Connector> 元素和一个 <Engine> 元素。

Service的作用,是在Connector和Engine外面包了一层,把它们组装在一起,对外提供服务。一个Service可以包含多个Connector,但是只能包含一个Engine; 其中Connector的作用是从客户端接收请求,Engine的作用是处理接收进来的请求。Server中包含一个名称为“Catalina"”的Service。实际上,Tomcat可以提供多个Service不同的Service监听不同的端口。

  <Service name="Catalina">

<Connector>:定义 Tomcat 服务器监听的网络连接器,用于接收和处理客户端的请求。可以配置协议、端口号、SSL 加密等。

Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据: 然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine。

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

<Engine>:定义一个 Tomcat 引擎,用于处理接收到的请求。通常包含一个或多个 <Host> 元素。

Engine组件在Service组件中有且只有一个; Engine是Service组件中的请求处理组件。Engine组件从一个或多个Connector中接收请求并处理,并将完成的响应返回给Connector,最终传递给客户端。Engine、Hos和Context都是容器,但它们不是平行的关系,而是父子关系: Engine包含HoHost包含Context。name属性用于日志和错误信息,在整个Server中应该唯一。defaultHost属性指定了默认的host名称,当发往本机的请求指定的host名称不存在时,一律使用defaultHost指定的host进行处理:因此,defaultHost的值必须与Engine中的一个Host组件的name属性值匹配。

    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

<Host>:定义一个虚拟主机,用于处理特定域名或 IP 地址的请求。可以配置多个虚拟主机。

name属性指定虚拟主机的主机名,一个Engine中有且仅有一个Host组件的name属性与Engine组件的defaultHost属性相匹配;一般情况下,主机名需要是在DNS服务器中注册的网络名,但是Engine指定的defaultHost不需要。unpackWARs指定了是否将代表Web应用的WAR文件解压; 如果为true,通过解压后的文件结构运行该Web应用,如果为false,直接使用WAR文件运行Web应用。Host的autoDeploy和appBase属性,与Host内Web应用的自动部署有关; 此外,本例中没有出现的xmlBase和deployOnStartup属性,也与Web应用的自动部署有关。

      <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" />

<Context>:定义一个 Web 应用程序的上下文,包含了该应用程序的配置信息,如上下文路径、文档根目录、会话管理等。

Context元素代表在特定虚拟主机上运行的一个Web应用。在后文中,提到Context、应用或Web应用,它们指代的都是Web应用。每个Web应用基于WAR文件,或WAR文件解压后对应的目录(这里称为应用目录)。Context是Host的子容器,每个Host中可以定义任意多的Context元素。看server.xm配置文件中并没有出现Context元素的配置,这是因为,Tomcat开启了自动部署,Web应用没有在server.xml中配置静态部署,而是由Tomcat通过特定的规则自动部署。

        <!-- <Context docBase="E:\IdeaProjects\web_demo\src\main\webapp" path="/"/> -->

其他:

<Realm>:定义一个安全领域,用于进行用户认证和授权。可以配置多种类型的领域,如 JDBCRealm、JNDIRealm 等。

<Valve>:定义一个阀门,用于在请求处理的不同阶段执行特定的操作,如访问日志记录、IP 过滤等。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值