精华内容
下载资源
问答
  • tomcat配置文件详解

    千次阅读 2020-08-11 17:19:15
    tomcat-users.xml运维常用配置文件1. 整体结构2. 元素分类 目录结构及作用 查看目录: [root@localhost tomcat]# ls bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES ...

    目录结构及作用

    查看目录:

    [root@localhost tomcat]# ls
    bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
    
    
    • bin :脚本文件目录。
    • conf:存放配置文件,最重要的是server.xml。
    • logs:存放日志文件。
    • lib :仅对所有WEB APP可见,对TOMCAT不可见(使用Shared类加载器加载)。
    • temp:Tomcat运行时候存放临时文件用的。
    • webapps:web应用发布目录。
    • work:Tomcat把各种由jsp生成的servlet文件放在这个目录下。删除后,启动时会自动创建。
      在这里插入图片描述

    tomcat配置文件

    [root@localhost tomcat]# cd conf/
    [root@localhost conf]# ls
    Catalina  catalina.policy  catalina.properties  context.xml  jaspic-providers.xml  jaspic-providers.xsd  logging.properties  server.xml  tomcat-users.xml  tomcat-users.xsd  web.xml
    
    

    Tomcat 的配置文件由4个 xml 文件构成,context.xml、web.xml、server.xml、tomcat-users.xml

    1. context.xml

    Context.xml 是 Tomcat 公用的环境配置,tomcat 服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

    服务一旦启动,在去修改server.xml,就得需要重新加载配置文件,或者重新启动服务来加载文件。 而context.xml的优势是无需重启。 所以我们一般会在这个文件中独立配置。

    2. web.xml

    Web应用程序描述文件,都是关于是Web应用程序的配置文件。所有Web应用的 web.xml 文件的父文件。

    3. server.xml

    server.xml是对tomcat的设置,可以设置端口号,添加虚拟机这些的,是对服务器的设置

    4. tomcat-users.xml

    Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Manager也成为了使用非常普遍的功能应用。
    Tomcat Manager的用户配置是在Tomcat安装目录/conf/tomcat-users.xml文件中进行管理的

    运维常用配置文件

    作为运维用的最多的还是server.xml,同一台服务器部署多tomcat时,修改此文件端口别冲突就可以
    vim server.xml

    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      the License.  You may obtain a copy of the License at
    
          http://www.apache.org/licenses/LICENSE-2.0
      distributed under the License is distributed on an "AS IS" BASIS,
      limitations under the License.
     -->
     ### 上面一堆说的是你可以通过上买的那个网址获得授权的副本, 与咱们没关系,就相当于个声明
    <Server port="8005" shutdown="SHUTDOWN">
      -->
      #### 关闭使用的端口
      <!--APR library loader. Documentation at /docs/apr.html -->
      <Listener className="org.apache.catalina.core.JasperListener" />
    
      <!-- Global JNDI resources   
           Documentation at /docs/jndi-resources-howto.html
      -->
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  pathname="conf/tomcat-users.xml" />
           Documentation at /docs/config/service.html
       -->
      <Service name="Catalina">
      ### 定义service组件,用来关联executor和engine
    
        <!--
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="150" minSpareThreads="4"/>
             and responses are returned. Documentation at :
        <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000"
                   redirectPort="8443" />
        <!-- A "Connector" using the shared thread pool-->
        <!--
        <Connector executor="tomcatThreadPool"
                   port="8080" protocol="HTTP/1.1"
             documentation -->
        <!--
                   clientAuth="false" sslProtocol="TLS" />
        -->
    
    
    
             on to the appropriate Host (virtual host).
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
        -->
        <Engine name="Catalina" defaultHost="www.zmkjedu.com">
    
          <!--For clustering, please take a look at documentation at:
              /docs/cluster-howto.html  (simple how to)
              /docs/config/cluster.html (reference documentation) -->
          -->
               via a brute-force attack -->
          <Realm className="org.apache.catalina.realm.LockOutRealm">
                 resources under the key "UserDatabase".  Any edits
                 available for use by the Realm.  -->
                   resourceName="UserDatabase"/>
          </Realm>
    
          <Host name="www.zmkjedu.com"  appBase="/web"
    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      the License.  You may obtain a copy of the License at
    
          http://www.apache.org/licenses/LICENSE-2.0
      distributed under the License is distributed on an "AS IS" BASIS,
      limitations under the License.
     -->
    <Server port="8005" shutdown="SHUTDOWN">
      -->
      <!--APR library loader. Documentation at /docs/apr.html -->
      <Listener className="org.apache.catalina.core.JasperListener" />
    
      <!-- Global JNDI resources
           Documentation at /docs/jndi-resources-howto.html
      -->
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  pathname="conf/tomcat-users.xml" />
           Documentation at /docs/config/service.html
       -->
      <Service name="Catalina">
    
        <!--
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    126             unpackWARs="true" autoDeploy="true">
    127 
    128         <!-- SingleSignOn valve, share authentication between we    b applications
    129              Documentation at: /docs/config/valve.html -->
    130         <!--
    131         <Valve className="org.apache.catalina.authenticator.Sing    leSignOn" />
    132         -->
    133 
    134         <!-- Access log processes all example.
    135              Documentation at: /docs/config/valve.html
    136              Note: The pattern used is equivalent to using patte    rn="common" -->
    137         <Valve className="org.apache.catalina.valves.AccessLogVa    lve" directory="logs"
    138                prefix="localhost_access_log." suffix=".txt"
    139                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    140 
    141       </Host>
    142     </Engine>
    143   </Service>
    144 </Server>
    
    
    

    1. 整体结构

     1  <Server>
     2   <Service>
     3         <Connector />
     4         <Connector />
     5         <Engine>
     6             <Host>
     7                 <Context />
     8             </Host>
     9         </Engine>
    10     </Service>
    11 </Server>
    
    

    2. 元素分类

    元素分为4类
    1)顶层元素:和

    元素是整个配置文件的根元素,元素则代表一个Engine元素以及一组与之相连的Connector元素。

    (2)连接器:

    代表了外部客户端发送请求到特定Service的接口;同时也是外部客户端从特定Service接收响应的接口。

    (3)容器:

    容器的功能是处理Connector接收进来的请求,并产生相应的响应。Engine、Host和Context都是容器,但它们不是平行的关系,而是父子关系:Engine包含Host,Host包含Context。一个Engine组件可以处理Service中的所有请求,一个Host组件可以处理发向一个特定虚拟主机的所有请求,一个Context组件可以处理一个特定Web应用的所有请求。

    (4)内嵌组件:可以内嵌到容器中的组件。实际上,Server、Service、Connector、Engine、Host和Context是最重要的最核心的Tomcat组件,其他组件都可以归为内嵌组件。

    展开全文
  • Tomcat配置文件

    千次阅读 2019-11-17 16:42:15
    Tomcat配置文件由4个 xml 文件组成,分别是 context.xml、web.xml、server.xml、tomcat-users.xml 文件组成。

    常见的web服务器

    1.Apache是世界使用排名的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。 Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

    2.IIS(Internet Information Server)。它是微软公司主推的服务器。IIS的特点具有:安全性,强大,灵活。

    3.Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。

    4.Lighttpd:是由德国人 Jan Kneschke 领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。

    5.Zeus:是一个运行于Unix下的非常的Web 服务器,据说性能超过Apache,是效率的Web 服务器之一。

    常见的java web服务器:

    1. JBoss: JBoss是一种遵从JavaEE规范的、开放源代码、纯Java的EJB服务器,对于J2EE有很友好的支持。JBoss采用JML API实现软件规模的集成与管理,其核心服务是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可以和Tomcat完美结合。
    2. WebSphere: WebSphere是IBM公司的产品,可进一步细分为 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server 是基于Java 的应用环境,可以运行于 Sun Solaris、Windows NT 等多种操作系统平台,用于建立、部署和管理Internet和Intranet Web应用程序。
    3. WebLogic:是BEA公司的产品,可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic 支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择。
    4. Tomcat:目前最为流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet技术的Web服务器,开源免费,中小型项目和初学者开发JSP应用的首选。
    5. Resin: Resin是Caucho公司的产品,是一个非常流行的支持JSP和Servlet的服务器,速度非常快。Resin本身包含了一个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态内容的能力也毫不逊色,因此许多网站都是使用Resin服务器构建的。
    6. Jetty:Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器。

    1.Tomcat 目录结构

    /bin:脚本文件目录。
    /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载)。
    /conf:存放配置文件,最重要的是server.xml。
    /logs:存放日志文件。
    /server/webapps:来管理Tomcat-web服务用的。仅对TOMCAT可见,对所有的WEB APP都不可见(使用Catalina类加载器加载)。
    /shared/lib:仅对所有WEB APP可见,对TOMCAT不可见(使用Shared类加载器加载)。
    /temp:Tomcat运行时候存放临时文件用的。
    /webapps:web应用发布目录。
    /work:Tomcat把各种由jsp生成的servlet文件放在这个目录下。删除后,启动时会自动创建。

    Tomcat 的配置文件由4个 xml 文件组成,分别是 context.xml、web.xml、server.xml、tomcat-users.xml 文件组成。

    1.context.xml文件:

    1.Tomcat service级别
    /conf/context.xml
    2.host级别
    /webapps/host-manager/META-INF/context.xml
    3.webApp 级别
    /webapps/manager/META-INFcontext.xml

    2. web.xml文件

    Web应用程序描述文件,都是关于是Web应用程序的配置文件。所有Web应用的 web.xml 文件的父文件。

    2.1.description,display-name,icon

    项目描述 对项目做出描述.
    项目名称 定义项目的名称.
    icon元素包含small-icon和large-icon两个子元素.用来指定web站台中小图标和大图标的路径.

        <small-icon>/路径/smallicon.gif</small-icon>small-icon元素应指向web站台中某个小图标的路径,大小为16 X 16 pixel,但是图象文件必须为GIF或JPEG格式,扩展名必须为:.gif或 .jpg.
    
        <large-icon>/路径/largeicon-jpg</large-icon> large-icon元素应指向web站台中某个大图表路径,大小为32 X 32 pixel,但是图象文件必须为GIF或JPEG的格式,扩展名必须为; gif 或jpg.
    

    2. 2.context-param

    元素含有一对参数名和参数值,用作应用的servlet上下文初始化参数。参数名在整个Web应用中必须是惟一的。 context-param 元素用来设定web应用的环境参数(context),它包含两个子元素: param-name和param-value. 参数名称 设定Context名称 值 设定Context名称的值

    2. 3 <listener

    为web应用程序定义监听器,监听器用来监听各种事件,比如:application和session事件,所有的监听器按照相同的方式定义,功能取决去它们各自实现的接口,常用的Web事件接口有如下几个:
    (1). ServletContextListener:用于监听Web应用的启动和关闭;
    (2). ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变;
    (3). ServletRequestListener:用于监听用户的请求;
    (4). ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变;
    (5). HttpSessionListener:用于监听用户session的开始和结束;
    (6). HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变。
    主要用于监听Web应用事件,其中有两个比较重要的WEB应用事件:应用的启动和停止(starting up or shutting down)和Session的创建和失效(created or destroyed)。应用启动事件发生在应用第一次被Servlet容器装载和启动的时候;停止事件发生在Web应用停止的时候。Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候。为了使用这些Web应用事件做些有用的事情,我们必须创建和使用一些特殊的“监听类”。它们是实现了以下两个接口中任何一个接口的简单java类:javax.servlet.ServletContextListener或javax.servlet.http.HttpSessionListener,如果想让你的类监听应用的启动和停止事件,你就得实现ServletContextListener接口;想让你的类去监听Session的创建和失效事件,那你就得实现HttpSessionListener接口。

    2. 4. Filter

    可认为是Servle的一种“加强版”,主要用于对用户请求request进行预处理,也可以对Response进行后处理,是个典型的处理链。使用Filter的完整流程是:Filter对用户请求进行预处理,接着将请求HttpServletRequest交给Servlet进行处理并生成响应,最后Filter再对服务器响应HttpServletResponse进行后处理。Filter与Servlet具有完全相同的生命周期,且Filter也可以通过来配置初始化参数,获取Filter的初始化参数则使用FilterConfig的getInitParameter()。
    分四种:
    1、request过滤器
    2.常见应用场合:
    (1)认证Filter
    (2)日志和审核Filter
    (3)图片转换Filter
    (4)数据压缩Filter
    (5)密码Filter
    (6)令牌Filter
    (7)触发资源访问事件的Filter
    (8)XSLT Filter
    (9)媒体类型链Filter
    Filter可负责拦截多个请求或响应;一个请求或响应也可被多个Filter拦截。创建一个Filter只需两步:
    (1) 创建Filter处理类
    Filter必须实现javax.servlet.Filter接口,在该接口中定义了三个方法:
    (1) void init(FilterConfig config):用于完成Filter的初始化。FilteConfig用于访问Filter的配置信息。
    (2) void destroy():用于Filter销毁前,完成某些资源的回收。
    (3) void doFilter(ServletRequest request,ServletResponse response,FilterChain chain):
    实现过滤功能的核心方法,该方法就是对每个请求及响应增加额外的处理。该方法实现对用户请求request进行预处理,也可以实现对服务器响应response进行后处理—它们的分界线为是否调用了chain.doFilter(request,response),执行该方法之前,即对用户请求request进行预处理,执行该方法之后,即对服务器响应response进行后处理

    (2) Web.xml文件中配置Filter

    2. 5. 标签

    Servlet是个特殊的java类,继承于HttpServlet。客户端通常只有GET和POST两种请求方式,Servlet为了响应则两种请求,必须重写doGet()和doPost()方法。大部分时候,Servlet对于所有的请求响应都是完全一样的,此时只需要重写service()方法即可响应客户端的所有请求。

    HttpServlet有两个方法:
    (1). init(ServletConfig config):创建Servlet实例时,调用该方法的初始化Servlet资源。
    (2). destroy():销毁Servlet实例时,自动调用该方法的回收资源。
    通常无需重写init()和destroy()两个方法,除非需要在初始化Servlet时,完成某些资源初始化的方法,才考虑重写init()方法,如果重写了init()方法,应在重写该方法的第一行调用super.init(config),该方法将调用HttpServlet的init()方法。如果需要在销毁Servlet之前,先完成某些资源的回收,比如关闭数据库连接,才需要重写destory方法()。

    Servlet的生命周期:
    创建Servlet实例有两个时机:
    (1). 客户端第一次请求某个Servlet时,系统创建该Servlet的实例,大部分Servlet都是这种Servlet。
    (2). Web应用启动时立即创建Servlet实例,即load-on-start Servlet。
    每个Servlet的运行都遵循如下生命周期:
    (1). 创建Servlet实例。
    (2). Web容器调用Servlet的init()方法,对Servlet进行初始化。
    (3). Servlet初始化后,将一直存在于容器中,用于响应客户端请求,如果客户端发送GET请求,容器调用Servlet的doGet()方法处理并响应请求;如果客户端发送POST请求,容器调用Servlet的doPost()方法处理并响应请求。或者统一使用service()方法处理来响应用户请求。
    (4). Web容器决定销毁Servlet时,先调用Servlet的destory()方法,通常在关闭Web应用时销毁Servlet实例。
    .2 Servlet配置:
    为了让Servlet能响应用户请求,还必须将Servlet配置在web应用中,配置Servlet需要修改web.xml文件。从Servlet3.0开始,配置Servlet有两种方式:
    (1). 在Servlet类中使用@WebServlet Annotation进行配置。
    (2). 在web.xml文件中进行配置。
    我们用web.xml文件来配置Servlet,需要配置和。用来声明一个Servlet。、和元素的用法和的用法相同。元素与元素具有相同的元素描述符,可以使用子元素将初始化参数名和参数值传递给Servlet,访问Servlet配置参数通过ServletConfig对象来完成,ServletConfig提供如下方法:
    java.lang.String.getInitParameter(java.lang.String name):用于获取初始化参数
    ServletConfig获取配置参数的方法和ServletContext获取配置参数的方法完全一样,只是ServletConfig是取得当前Servlet的配置参数,而ServletContext是获取整个Web应用的配置参数。
    (1). 、和
    1). :为Servlet指定一个文本描述。
    2). :为Servlet提供一个简短的名字被某些工具显示。
    3). :为Servlet指定一个图标,在图形管理工具中表示该Servlet。
    (2). 、和元素
    必须含有和,或者和。 描述如下:
    1). 用来定义servlet的名称,该名称在整个应用中必须是惟一的。
    2). 用来指定servlet的完全限定的名称。
    3). 用来指定应用中JSP文件的完整路径。这个完整路径必须由/开始。
    (3).
    如果load-on-startup元素存在,而且也指定了jsp-file元素,则JSP文件会被重新编译成Servlet,同时产生的Servlet也被载入内存。的内容可以为空,或者是一个整数。这个值表示由Web容器载入内存的顺序。
    举个例子:如果有两个Servlet元素都含有子元素,则子元素值较小的Servlet将先被加载。如果子元素值为空或负值,则由Web容器决定什么时候加载Servlet。如果两个Servlet的子元素值相同,则由Web容器决定先加载哪一个Servlet。1表示启动容器时,初始化Servlet。
    (4).
    含有和
    1). :Servlet的名字,唯一性和一致性,与元素中声明的名字一致。
    2). :指定相对于Servlet的URL的路径。该路径相对于web应用程序上下文的根路径。将URL模式映射到某个Servlet,即该Servlet处理的URL。
    (5). 加载Servlet的过程
    容器的Context对象对请求路径(URL)做出处理,去掉请求URL的上下文路径后,按路径映射规则和Servlet映射路径()做匹配,如果匹配成功,则调用这个Servlet处理请求。
    9.3DispatcherServlet在web.xml中的配置:

    business org.springframework.web.servlet.DispatcherServlet publishContext false 1 配置Spring MVC,指定处理请求的Servlet,有两种方式: (1). 默认查找MVC配置文件的地址是:/WEB-INF/${servletName}-servlet.xml (2). 可以通过配置修改MVC配置文件的位置,需要在配置DispatcherServlet时指定MVC配置文件的位置。 我们在平台项目两个工程中分别使用了不同的配置方式,介绍如下: (1). 在business-client工程中按照默认方式查找MVC的配置文件,配置文件目录为: /WEB-INF/business-servlet.xml。工程目录结构如下所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191120003535208.png) (2).在public-base-server工程中,通过第2种方式进行配置,把spring-servlet.xml放到src/main/resources/config/spring-servlet.xml,则需要在配置DispatcherServlet时指定标签。具体代码如下: spring org.springframework.web.servlet.DispatcherServlet publishContext false contextConfigLocation classpath:config/spring-servlet.xml 1 工程目录结构如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191120003554359.png) 其中,classpath是web项目的类路径,可以理解为classes下面。因为无论这些配置文件放在哪,编译之后如果没有特殊情况的话都直接在classes下面。jar包的话虽然放在lib文件夹里,但实际上那些类可以直接引用,比如:com.test.ABC,仿佛也在classes下面一样。 在我们的工程里,经过验证,maven工程这两个路径经过编译后生成的文件都位于classes目录下,即这两个路径相当于类路径,在下面创建config文件夹(folder),然后创建自定义的xml配置文件即可。 classpath和classpath*区别:同名资源存在时,classpath只从第一个符合条件的classpath中加载资源,而classpath*会从所有的classpath中加载符合条件的资源。classpath*,需要遍历所有的classpath,效率肯定比不上classpath,因此在项目设计的初期就尽量规划好资源文件所在的路径,避免使用classpath*来加载。 9.4 ContextLoaderListener和DispatcherServlet初始化上下文关系和区别: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191120003510447.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW55aXhpbjEyMTczOA==,size_16,color_FFFFFF,t_70) 从上图可以看出,ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,一般如:DAO层、Service层Bean;DispatcherServlet初始化的上下文加载的Bean是只对Spring MVC有效的Bean,如:Controller、HandlerMapping、HandlerAdapter等,该初始化上下文只加载Web相关组件。 注意:用户可以配置多个DispatcherServlet来分别处理不同的url请求,每个DispatcherServlet上下文都对应一个自己的子Spring容器,他们都拥有相同的父Spring容器(业务层,持久(dao)bean所在的容器)。 ## 2. 6 . ```xml index.html ``` 如果在第一个元素中没有找到指定的文件,Web容器就会尝试显示第二个,以此类推。 ## 2. 7. error-page 可以错误码或者异常,返回错误页面。

    3 执行顺序

    listener->Filter->servlet.

    参考:

    1.https://blog.csdn.net/titan_max/article/details/52462447
    2.https://blog.csdn.net/ahou2468/article/details/79015251

    展开全文
  • tomcat-users.xml运维常用配置文件讲解1. 整体结构2. 元素分类总结 目录结构及作用 查看目录: [root@gaosh-1 apache-tomcat-7.0.79]# ls bin lib logs RELEASE-NOTES temp work conf LICENSE NOTICE RUNNING.txt ...

    目录结构及作用

    查看目录:

    [root@gaosh-1 apache-tomcat-7.0.79]# ls
    bin   lib      logs    RELEASE-NOTES  temp     work
    conf  LICENSE  NOTICE  RUNNING.txt    webapps
    
    
    • bin :脚本文件目录。
    • conf:存放配置文件,最重要的是server.xml。
    • logs:存放日志文件。
    • lib :仅对所有WEB APP可见,对TOMCAT不可见(使用Shared类加载器加载)。
    • temp:Tomcat运行时候存放临时文件用的。
    • webapps:web应用发布目录。
    • work:Tomcat把各种由jsp生成的servlet文件放在这个目录下。删除后,启动时会自动创建。

    懒得画图,从网上找了一张图,很直观:
    在这里插入图片描述

    tomcat配置文件

    [root@gaosh-1 conf]# ls
    Catalina context.xml tomcat-users.xml
    catalina.policy logging.properties web.xml
    catalina.properties server.xml
    [root@gaosh-1 conf]#

    Tomcat 的配置文件由4个 xml 文件构成,context.xml、web.xml、server.xml、tomcat-users.xml

    1. context.xml

    Context.xml 是 Tomcat 公用的环境配置,tomcat 服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

    服务一旦启动,在去修改server.xml,就得需要重新加载配置文件,或者重新启动服务来加载文件。 而context.xml的优势是无需重启。 所以我们一般会在这个文件中独立配置。

    2. web.xml

    Web应用程序描述文件,都是关于是Web应用程序的配置文件。所有Web应用的 web.xml 文件的父文件。

    3. server.xml

    server.xml是对tomcat的设置,可以设置端口号,添加虚拟机这些的,是对服务器的设置

    4. tomcat-users.xml

    Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Manager也成为了使用非常普遍的功能应用。
    Tomcat Manager的用户配置是在Tomcat安装目录/conf/tomcat-users.xml文件中进行管理的

    运维常用配置文件讲解

    作为运维用的最多的还是server.xml,我们先来探讨这个文件

    vim server.xml

    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      the License.  You may obtain a copy of the License at
    
          http://www.apache.org/licenses/LICENSE-2.0
      distributed under the License is distributed on an "AS IS" BASIS,
      limitations under the License.
     -->
     ### 上面一堆说的是你可以通过上买的那个网址获得授权的副本, 与咱们没关系,就相当于个声明
    <Server port="8005" shutdown="SHUTDOWN">
      -->
      #### 关闭使用的端口
      <!--APR library loader. Documentation at /docs/apr.html -->
      <Listener className="org.apache.catalina.core.JasperListener" />
    
      <!-- Global JNDI resources   
           Documentation at /docs/jndi-resources-howto.html
      -->
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  pathname="conf/tomcat-users.xml" />
           Documentation at /docs/config/service.html
       -->
      <Service name="Catalina">
      ### 定义service组件,用来关联executor和engine
    
        <!--
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="150" minSpareThreads="4"/>
             and responses are returned. Documentation at :
        <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000"
                   redirectPort="8443" />
        <!-- A "Connector" using the shared thread pool-->
        <!--
        <Connector executor="tomcatThreadPool"
                   port="8080" protocol="HTTP/1.1"
             documentation -->
        <!--
                   clientAuth="false" sslProtocol="TLS" />
        -->
    
    
    
             on to the appropriate Host (virtual host).
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
        -->
        <Engine name="Catalina" defaultHost="www.zmkjedu.com">
    
          <!--For clustering, please take a look at documentation at:
              /docs/cluster-howto.html  (simple how to)
              /docs/config/cluster.html (reference documentation) -->
          -->
               via a brute-force attack -->
          <Realm className="org.apache.catalina.realm.LockOutRealm">
                 resources under the key "UserDatabase".  Any edits
                 available for use by the Realm.  -->
                   resourceName="UserDatabase"/>
          </Realm>
    
          <Host name="www.zmkjedu.com"  appBase="/web"
    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      the License.  You may obtain a copy of the License at
    
          http://www.apache.org/licenses/LICENSE-2.0
      distributed under the License is distributed on an "AS IS" BASIS,
      limitations under the License.
     -->
    <Server port="8005" shutdown="SHUTDOWN">
      -->
      <!--APR library loader. Documentation at /docs/apr.html -->
      <Listener className="org.apache.catalina.core.JasperListener" />
    
      <!-- Global JNDI resources
           Documentation at /docs/jndi-resources-howto.html
      -->
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  pathname="conf/tomcat-users.xml" />
           Documentation at /docs/config/service.html
       -->
      <Service name="Catalina">
    
        <!--
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    126             unpackWARs="true" autoDeploy="true">
    127 
    128         <!-- SingleSignOn valve, share authentication between we    b applications
    129              Documentation at: /docs/config/valve.html -->
    130         <!--
    131         <Valve className="org.apache.catalina.authenticator.Sing    leSignOn" />
    132         -->
    133 
    134         <!-- Access log processes all example.
    135              Documentation at: /docs/config/valve.html
    136              Note: The pattern used is equivalent to using patte    rn="common" -->
    137         <Valve className="org.apache.catalina.valves.AccessLogVa    lve" directory="logs"
    138                prefix="localhost_access_log." suffix=".txt"
    139                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    140 
    141       </Host>
    142     </Engine>
    143   </Service>
    144 </Server>
    
    
    1. 整体结构
     1  <Server>
     2   <Service>
     3         <Connector />
     4         <Connector />
     5         <Engine>
     6             <Host>
     7                 <Context />
     8             </Host>
     9         </Engine>
    10     </Service>
    11 </Server>
    
    2. 元素分类

    元素分为4类
    1)顶层元素:和

    元素是整个配置文件的根元素,元素则代表一个Engine元素以及一组与之相连的Connector元素。

    (2)连接器:

    代表了外部客户端发送请求到特定Service的接口;同时也是外部客户端从特定Service接收响应的接口。

    (3)容器:

    容器的功能是处理Connector接收进来的请求,并产生相应的响应。Engine、Host和Context都是容器,但它们不是平行的关系,而是父子关系:Engine包含Host,Host包含Context。一个Engine组件可以处理Service中的所有请求,一个Host组件可以处理发向一个特定虚拟主机的所有请求,一个Context组件可以处理一个特定Web应用的所有请求。

    (4)内嵌组件:可以内嵌到容器中的组件。实际上,Server、Service、Connector、Engine、Host和Context是最重要的最核心的Tomcat组件,其他组件都可以归为内嵌组件。

    总结

    东西实在太多,快6000字了还没写完,感觉才写了20%。 后面会拆分成一个个小的模块来详细讲解。

    展开全文
  • Tomcat配置文件详解

    千次阅读 2018-07-12 14:20:38
    Server.xml配置文件说明,以及Tomcat组件的说明Tomcat服务器是由一系列可以配置的组件构成,其中核心组件是Catalina Servlet,它是最顶层组件Tomcat各组件是在server.xml(CATALINA_HOME\conf\server.xml)配置的。...

    Server.xml配置文件说明,以及Tomcat组件的说明

    Tomcat服务器是由一系列可以配置的组件构成,其中核心组件是Catalina Servlet,它是最顶层组件
    Tomcat各组件是在server.xml(CATALINA_HOME\conf\server.xml)配置的。

    Tomcat各组件关系图

    1.Server

    Server即Catalina Servlet组件,它是server.xml的最外层元素

    常用属性

    • Address—Tomcat监听shutdown命令的地址,默认为localhost
    • className—指定实现org.apache.catalina.Server接口的类,默认值为org.apache.catalina.core.StandardServer
    • port-Tomcat监听shutdown命令的端口。设置为-1,则禁止通过端口关闭Tomcat,同时shutdown.bat也不能使用
    • shutdown-通过指定的地址(Address)、端口(port)关闭Tomcat所需的字符串。修改shutdown的值,对shutdown.bat无影响

    通过端口关闭Tomcat,可以用telnet进行测试
    安装telnet
    打开控制面板-程序-启用或关闭Windows功能,勾上”Telnet服务器”、”Telnet客户端”,点”确定”

    安装成功后,首先启动Tomcat,然后在cmd下输入telnet localhost 8005,然后输入SHUTDOWN即可关闭Tomcat

    2.Listener

    Listener即监听器,负责监听特定的事件,当特定事件触发时,Listener会捕捉到该事件,并做出相应处理。Listener通常用在Tomcat的启动和关闭过程。Listener可嵌在Server、Engine、Host、Context内
    常用属性:
    className-指定实现org.apache.catalina.LifecycleListener接口的类

    3.GlobalNamingResources

    GlobalNamingResources用于配置JNDI

    4.Service

    Service包装Executor、Connector、Engine,以组成一个完整的服务
    常用属性:
    className—指定实现org.apache.catalina. Service接口的类,默认值为org.apache.catalina.core.StandardService
    name—Service的名字
    Server可以包含多个Service组件

    5.Executor

    Executor即Service提供的线程池,供Service内各组件使用
    常用属性:
    className-指定实现org.apache.catalina. Executor接口的类,默认值为org.apache.catalina.core. StandardThreadExecutor
    name-线程池的名字
    daemon-是否为守护线程,默认值为true
    maxIdleTime-总线程数高于minSpareThreads时,空闲线程的存活时间(单位:ms),默认值为60000,即1min
    maxQueueSize-任务队列上限,默认值为Integer.MAX_VALUE(2147483647),超过此值,将拒绝
    maxThreads-线程池内线程数上限,默认值为200
    minSpareThreads-线程池内线程数下限,默认值为25
    namePrefix-线程名字的前缀。线程名字通常为namePrefix+ threadNumber
    prestartminSpareThreads-是否在Executor启动时,就生成minSpareThreads个线程。默认为false
    threadPriority-Executor内线程的优先级,默认值为5(Thread.NORM_PRIORITY)
    threadRenewalDelay-重建线程的时间间隔。重建线程池内的线程时,为了避免线程同时重建,每隔threadRenewalDelay(单位:ms)重建一个线程。默认值为1000,设置为负则不重建

    6.Connector

    Connector是Tomcat接收请求的入口,每个Connector有自己专属的监听端口
    Connector有两种:HTTP Connector和AJP Connector
    常用属性:
    port-Connector接收请求的端口
    protocol-Connector使用的协议(HTTP/1.1或AJP/1.3)
    connectionTimeout-每个请求的最长连接时间(单位:ms)
    redirectPort-处理http请求时,收到一个SSL传输请求,该SSL传输请求将转移到此端口处理
    executor-指定线程池
    如果没设置executor,可在Connector标签内设置maxThreads(默认200)、minSpareThreads(默认10)
    acceptCount-Connector请求队列的上限。默认为100。当该Connector的请求队列超过acceptCount时,将拒绝接收请求

    7.Engine

    Engine负责处理Service内的所有请求。它接收来自Connector的请求,并决定传给哪个Host来处理,Host处理完请求后,将结果返回给Engine,Engine再将结果返回给Connector
    常用属性:
    name-Engine的名字
    defaultHost-指定默认Host。Engine接收来自Connector的请求,然后将请求传递给defaultHost,defaultHost 负责处理请求
    className-指定实现org.apache.catalina. Engine接口的类,
    默认值为org.apache.catalina.core. StandardEngine
    backgroundProcessorDelay-Engine及其部分子组件(Host、Context)调用backgroundProcessor方法的时间间隔。backgroundProcessorDelay为负,将不调用backgroundProcessor。
    backgroundProcessorDelay的默认值为10
    注:Tomcat启动后,Engine、Host、Context会启动一个后台线程,定期调用backgroundProcessor方法。backgroundProcessor方法主要用于重新加载Web应用程序的类文件和资源、扫描Session过期
    jvmRoute-Tomcat集群节点的id。部署Tomcat集群时会用到该属性,
    Service内必须包含一个Engine组件
    Service包含一个或多个Connector组件,Service内的Connector共享一个Engine

    8.Host

    Host负责管理一个或多个Web项目
    常用属性:
    name-Host的名字
    appBase-存放Web项目的目录(绝对路径、相对路径均可)
    unpackWARs-当appBase下有WAR格式的项目时,是否将其解压(解成目录结构的Web项目)。设成false,则直接从WAR文件运行Web项目
    autoDeploy-是否开启自动部署。设为true,Tomcat检测到appBase有新添加的Web项目时,会自动将其部署
    startStopThreads-线程池内的线程数量。Tomcat启动时,Host提供一个线程池,用于部署Web项目
    startStopThreads为0,并行线程数=系统CPU核数
    startStopThreads为负数,并行线程数=系统CPU核数+startStopThreads,如果(系统CPU核数+startStopThreads)小于1,并行线程数设为1
    startStopThreads为正数,并行线程数= startStopThreads
    startStopThreads默认值为1
    startStopThreads为默认值时,Host只提供一个线程,用于部署Host下的所有Web项目。如果Host下的Web项目较多,由于只有一个线程负责部署这些项目,因此这些项目将依次部署,最终导致Tomcat的启动时间较长。此时,修改startStopThreads值,增加Host部署Web项目的并行线程数,可降低Tomcat的启动时间
    Tomcat配置多Host可参考此文:http://grass51.blog.51cto.com/4356355/1123400

    9.Context

    Context代表一个运行在Host上的Web项目。一个Host上可以有多个Context
    将一个Web项目(D:\MyApp)添加到Tomcat,在Host标签内,添加Context标签


    常用属性:
    path-该Web项目的URL入口。path设置为””,输入http://localhost:8080即可访问MyApp;path设置为”/test/MyApp”,输入http://localhost:8080/test/MyApp才能访问MyApp
    docBase-Web项目的路径,绝对路径、相对路径均可
    (相对路径是相对于CATALINA_HOME\webapps)
    reloadable-设置为true,Tomcat会自动监控Web项目的/WEB-INF/classes/和/WEB-INF/lib变化,当检测到变化时,会重新部署Web项目。reloadable默认值为false。通常项目开发过程中设为true,项目发布的则设为false
    crossContext-设置为true,该Web项目的Session信息可以共享给同一host下的其他Web项目。默认为false

    10.Cluster

    Tomcat集群配置。(见Tomcat 8(三)Apache2.2.25+Tomcat8.0.3集群配置和Tomcat 8(四)server.xml的Cluster标签详解)

    11.Realm

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

    12.Valve

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

    最后再来回顾一下Tomcat处理请求的流程图

    (request为http://localhost:8080/examples/index.html)

    展开全文
  • Tomcat的端口号为8080,在Tomcat安装目录下的conf/server.xml文件中进行修改,server.xml文件中有三个端口号,分别是shutdown的端口号8005,http服务端口号8080,ajp协议端口号8009。 8005:负责监听关闭Tomcat请求...
  • Tomcat系列1-配置文件

    千次阅读 2019-05-07 19:11:15
    tomcat配置文件目录是conf目录,主要配置文件有5个,下面一个个分析下。 1.context.xml Context.xml是Tomcat公用的环境配置,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新...
  • tomcat常用配置注释

    千次阅读 2018-04-28 15:19:50
    指定Tomcat容器的URL编码格式。 disableUploadTimeout="true" 上传时是否使用超时机制 enableLookups="false"--是否反查域名,默认值为true。为了提高处理能力,应设置为false com...
  • tomcat常用配置

    万次阅读 2018-01-24 22:37:42
    这里我们使用tomcat版本:apache-tomcat-7.0.77-windows-x64.zip 为例: 下载链接地址为:https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.77/bin/apache-tomcat-7.0.77-windows-x64.zip 点击下载:点击...
  • Tomcat配置文件service.xml

    千次阅读 2019-03-02 15:00:43
    tomcat的所有配置文件都在tomcat的conf目录下,有以下配置文件: 目录 一、每个配置文件的说明: 二、service.xml 一、每个配置文件的说明: 1. catalina.policy 包含由java Security Manager 实现的安全.....
  • Tomcat 8(一)Tomcat常用配置

    万次阅读 2014-03-02 12:04:35
    操作系统:win8 Jdk版本:1.7.0_51 Jdk目录:C:\Program Files\Java\jdk...Tomcat目录:D:\Program Files\apache-tomcat-8.0.3 Tomcat 8下载地址:http://tomcat.apache.org/download-80.cgi 注:Tomcat 8需要J
  • tomcat常用配置详解

    千次阅读 2016-07-21 10:28:47
    1 目录结构 ... /conf:存放配置文件,最重要的是server.xml。  /logs:存放日志文件。  /server/webapps:来管理Tomcat-web服务用的。仅对TOMCAT可见,对所有的WEB APP都不可见(使用Catalina类加载器
  • Tomcat server.xml 文件配置详解!

    千次阅读 2020-09-24 11:59:23
    server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制。因此,学习server.xml文件的配置,对于了解和使用...
  • Tomcat配置文件server.xml详解

    千次阅读 2019-01-08 10:23:25
    Tomcat作为常用的java容器,是运维人员必须掌握的内容,而其配置文件是重中之重。本文将通过实例,介绍server.xml中各个组件的配置,并详细说明Tomcat各个核心组件的作用以及各个组件之间的相互关系。
  • 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改CATALINAHOME/conf/server.xml文件为如下内容即可,本文的tomcat安装在/usr/local/tomcat下,因此‘CATALINA_HOME/conf/server....
  • 1.前一段时间在自己的云服务器上部署了个tomcat服务器并部署了项目,Tomcat的http请求端口还是使用的8080端口,并开放了外网访问权限,这样在安全性上可能存在漏斗,特此想着修改下Tomcat端口 并学习下tomcat的运行原理....
  • Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class StaticResourceConfig implements WebMvcConfigurer { ...
  • 常用配置文件 /server/tomcat/conf/server.xml /server/tomcat/bin/catalina.sh /server/java/jdk1.7.0_51/jre/lib/logging.properties 二.关闭catalina.out输出的方法 1.catalina.sh(参考文章:...
  • tomcat加载应用程序配置文件顺序

    万次阅读 2015-07-13 14:26:46
    对于三大框架,例如ssh或ssm,在tomcat容器启动时配置文件加载顺序是?  针对这样的疑问,我大概知道每个项目的加载都是从web.xml开始的,所以我们以下面的配置文件为例,说明加载过程,我的项目web.xml配置文件...
  • Tomcat配置文件入门

    万次阅读 2009-11-23 14:23:00
    tomcat读取配置文件 首先简单说一下tomcat是如何读取配置文件的。tomcat在启动时,首先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。 最...
  • 一、Eclipse 常用配置 (1)WorkSpace 工作空间编码格式 (2)JSP 编码格式 (3)字体大小和样式设置 (4)编辑区背景设置 (5)修改Java提示 Java的自动提示功能默认只有“.”才会提示,修改之后...
  • Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理...
  • 1.在浏览器输入http://localhost:8080/,打开Tomcat自带的默认主页面,右侧有“administration”“documentation”等模块。选择“administration”下面的Tomcat Manager,提示需要输入用户名和密码。 2.在不知道...
  • tomcat 配置文件server.xml详解

    千次阅读 2018-05-25 17:42:31
    server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制。因此,学习server.xml文件的配置,对于了解和使用...
  • web应用程序通过Tomcat等容器启动时,会首先加载web.xml文件,通常我们工程中的各种配置文件,如日志、数据库、spring的文件等都在此时被加载,下面是两种常用配置文件加载路径,即配置文件可以放到 SRC目录下或者...
  • tomcat7配置

    千次阅读 2016-02-19 18:00:40
    这段时间折腾了哈java web应用的压力测试,部署容器是tomcat 7。期间学到了蛮多散碎的知识点,及时梳理总结,构建良好且易理解的知识架构把它们组织起来,以备忘。 对web应用开发者来说,我们很关心应用可同时处理...
  • springboot中tomcat配置

    千次阅读 2020-01-05 09:27:45
    springboot默认会帮我们配置tomcat,...我们可以在application.properties文件自定义tomcat配置。 如下: #tomcat配置 server.port=8081 server.error.path=/error server.servlet.context-path=/myweb server.se...
  • tomcat服务器的Server.xml配置详解

    万次阅读 多人点赞 2018-09-10 11:07:37
    Server.xml是tomcat一个重要的配置文件,下面结合网上看到的和自己使用经验来做的总结,有什么不对的希望各位大佬明确指出,小弟不胜感激。 server.xml实例: 一: 1、最外层是<server></server>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,482
精华内容 44,192
关键字:

tomcat常用配置文件