1 Tomcat常用配置

Tomcat常用配置

  • Tomcat常用配置
    • webxml
    • contextxml
    • tomcat-usersxml
    • serverxml 详解
      • Server 元素
      • Listener
      • GlobalNamingResources
      • Service 元素
      • Executor
      • Connector 元素
      • Engine 元素
      • Host 元素
      • Context 元素
      • Cluster
      • Realm
      • Valve
    • 配置实例
      • confserverxml 配置文件
      • conftomcat-usersxml配置文件

Tomcat依赖server.xml文件来启动server,一个Tomcat实例,核心就是启动容器Catalina。

Tomcat部署Webapp时,依赖context.xml和web.xml来部署Web应用。实际上,在部署任何一个webapp时,Tomcat自带的context.xml以及web.xml都会生效,同时webapp自带的META-INF/context.xml和WEB-INF/web.xml也会定义每个webapp的特定行为。

web.xml

context.xml

所有host下Context的默认配置信息;默认配置如下:

    <Context>
        <WatchedResource>WEB-INF/web.xmlWatchedResource>
    Context>

tomcat-users.xml

Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;

server.xml 详解

conf/server.xml 是 Servlet/JSP 容器 Tomcat 的主要配置文件,使用 XML 的方式描述了 WebApp 的运行方式。

在 server.xml 中的元素(element)和属性(properties)是区分大小写的,并且支持 Apache Ant 方式的变量替换(Apache Ant-style variable substitution)。在配置文件中还支持以 propnamepropnameDJVM CATALINA_BASE/conf/catalina.properties file 文件中的变量。

server.xml 元素包含四大类:

  1. 顶层类元素 - 是根元素, 表示一组与一个 有关的连接器。
  2. 连接器类元素 - ,客户端和容器类元素的通讯接口。
  3. 容器类元素 - 、 和 ,处理客户请求并且生成响应结果。
  4. 嵌套类元素 - 、 和 ,可以加入到容器中的元素。

文件结构:

    <Server>
        <Listener />
        <GlobaNamingResources>GlobaNamingResources
        <Service>
            <Executor />
            <Connector />
            <Engine>
                <Cluster />
                <Realm />
                <Realm />
                   <Host>
                       <Valve />
                       <Context />
                   Host>
            Engine>
        Service>
    Server>

Server 元素

是 Tomcat 实例的顶层元素,由 org.apache.catalina.Server 接口定义,它可以包含一个或多个 元素,并且不能做为任何元素的子元素。一个 是一个提供完整JVM的独立组件,它可以代表整个容器,但它本身不是一个容器,不可以定义 之类的子组件。

属性说明:

属性 说明
port 指定一个端口,这个端口负责监听关闭 Tomcat 的请求
shutdown 向以上端口发送的关闭服务器的命令字符串,通常为 SHUTDOWN
address omcat监听shutdown命令的地址,默认为localhost
className 指定实现org.apache.catalina.Server接口的类,默认值为org.apache.catalina.core.StandardServer

对于一个已经开启的 Tomcat 服务器,可以在 cmd 下使用 telnet localhost 8005 命令进行连接,然后输入 SHUTDOWN 命令就可以关闭服务器。

Listener

Listener即监听器,负责监听特定的事件,当特定事件触发时,Listener会捕捉到该事件,并做出相应处理。Listener通常用在Tomcat的启动和关闭过程。Listener可嵌在Server、Engine、Host、Context内。

常用属性:

属性 说明
className 指定实现org.apache.catalina.LifecycleListener接口的类

GlobalNamingResources

GlobalNamingResources用于配置JNDI。

Service 元素

Service包装Executor、n个Connector、1个Engine,Connector获取request,Engine处理request。Server可以包含多个Service组件

属性说明:

属性 说明
name 的名称
className 指定实现org.apache.catalina.Service接口的类,默认值为org.apache.catalina.core.StandardService

Executor

Executor即Service提供的线程池,供Service内各组件使用,特别是Connector组件。

Connector 元素

是直接与用户交互的组件,负责接受用户请求和向客户返回响应结果。

属性说明:

属性 说明
port 所监听的端口。在浏览器中可以通过输入 url:port 的方式提交给对应的 。因为浏览器的默认端口是 80,所以如果把 的 port 设成 80 的话,可以直接使用 url 进行访问,不用在后边再跟一个端口号。
protocol 设定 Http 协议,默认是 HTTP/1.1。
minThreads 服务器启动时创建的处理用户请求的线程数。
maxThreads 可以创建的最大的处理用户请求的线程数。
minSpareThreads 最小备用线程数。
maxSpareThreads 最大备用线程数。
acceptCount 当所有可以使用的处理请求的线程都被用光时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,而返回 Connection refused 错误。
redirectPort 服务器正在处理 http 请求时收到了一个 SSL 传输请求后重定向的端口号。(即当请求是 https 时,将它转发到的端口)。
enableLookups 如果为 true,表示支持域名解析,则可以在 web 应用中通过调用 request.getRemoteHost() 进行 DNS 查询来得到远程客户端的实际主机名;若为 false 则不进行 DNS 查询,而是返回其 ip 地址。默认值为 true。
connectionTimeout 等待超时的时间数(以毫秒为单位),如果为 -1 表示不限制客户连接的时间。

