zoukankan      html  css  js  c++  java
  • Tomcat server.xml

    原文链接:https://blog.csdn.net/nioqnw/article/details/86629102

    一.server.xml结构


    server.xml默认配置示例:

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

    <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.<Server>元素

    代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义,包含一个或多个<Service>元素。

    <Server port="8005" shutdown="SHUTDOWN">
    port:指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性必须设置。

    shutdown:指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置 。

    2.<Service>元素

    包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享同一个<Engine>元素。

    3.<Connector>元素

    接收客户端连接请求,创建Request和Response对象用于和请求端交换数据,然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine,通过配置Connector,可以控制请求Service的协议及端口号。

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    port:服务端监听的端口号,即客户请求的端口号;

    protocol:规定了请求协议;

    redirectPort:表示当请求是https时,重定向至端口号为8443的Connector;

    connectionTimeout:表示连接的超时时间,单位毫秒;

    minSpareThreads:表示Connector最小等待客户请求的线程数,每个请求由一个线程负责,默认10;

    maxThreads:表示此连接器要创建的请求处理线程的最大数量,即可以处理的最大并发请求数,默认200;

    maxConnections:表示服务器在任何给定时间接受和处理的最大连接数。当达到这个数字时,客户端请求会被放到请求队列,默认最大队列数为acceptCount参数值,BIO模式下默认为maxThreads,NIO模式下默认10000;

    acceptCount:maxConnections达到最大值即所有请求线程正在使用时,传入连接请求的最大队列长度, 当队列满时收到的任何请求都将被拒绝, 默认值为100。

    maxHeaderCount:允许的请求中的最大header数。 包含比指定限制更多的header的请求将被拒绝。 小于0表示无限制,默认值100。

    4.<Engine>元素

    Engine组件在Service组件中有且只有一个,Engine是Service组件中的请求处理组件,Engine组件从一个或多个Connector中接收请求并处理,并将完成的响应返回给Connector,最终传递给客户端。

    <Engine name="Catalina" defaultHost="localhost">
    name:属性用于日志和错误信息,在整个Server中应该唯一。

    defaultHost:属性指定了默认的host名称,当发往本机的请求指定的host名称不存在时,一律使用defaultHost指定的host进行处理,因此defaultHost的值,必须与Engine中的一个Host组件的name属性值匹配。

    5.<Host>元素

    Engine元素至少包含一个或多个Host元素.每个Host元素定义了一个虚拟主机,它可以包含一个或多个Web应用,其中一个Host的name必须与Engine组件的defaultHost属性相匹配。

    <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
    name:虚拟主机的名字。

    appBase:指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录, 如果此项没有设定,默认值为<CATALINA_HOME>/webapps。

    unpackWARs:如果此项设为true,表示将把Web应用的war文件先解压为开放目录结构后再运行.如果设为false,将直接运行war文件。

    autoDeploy:如果此项设为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用。

    另,在<Host>元素中可以包含如下的子元素: <Logger>,<Realm>,<Valve>,<Context>。

    6.<Context>元素

    每个Context元素代表了运行在虚拟主机上的单个Web应用,一个<Host>元素中可以包含多个<Context>元素。

    <Context path="/sample" docBase="sample" debug="0" reloadable="true">
    path:指定访问该Web应用的URL入口。

    docBase:指定Web应用的文件路径,可以为绝对路径,也可以为相对于Host的appBase属性的相对路径,如果Web应用采用开放目录结构,那就指定Web应用的根目录;如果Web应用是个WAR文件,那就指定WAR文件的路径。

    reloadable:如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/class和WEB-INF/lib目录下CLASS文件的改动,如果检测到有calss文件被更新,服务器会自动重新加载Web应用。

    三.Tomcat Server处理一个http请求的过程
    假设来自客户的请求为:http://localhost:8080/wsota/wsota_index.jsp
    1)  请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得;
    2)  Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应;
    3)  Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host;
    4)  Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机);
    5)  localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context;
    6)  Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理);
    7)  path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet;
    8)  Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类;
    9)  构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法;
    10) Context把执行完了之后的HttpServletResponse对象返回给Host;
    11) Host把HttpServletResponse对象返回给Engine;
    12) Engine把HttpServletResponse对象返回给Connector;
    13) Connector把HttpServletResponse对象返回给客户browser;

  • 相关阅读:
    PHP 反射 ReflectionClass
    go-字符串生成数据库字段
    grpc类型
    ubuntu安装zookeeper集群
    ubuntu安装JDK
    zookeeper分布式读写锁
    golang利用gob序列化struct对象保存到本地(转载)
    golang手动管理内存(转载)
    类json格式字符串打印
    研二寒假---关于Qt&CV曲线算法问题
  • 原文地址:https://www.cnblogs.com/qin1993/p/12049636.html
Copyright © 2011-2022 走看看