tomcat7的配置文件server.xml解析

这里对tomcat7的server.xml文件进行解释一下,方便在分析启动源码的时候理解Digester做的事情。

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
 <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 <Listener className="org.apache.catalina.security.SecurityListener" />
 <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">
  <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="150" minSpareThreads="4"/>

  <Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" />

  <Connector executor="tomcatThreadPool"
        port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" />

  <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
        maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
        clientAuth="false" sslProtocol="TLS" />

  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  <Engine name="Catalina" defaultHost="localhost">

   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

   <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.authenticator.SingleSignOn" />

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log." suffix=".txt"
        pattern="%h %l %u %t "%r" %s %b" />
   </Host>
  </Engine>
 </Service>
</Server>

Server

tomcat中Server代表一个tomcat实例,所以只会存在一个Server,而在配置文件中也是作为顶级元素出现,代码如下:

<Server port="8005" shutdown="SHUTDOWN">
。。。
</Server>
  1. port,监听shutdown命令的端口,-1表示禁用shutdown命令。
  2. shutdown,关闭tomcat的指令。

Listener

监听器,用来监听某些事件的发生。

代码如下:

<Listener className="org.apache.catalina.startup.VersionLoggerListener" />

VersionLoggerListener,启动时对tomcat,java,操作系统信息打印日志。

代码如下:

<Listener className="org.apache.catalina.security.SecurityListener" />

SecurityListener,启动tomcat时,做一些安全检查。

代码如下:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

AprLifecycleListener,用来监听Apache服务器相关的。

代码如下:

<Listener className="org.apache.catalina.core.JasperListener" />

JasperListener,Jasper 2 JSP 引擎,主要负责对更新之后的jsp进行重新编译。

代码如下:

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

JreMemoryLeakPreventionListener,防止内存溢出的监听器。

代码如下:

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

GlobalResourcesLifecycleListener,初始化定义在元素GlobalNamingResources下的全局JNDI资源

代码如下:

<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

ThreadLocalLeakPreventionListener,防止ThreadLocal溢出监听器。

GlobalNamingResources

GlobalNamingResources定义Server的全局JNDI资源。可以为所有的引擎应用程序引用。

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

配置文件中定义了一个JNDI,名为UserDatabase,通过conf/tomcat-users.xml的内容,来得到一个用于授权用户的数据库,是一个内存数据库。

Service

<Service name="Catalina">
。。。
</Service>

Server下面可以有多个Service,Service下面有多个Connector和一个Engine。这里默认的Service名字为Catalina,下面有两个Connector:Http和AJP。

  1. name,Service显示的名称,名字必须唯一。

Connector

<Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />

上面是用来处理http请求的Connector。

  1. port,端口号8080。
  2. protocol,协议,http协议
  3. connectionTimeout,响应的最大等待时间,20秒
  4. redirectPort,ssl请求会重定向到8443端口
<Connector executor="tomcatThreadPool"
      port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />

上面是使用线程池,处理http请求。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
      maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
      clientAuth="false" sslProtocol="TLS" />

上面处理ssl请求,端口是8443。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

上面处理AJP请求,可以将tomcat和apache的http服务器一起运行。

Engine

Engine是容器,一个Service中只包含一个Engine:

<Engine name="Catalina" defaultHost="localhost">
...
</Engine>

Engine下面可以包含一个多或者多个Host。Engine从http请求的头信息中的主机名或者ip映射到真确的主机上。

  1. name,Engine的名字,需要唯一。
  2. defaultHost,默认主机名

Cluster

集群相关的配置。tomcat支持服务器集群,可以复制整个集群的回话和上下文属性,也可以部署一个war包到所有的集群上。

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

Realm

<Realm className="org.apache.catalina.realm.LockOutRealm">
 <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
     resourceName="UserDatabase"/>
</Realm>

Realm是一个包含user、password、role的数据库,Realm可以定义在任何容器中。这里通过外部资源UserDatabase进行认证。

Host

<Host name="localhost" appBase="webapps"
   unpackWARs="true" autoDeploy="true">

 <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
     prefix="localhost_access_log." suffix=".txt"
     pattern="%h %l %u %t "%r" %s %b" />
</Host>

Host虚拟主机,定义在Engine下面,一个Engine下面可以有多个Host,在一个Host下面可以有多个Context。

  1. name,虚拟主机的网络名称,必须有一个host的名字和Engine的defaulHost一样。
  2. appBase,虚拟主机应用的根目录,默认是webapps。
  3. unpackWARs,在webapps目录下的war文件是否应该解压。
  4. autoDeploy,值为true时,tomcat会定时检查appBase等目录,对新的web应用和Context描述文件进行部署。

Value

<Valve className="org.apache.catalina.authenticator.SingleSignOn" />

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="localhost_access_log." suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />

