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;

  • 相关阅读:
    Java实现 LeetCode 56 合并区间
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
  • 原文地址:https://www.cnblogs.com/qin1993/p/12049636.html
Copyright © 2011-2022 走看看