`
meiyx
  • 浏览: 181364 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat5启动流程与配置详解 3

阅读更多
4.3 org.apache.catalina.Container
    容器是用于从客户端取得请求(request)并且处理请求并回复给客户端(response)的对象。容器可以支持(可选)pipeline,以便能在运行时按配置的顺序处理请求。
    在Tomcat里面,容器在概念上存在以下几层:
-Engine-请求处理入口点,可以包含多个Host和Context。
-Host-代表一个虚拟主机。
-Context-代表单个ServletContext,可以包含多个Wrappers。
-Wrapper-代表单个Servlet,如果Servlet实现了SingleThreadModel,可以代表单个Servlet的多个实例。
    容器为了实现自己的功能经常要绑定一些其他组件,这些组件的功能可能被共享,也可以被单独定制,下面是被使用的组件:
-Loader-ClassLoader,装载Java Classes。
-Logger-实现了ServletContext的log方法,用于记录日志。
-Manage-管理与容器绑定的session池。
-Realm-用户安全管理。
-Resources-JNDI资源访问  4.4 org.apache.catalina. ContainerListener
    容器事件监听器,注意的是start,stop是正常的生命周期事件(LiftcycleEvent)不是容器事件。 4.5 org.apache.catalina. Pipeline
    Pipleline是Valve的集合,当invoke方法被调用时,它会按指定的顺序调用Valve,它总是要求有一个Valve必须处理传递的request(一般是最后一个)并产生response,否则就把request传递到下一个Valve。
    一般一个容器仅绑定一个Pipleline实例,一般说来容器会把处理request的功能封装到一个容器绑定的Valve里(这个Valve应该在 Pipleline最后被执行)。为了完成这个功能,Pipleline提供了setBasic()方法以保证Valve被最后执行,而其他Valve按顺序被调用。 4.6 org.apache.catalina.Valve
    Valve是被绑定在一个Container上的请求处理组件,一组Valve被按顺序绑定在一个Pipleline上。
    一个Valve可能按照一定的顺序执行下面的动作:
*1.检查并且(或者)修改指定的Request和Response属性。
*2.检查Request属性,生成相应的Response并返回控制权到调用者。
*3.检查Request和Reponse属性,包装这些对象并增强它们的功能,然后把它们传到下一个组件。
*4.如果相应的Response没有被产生(并且控制权也没有被返回)调用Pipleline上的下一个Valve(如果有)通过方法context.invokeNext()。
*5.检查(但不修改)Response属性(调用后面的Valve或Container产生的)。
    Valve一定不能作下面的事情:
*1. 改变Request的一些属性(Change request properties that have already been used to direct the flow of processing control for this request)。
*2.创建一个已经被创建并且已经被传递的Response。
*3.在调用invokeNext()方法并返回后修改包含Response的HTTP Header信息。
*4.在invokeNext()调用返回后在绑定Response上的输出流上作任何调用。
     *@param request 将被处理的Request
     *@param response 将被创建的Response
     *@param context 被用来调用下一个Valve的Valve Context  4.7 org.apache.catalina.ValveContext
    一个ValveContext是这样一种机制:一个Valve可以触发下一个Valve的调用,而不必知道机制的内在实现。 4.8 org.apache.catalina.Engine
    Engine是一个容器,是Cataline的Servlet的入口点。当发布一个连接到Web Server的Cataline时可能不使用Engine,因为Connectior将使用Web Server的资源决定使用哪个Context处理Request。附属于Engine的子容器根据Engine实现的不同可能是Host或 Context(单个Servlet Context)。如果使用了Engine,在Cataline的层次中它就是顶层容器,因此setParent()应改抛出 IllegalArgumentException异常。 4.9 org.apache.catalina. Host
    Host是一个容器,它代表一个虚拟主机。当发布一个连接到Web Server的Cataline时可能不使用Host,因为Connectior将使用Web Server的资源决定使用哪个Context处理Request。Host所附属的父容器通常是Engine,附属于Host的子容器通常是 Context(单个Servlet Context)。Host接口里面的方法多数都是关于修改Host属性及设定默认的Context。这里我们不再一一列举。 4.10 org.apache.catalin. Context
    Context是一个容器,它代表一个ServletContext,一个Cataline Engline中的单个的Web Application。Context所附属的父容器是Host,附属于Context的子容器是Wrapper(代表单个Servlet)。 Context接口里面多数是关于Web Application的设置的方法,我们可以参考Web.xml文件研究里面的方法,里面多数方法都是如何读取Web.xml文件里的资源。 4.11 org.apache.catalina.Wrapper
    Wrapper是一个容器,它代表单个Servlet。Wrapper管理Servlet的生命周期,包括调用init()和destory()方法。 Wrapper所附属的父容器是Context,没有附属于Wrapper的子容器,方法addChild()应该抛出 IllegalArgumentException异常。Wrapper接口里面的方法都是关于读取Servlet的属性,可以参考Web.xml文件里面关于<servlet>标签的定义。 4.12 org.apache.catalina.Server
    Server是整个Catalina容器的入口点,可以包含多个Service和顶层资源元素。一般说来实现Server接口的类也应该同时实现Lifecycle接口,当start()和stop()方法被调用的时候调用Service相应的方法。
    Server负责在指定的端口监听连接,当有连接被接受的时候,Server会分析请求的第一行信息,如果是SHUTDOWN则stop服务。可以参考Server.xml文件关于Server的定义。 4.13 org.apache.catalina. Service
    Service是一个或多个共享同以Container的Connectiors的集合。
JVM可以包含一个或多个Service实例,但它们相互之间是完全独立的,它们仅共享JVM的资源。 4.14 org.apache.catalina. Connector
    Connector是一个从客户端接受请求(request)并生成回应(reponse)的组件。一个Connection通常执行下面的逻辑:
1)从客户端程序接受请求。
2)创建Request和Response,并把下面这些属性设置到这些对象。
    对所有的 Request,connector,protocol,protocol,response,scheme,secure,serverName,serverPort,serverPort 属性必须被设置。contentLength,contentType通常也被设置。
    对所有的 HttpRequests,method,queryString,requestedSessionCookie,requestedSessionId,requestedSessionURL,requestURI,secure 属性必须被设置。另外所有addXxx方法也必须被调用以记录cookies,headers和locales信息。
    对所有的Responses属性connector,request,stream属性必须被设置。对HttpResponses来说,connector不会为它设置额外headers信息。5.WEB应用程序的目录结构
    在WEB上发布的J2EE应用程序都有自己特定的目录结构。假设创建一名为HELLOAPP的WEB项目。
-HELLOAPP-WEB应用根目录,所有JSP\HTML等文件均存放于此。
-HELLOAPP/WEB-INF-存放WEb应用的发布描述文件web.xml。
-HELLOAPP/WEB-INF/classes-存放各种class文件,servlet类文件也存放于此。
-HELLOAPP/WEB-INF/lib-存放WEb应用所需的各种JAR文件。
6 .参考资料
[1] Tomcat简介 ,http://blog.csdn.net/SouthTitan/archive/2006/07/03/871509.aspx
[2] tomcat5.0 目录结构,http://blog.csdn.net/cesium/archive/2007/03/01/1518172.aspx
[3] tomcat 虚拟主机配置 ,http://www.blogjava.net/zhip/archive/2006/12/28/90480.html
[4] tomcat做web服务器时,通过地址栏传中文参数时编码编译,

分享到:
评论

相关推荐

    Tomcat5启动流程与配置详解 .

    介紹Tomcat5启动流程与配置详解,適合初學者。

    tomcat5配置详解

    介绍了关于tomcat5启动流程、配置详解及杂谈。

    Apache+Tomcat集群配置详解

    Apache+Tomcat集群配置详解 把Apache安装为运行在80端口的Windows服务,安装成功后在系统服务列表中可以看到Apache2.2服务。对于已安装IIS的机器,在启动Apache服务之前必须首先停止IIS Admin服务,不然会因为端口...

    Tomcat参数配置详解

    Tomcat参数配置详解;tomact在启动过程中遇到常见问题解决方法

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.8 Tomcat5启动流程与配置详解 1.9 HttpServlet详解 1.10 Ant使用入门 1.11 Maven Ant之间的比较 1.12 详解MANIFEST.MF文件 1.13 Maven入门--概念与实例 1.14 Subversion 1.15 jar war ear区别 1.16 如何在...

    Tomcat中用web.xml控制Web应用详解

    Tomcat 中用 web.xml 控制 Web 应用详解 Tomcat 中 web.xml 文件是 Web 应用的核心配置文件,负责管理 Web 应用的生命周期、Servlet 的加载顺序、Filter 的配置等。下面对 web.xml 文件中的重要元素进行详细解释。 ...

    TOMACT配置详解

    TOMCAT配置详解 TOMCAT是一款流行的开源Web服务器软件,它基于Java语言开发,可以运行于多种操作系统平台上。在本文中,我们将详细介绍TOMCAT的配置详解,从安装JAVA开发环境到TOMCAT的安装、配置和使用。 一、...

    Eclipse创建tomcat实现过程原理详解

    文件如下,这些配置文件是启动tomcat调用的启动参数 启动tomcat时的启动参数 -Dcatalina.base=”D:\Source Code\SVN2013\.metadata\.plugins\org.eclipse.wst.server.core\tmp3″ -Dcatalina.home=”F:\Apache\apa

    CentOS系统下安装Tomcat7的过程详解

    1.检查java版本信息 #java -version ...1.1、(以下方式强烈不建议,因为有时候会缺少jar包,导致tomcat启动不成功): yum -y install java-1.7.0-openjdk 1.2、强烈建议安装oracle的jdk包,此处安装jdk7,到如下

    Idea部署tomcat服务实现过程图解

    您可能感兴趣的文章:IDEA2020导入非maven项目并部署tomcat的方法在idea中将创建的java web项目部署到Tomcat中的过程图文详解idea打包成war包部署到tomcat及访问路径问题(图文详解)Idea配置maven-tomcat-plugin插件...

    详解IDEA创建Tomcat8源码工程流程

    而在配置Tomcat源码工程的过程中,摸摸爬爬两个多小时,总算是成功启动了。 故撰写此篇博文,授之以渔。 准备工作 1.apache-tomcat-8.5.32-src源码包,官网下载并解压即可; 2.apache-ant-1.10.5(用的最新版)下载...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    5.3.2 为Eclipse配置Tomcat插件 5.4 使用Eclipse建立Web开发项目 5.5 Eclipse的常用快捷键 5.5.1 有关格式化的快捷键 5.5.2 有关调试的快捷键 5.5.3 有关重构的快捷键 5.6 小结 第六章 Log4j使用指南 6.1 Log4j介绍 ...

    java 项目发布

    在 Myeclipse 中使用 Tomcat 发布项目需要配置 Tomcat,加载 JDK 环境,点击发布项目,选择要发布的 Tomcat,然后启动 Tomcat 服务器。 相关知识点 1. Java 项目发布的过程:包括项目编译、打包、部署到服务器上,...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    5.3.2 为Eclipse配置Tomcat插件 5.4 使用Eclipse建立Web开发项目 5.5 Eclipse的常用快捷键 5.5.1 有关格式化的快捷键 5.5.2 有关调试的快捷键 5.5.3 有关重构的快捷键 5.6 小结 第六章 Log4j使用指南 6.1 Log4j介绍 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 ...

    看透springMvc源代码分析与实践

    7.1 Tomcat的顶层结构及启动过程44 7.1.1 Tomcat的顶层结构44 7.1.2 Bootstrap的启动过程45 7.1.3 Catalina的启动过程47 7.1.4 Server的启动过程48 7.1.5 Service的启动过程50 7.2 Tomcat的生命周期管理52 ...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    5.3.2 为Eclipse配置Tomcat插件 5.4 使用Eclipse建立Web开发项目 5.5 Eclipse的常用快捷键 5.5.1 有关格式化的快捷键 5.5.2 有关调试的快捷键 5.5.3 有关重构的快捷键 5.6 小结 第六章 Log4j使用指南 6.1 Log4j介绍 ...

Global site tag (gtag.js) - Google Analytics