`
不能跑就走
  • 浏览: 71255 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat中server.xml简要说明

阅读更多
一:server.xml作用
server.xml 指挥着Tomcat的运行,它可以看作Tomcat的遥控器,Tomcat的运行
完全受它的控制。其主要完成两个目标:
(1) 提供Tomcat组件的初始配置;
(2) 说明 Tomcat的结构、含义,使得Tomcat通过实例化组件完成构建和启动。
二:server.xml中主要元素简要说明
(1) Server:顶层元素,代表整个Catalina Servlet容器,可包含一个或多个Service;
(2) Service:连接器元素,它由一个或者多个Connector 和一个Engine组成,负责处理所有Connector 所获得的客户请求。这些Connector 共享同一个Engine;
(3) Connector:实际和客户交互的组件。一个Connector 将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户;
(4) Engine:容器类元素,可以包含多个Virtual Host元素,每个虚拟主机都有一个域名。当Engine获得一个Connector 发出的Http请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host 来处理。Engine 有一个默认虚拟主机localhost,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理;
(5) Host:定义一个虚拟主机,每个虚拟主机都和某个DNS 相匹配。每个虚拟主机下
都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path。当Host获得一个请求时,将把该请求匹配到某个Context上,
然后把该请求交给该Context来处理。匹配的方法是“最长匹配”,path=""的Context
将成为该Host 的默认Context,所有无法和其他Context 的路径名匹配的请求都将最终和该默认Context 匹配。默认的虚拟主机localhost 的根目录appBase 指向webapps;
(6) Context:使用最频繁的元素,每个Context代表运行在虚拟主机上的一个应用。一
个Context对应于一个Web App,一个Web App由一个或者多个Servlet组成。Context
          在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml 和$WEBAPP_HOME/WEB-INF/web.xml 载入Servlet 类。当Context 获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类。如果找到,则执行该类,获得请求的回应,并返回;
(7) 嵌套类元素可以加到容器组件中,如Listener、Valve、Logger、Realm、Cluster 元
素。
三:一次访问Tomcat的处理过程
对于一次访问过程,主要有以下几个步骤,假设来自客户的请求为:http://localhost:8080
/test/index.jsp。
(1)请求被发送到本机端口8080,被在那里侦听的HTTP Connector 获得;
(2)Connector 把该请求交给它所在的Service 的Engine 来处理,并等待来自Engine
的回应;
(3)Engine获得请求localhost/test/ index.jsp,匹配它所拥有的所有虚拟主机Host;
(4)Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,
因为该Host被定义为当前Engine的默认主机);
(5)localhost Host获得请求/test/index.jsp,匹配它所拥有的所有Context;
(6)Host 匹配到路径为/test 的Context(如果匹配不到就把该请求交给路径名为""的
Context去处理);
(7)path="/test"的Context 获得请求/index.jsp,在它的mapping table 中寻找对应的
Servlet;
(8)Context匹配到URL PATTERN 为*.jsp的Servlet,对应于JspServlet类;
(9)HttpServletRequest对象和HttpServletResponse 对象,作为参数调用JspServlet的
doGet或doPost方法;
(10)Context把执行完了之后的HttpServletResponse 对象返回给Host;
(11)Host把HttpServletResponse对象返回给Engine;
(12)Engine把HttpServletResponse对象返回给Connector;
(13)Connector 把HttpServletResponse对象返回给客户浏览器。

Server元素:
     Server 定义了一个Tomcat 服务器,Server 启动后将在port定义的端口处处等待关闭命令,如果接收到“SHUTDOWN”字符串则关闭服务器。Server 元素包含一个或多个Service元素,并能包含Listener、Logger、ContextManager和GlobalNamingResources元素类型,但它不能做为任何元素的子元素。

Service元素:
    Service 元素由org.apache.catalina.Service 接口定义,它包含一个Engine 元素以及一个
或多个Connector 元素,这些Connector 元素共享同一个Engine元素。

Connector元素:
Connector 表示客户端和Service之间的连接。Tomcat 有两个典型的Connector,一个直
接侦听来自浏览器的http请求,一个侦听来自其他WebServer 的请求。

容器Engine
    每个Service 元素只能有一个Engine 元素,Engine 元素处理在同一个Service 中所有
Connector 元素接收到的客户请求,由org.apahce.catalina.Engine 接口定义。Engine 可以包
含元素Logger、Realm、Value和Host。
     下列元素可以嵌套在Engine元素中,但每种元素至多只能嵌套一次。
²Logger:配置一个logger,用来接收和处理Engine的所有日志消息,还包括与这个
Engine 相关的所有Connector 的消息。另外,Engine 还负责记录嵌套的所有Host
和Context的消息,除非被低层的Logger 配置覆盖。
²Realm:配置一个Realm,允许用户数据库以及用户的相关角色在所有的Host 和
Context之间共享,除非被低层的Realm配置覆盖。
²Valve:Catalina 会为该容器处理的所有请求创建访问日志。
²Listener:如果一个Java 对象需要知道Context什么时候启动、什么时候停止,可以
在这个对象中嵌套一个Listener 元素。该Listener 元素必须实现
org.apache.catalina.LifecycleListener 接口。在发生对应的生命期事件的时候,通知
该Listener。

Host元素
  Host元素由Host接口定义。一个Engine元素可以包含多个Host元素,每个Host元素
定义了一个虚拟主机,它包含了一个或多个Web 应用。在Host 元素中可以包含子元素
Logger、Realm、Valve和Context。
     主要属性
className       指定实现Host接口的类
name            定义虚拟主机的名字
appBase         指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于CATALINA_HOME 的相对目录,如果没有此项,则为默认值。
autoDeploy      热发布,如果此项设为true,表示Tomcat 服务处于运行状态时,
能够监测appBase 下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用
unpack          如果此项设置为true,表示把Web 应用的WAR 文件先展开为开放目录结构后再运行,如果设为false 将直接运行WAR 文件
alias 指定主机别名,可以指定多个别名。
liveDeploy      如果为true,则复制到该appBase 下的Web应用将被立即部署

容器Context
   Context表示一个Web应用程序,通常为WAR文件或一个目录。每个Context提供一
个指向放置Web项目的Tomcat的下属目录。Context 元素由Context 接口定义,是使用最频繁的元素。每个Context 元素代表了运行在虚拟主机上的单个Web 应用。一个Host 可以包含多个Context 元素,每个Web 应用有惟一的一个相对应的Context代表Web应用自身。Servlet容器为第一个Web 应用创建一个ServletContext对象。
主要属性
className            指定实现Context 的类
path                 指定访问Web 应用的URL 入口,应该写作"/myweb",表示此Web应用程序的url的前缀,这样请求的url 为http://localhost:8080/myweb
/****
reloadable            如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/classes 和Web-INF/lib目录CLASS 文件的改变。如果监视到有class文件被更新,服务器自动重新加载Web应用
cookies              指定是否通过Cookies来支持Session
useNaming           指定是否支持JNDI
分享到:
评论

相关推荐

    MeyboMail Web(Java) 邮件 群发源代码

    一、安装简要说明 1、安装JDK1.4.2以上版本(注意配置java_home路径) 2、安装tomcat 3、把本下载的全部程序文件拷贝到tomcat的webapps\ROOT目录下。 4、启动tomcat,在浏览器中输入http://localhost:8080/即可运行...

    Java 面试宝典

    1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 7 2、Java 有没有 goto? .......................................................................................................

    java面试题

    Hibernate源码中几个包的作用简要介绍 65 72. struts 66 72.1. struts 简介 66 72.2. STRUTS的应用(如STRUTS架构) 66 72.3. 请写出Struts的工作原理、工作机制 67 72.4. struts的处理流程。 67 72.5. Struts 2框架...

    TR069-OPENACS服务器搭建.doc

    TR069 Openacs服务器搭建 目录 一、安装JDK 3 二、安装MySQL数据库及驱动 5 三、JBOSS服务器 13 四、在ANT下编译ACS源码 16 五、在JBOSS中部署编译后的openacs项目 19 六、OPENACS操作简要手册 22 1 、CPE的设置 22 ...

    最新Java面试宝典pdf版

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    Java面试笔试资料大全

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    JAVA面试宝典2010

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    Java面试宝典-经典

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    Java面试宝典2012版

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、...

    java面试题大全(2012版)

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    java面试宝典2012

    5、说明生活中遇到的二叉树,用java实现二叉树 73 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 78 7、写一个Singleton出来。 81 8、递归算法题1 84 9、递归...

    Java面试宝典2012新版

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

Global site tag (gtag.js) - Google Analytics