Value在这里是阀门的意思,可以拦截http请求,可以定义在任何容器中。

SingleSignOn 是单点登录,AccessLogValve是访问日志的记录。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 关于tomcat的server.xml里host节点配置的一些说明

    其实对这个一直搞不清楚,后来公司的网站遭遇与IIS进行整合,然后上面有几个应用需要进行配置,所以对tomcat的server.xml进行了一些深入的了解 Host的节点主要是起一个对域名解析到那个虚拟主机进行配置,其name属性即为访问的域名,默认是127.0.0.1,localhost以及本地Ip,当进行DNS指定之后,可以凭借域名对指定的虚拟主机进行访问. 里面的一些属性就不多讲了,看到单词基本上能明白什么意思. 然后就是context节点,这个节点主要是配置虚拟主机里的访问项目的,默认访问

  • 详述 tomcat 中的 server.xml 配置文件示例

    正文 1 前言 Tomcat 隶属于 Apache 基金会,是开源的轻量级 Web 应用服务器,使用非常广泛.server.xml是 Tomcat 中最重要的配置文件,server.xml的每一个元素都对应了 Tomcat 中的一个组件:通过对 XML 文件中元素的配置,可以实现对 Tomcat 中各个组件的控制.因此,学习server.xml文件的配置,对于了解和使用 Tomcat 至关重要. 本文将通过实例,介绍server.xml中各个组件的配置,并详细说明 Tomcat 各个核心组件的作

  • tomcat7的配置文件server.xml解析

    这里对tomcat7的server.xml文件进行解释一下,方便在分析启动源码的时候理解Digester做的事情. <?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener"

  • 基于tomcat配置文件server.xml详解

    1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可.其中大部分都采用了默认设置,只是在engine容器中添加了两个Host容器. <?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SH

  • 关于maven全局配置文件settings.xml解析

    目录 settings.xml有什么用? settings.xml文件位置 配置优先级 settings.xml元素详解 顶级元素概览 LocalRepository InteractiveMode UsePluginRegistry Offline PluginGroups Servers Mirrors Proxies Profiles Activation properties Repositories pluginRepositories ActiveProfiles settings.

  • springboot配置文件绑定实现解析

    这篇文章主要介绍了springboot配置文件绑定实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 先创建一个peron类,然后需要注解configurationProperties(prefix ="person")<br data-filtered="filtered">然后需要加一个@component<br data-filtered="filtered">

  • 关于JSP配置文件web.xml加载顺序详解

    一. 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<context-param>和<listener>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二. load-on-startup 元

  • tinyxml 常用的C++ XML解析器非常优秀

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译.这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树. DOM模型即文档对象模型,是将整个文档分成多个元素(如书.章.节.段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包

  • Spring解密之XML解析与Bean注册示例详解

    为什么开始看spring的源码 半路转行写代码快一年半了,从开始工作就在使用spring框架,虽然会用,会搭框架,但是很多时候不懂背后的原理,比如:spring是怎样控制事务的,springmvc是怎样处理请求的,aop是如何实现的...这让人感觉非常不踏实,那就开始慢慢边看书边研究spring的源码吧!!! 怎样高效的看源码 我的答案是带着具体的问题去看源码,不然非常容易陷入源码细节中不能自拔,然后就晕了,最后你发现这看了半天看的是啥玩意啊. 引言 Spring是一个开源的设计层面框架,解决了

  • Spring的初始化和XML解析的实现

    前言 Spring是什么?它是一个应用程序框架,为应用程序的开发提供强大的支持,例如对事务处理和持久化的支持等:它也是一个bean容器,管理bean对象的整个生命周期,维护bean的各种存在状态,例如bean对象的实例化.销毁.bean的单实例和多实例状态等. Spring作为Java发展史上不可忽视的存在,说他重新定义了Java也不为过.它功能强大,着实为日常开发提供了大大的便利.表面越简单的东西,背后越复杂. 从本章节开始,我们一起分析Spring的源码,看它到底是怎么样来实现我们常说常用的

  • 这一次搞懂Spring的XML解析原理说明

    前言 Spring已经是我们Java Web开发必不可少的一个框架,其大大简化了我们的开发,提高了开发者的效率.同时,其源码对于开发者来说也是宝藏,从中我们可以学习到非常优秀的设计思想以及优雅的命名规范,但因其体系庞大.设计复杂对于刚开始阅读源码的人来说是非常困难的.所以在此之前首先你得下定决心,不管有多困难都得坚持下去:其次,最好先把设计模式掌握熟练:然后在开始阅读源码时一定要多画UML类图和时序图,多问自己为什么要这么设计?这样设计的好处是什么?还有没有更好的设计?当然,晕车是难免的,但还是

随机推荐