zoukankan      html  css  js  c++  java
  • tomcat: 配置文件server.xml

    一、概念

    tomcat属于apach基金会,是一个开源的轻量级web应用服务器。

    server.xml是tomcat的最重要的配置文件。

    server.xml里每一个元素对应了tomcat的一个组件,通过对server.xml元素的配置,可以实现对tomcat组件的控制。

    server.xml位于$TOMCAT_HOME/conf目录下。

    二、server.xml的整体结构与核心组件

    <Server>  根元素,代表整个tomcat容器,有一个或多个service元素,提供接口让客户端访问service,维护service
        <Service>  包装Connector和Engine, 一个service包含多个Connector和一个Engine;一个Tomcat的不同端口部署多个webapp,就有多个service
                  

                   <Executor name="aa" namePrefix="aa-exec-" maxThreads="400" minSpareThreads="10"/> // 最大线程数

            <Connector />   连接器,代表外部客户端与哪个service接口交互(接收请求),创建request和response对象,分配给Engine处理
            <Engine>   容器,处理连接器接收进来的请求并返回结果;处理service中的所有请求
                <Host>    处理一个特定虚拟主机的所有请求,运行多个web应用
                    <Context /><!-- 现在常常使用自动部署,不推荐配置Context元素,Context小节有详细说明 -->  
                     处理一个特定web应用的所有请求,在特定虚拟主机上运行一个web应用
                                   如果一个Tomcat的同一个端口上部署了多个webapp,有多个Context
                </Host>
            </Engine>
        </Service>
    </Server>

    三、例子

    <Server port="8005" shutdown="SHUTDOWN">  //tomcat监听的关闭端口
      <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" />          // https重定向端口
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> // 接收其他服务转发过来的端口
        <Engine name="Catalina" defaultHost="localhost">    name用于日志
          <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" />  // 可以向access日志加参数
          </Host>
        </Engine>
      </Service>
    </Server>

    四、自动部署

    1. 配置Host元素

    deployOnStartup属性为true时,在tomcat启动时自动部署

    autoDeploy属性为true时,tomcat在运行时定期检查新的web应用,或老的web应用的更新

    appBase属性指定web应用和war包所在的目录,通常是webapps

    xmlBase属性指定web应用的配置文件所在目录

    2. 检查web应用更新扫描顺序:xmlBase下的配置文件->appBase下的war包->appBase下的web应用

    3. 自动部署举例:tomcat部署完成之后可以访问8080端口

    五、如何确定请求由谁处理

    a. 根据协议和端口号,选定service和Engine;  通过配置多个service和端口号,可以访问同一台机器上的不同应用

    b. 根据域名或IP选定host

    c. 根据URI选定Context

    d. 例子:http://www.localhost:8080/app1/index.html

    六、部署多个应用

    1. 同一个Tomcat同一个端口下部署多个webapp

    a. 在webapps文件夹下,放入多个war包

    b. 修改server.xml文件,新增<Context>节点

    2. 同一个Tomcat的不同端口下,部署多个应用

    a. 在Tomcat路径下,与webapps统计目录下,新建一个文件夹webapps1

    b. 修改server.xml文件,新增<Service>节点

  • 相关阅读:
    a.default.ERROR.httpAjax is not a function
    Java heap space
    jmeter
    sql注入
    数据库查前三名
    maven
    国际化变现应用分析
    百度应用部署秘籍
    如何建立起一套有效的APP监控体系
    第三方舆情收集与质量闭环建设
  • 原文地址:https://www.cnblogs.com/june0816/p/9862431.html
Copyright © 2011-2022 走看看