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>节点

 

posted @ 2019-08-12 15:11  牧云文仔  阅读(316)  评论(0编辑  收藏  举报