HTTP与AJP:

  • HTTP:监听browser发送的http请求;
  • AJP:其他WebServer(Apache)的servlet/jsp代理请求;

Engine 元素

它处理在同一个 中所有 元素接收到的客户请求。它匹配请求和自己的虚拟主机,并将请求发给对应的 处理,默认的主机是 localhost。

属性说明:

属性 说明
name engine的名称,对应目录 /conf/Catalina。
defaultHost 默认的处理请求的虚拟主机,至少与下面一个Host的name属性一样。对应 /conf/Catalina/localhost。
Debug 日志等级

Host 元素

一个 元素可以包含多个 元素,每个 元素定义一个虚拟主机,它包含一个或多个web应用。

属性说明:

属性 说明
name 虚拟主机名,对应目录 /conf/Catalina/localhost。
appBase 指定虚拟主机的目录,默认为 /webapps。它将请求 url 与该虚拟主机的 进行匹配,并把请求转给对应的 来处理。
Debug 日志等级。
autoDeploy 默认为 true,表示如果有新的 Web 应用放入 appBase 并且 Tomcat 在运行的情况下,自动载入应用。
unpackWARs 如果设置为 true,表示把war文件先展开再运行。如果为 false则直接运行 war 文件。

Context 元素

代表运行在虚拟主机上的单个 web 应用。一个 Host> 可以包含多个 元素。每个 web 应用有唯一个相对应的 代表 web 应用自身。

属性说明:

属性 说明
path Web应用名,在使用 url 访问 下的web应用时,通过 http://localhst/website 的形式。其中 localhost 为上文所说的 的 name,而 website 就是这里的 path。也就是说当一具请求到来时, 先根据 host
docBase Web应用的具体存放路径
Debug 日志等级。
autoDeploy 默认为 true,表示如果有新的 web 应用放入 appBase 并且 Tomcat 在运行的情况下,自动载入应用。
unpackWARs 如果设置为 true,表示把 war 文件先展开再运行。如果为 false 则直接运行 war 文件。
reloadable 是否自动检测并重新部署Web项目( 设置为 true,Tomcat会自动监控Web项目的/WEB-INF/classes/和/WEB-INF/lib变化,当检测到变化时,会重新部署Web项目;reloadable默认值为 false:通常项目开发过程中设为true,项目发布的则设为false)

Cluster

Tomcat集群配置。

Realm

Realm可以理解为包含用户、密码、角色的”数据库”。Tomcat定义了多种Realm实现:

  • JDBC Database Realm
  • DataSource Database Realm
  • JNDI Directory Realm
  • UserDatabase Realm等

Valve

Valve可以理解为Tomcat的拦截器,而我们常用filter为项目内的拦截器。Valve可以用于Tomcat的日志、权限等。Valve可嵌在Engine、Host、Context内。

配置实例

conf/server.xml 配置文件

Server port="8005" shutdown="SHUTDOWN"> 
  <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="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
    <Engine name="Catalina" defaultHost="test.com"> 
     
    <Realm className="org.apache.catalina.realm.LockOutRealm"> 
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
               resourceName="UserDatabase"/> 
    Realm> 
    
      <Host name="test.com"  appBase="/web" unpackWARs="true" autoDeploy="true"> 
       
        <Alias>www.test.comAlias> 
         
        <Context path="" docBase="www/" reloadable="true" /> 
         
        <Context path="/bbs" docBase="/web/bbs" reloadable="true" /> 
         
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/www/logs" 
               prefix="www_access." suffix=".log" 
               pattern="%h %l %u %t "%r" %s %b" /> 
         
      Host> 
      <Host name="manager.test.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
       
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="172.23.136.*" /> 
         
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/bbs/logs" 
               prefix="bbs_access." suffix=".log" 
               pattern="%h %l %u %t "%r" %s %b" /> 
         
      Host> 
    Engine> 
  Service> 
Server> 

conf/tomcat-users.xml配置文件

     
    <tomcat-users> 
      <role rolename="manager-gui" /> 
       
      <user username="cz" password="manager$!!110" roles="manager-gui" /> 
       
    tomcat-users> 

Reference

你可能感兴趣的:(Tomcat,tomcat)