1. 首页
  2. 编程语言
  3. Java
  4. 深入剖析TOMCAT

深入剖析TOMCAT

上传者: 2019-05-15 16:14:54上传 PDF文件 28.4MB 热度 37次
《深入剖析TOMCAT.pdf》全书353页,华章图书,质量有保障前言欢迎阅读本书。本书剖析了 Tomcat4112版本和 Tomcat50.18版本的基本结构,并解释了其 servlet容器 Catalina的内部工作原理。 Catalina是开源、免费的,也是最受欢迎的 servlet容器之一。 Tomcat本身是一个复杂的系统,包含了许多不同的组件。若你想学习 Tomcat的工作方式,应该从了解这些组件开始。本书描述 Tomcat的总体结构,并针对每个组件建立一个简单的版本,使你更好地理解组件的工作机制,之后对真实组件进行描述。本书结构节会对全书的章节设置做一个总体介绍,并说明构建的应用程序的总体结构。在“准备必需的软件”一节,说明需要下载使用哪些软件,如何为代码创建目录结构等本书读者对象本书适合于所有使用Java技术工作的开发人员。如果你是一名 JSP/Servlet程序员或 Tomcat用户,并想了解 servlet容器是如何工作的,那么本书很适合你;·如果你想加入 Tomcat开发团队,那么本书很适合你,因为你首先要学习已有的代码是如何工作的:如果你不是一名Web开发人员,但对软件开发很有兴趣,那么你可以从本书中学习到一个大型应用软件(如 Tomcat)是如何设计和开发的;·如果你想对 Tomcat进行配置或定制,你应该阅读本书。为了更好地理解本书所讲述的内容,你需要理解Java中的面向对象编程知识,以及 Servlet编程方面的知识。如果你对后者还不熟悉,那么你学习起来可能会有些困难。你可以先学习一下Servlet编程方面的知识,例如看一下Budi的《 Java for the Web with servlets,JSP, and EJB》一书。为了使你更好地理解本书的内容,每一章的开头都会有一段与该章内容相关的背景信息的介绍。sere容器是如何工作的servlet容器是一个复杂的系统,但是,它有3个基本任务,对每个请求, servlet容器会为其成以下3个操作:创建一个 request对象,用可能会在调用的 Servlet中使用到的信息填充该 request对象,如参数、头、 cookie、查询字符串、URI等。 reqeust对象是 javax. servlet ServletRequest接口或Javax.servlet.http.ServletRequest接口的一个实例。·创建一个调用 Servlet的 response对象,用来向Web客户端发送响应。 response对象是javax.servlet servletResponse接口或 javax.servlet.htt. ServletResponse接口的一个实例;调用 Servlet的 service0方法,将 request对象和 response对象作为參数传入。 Servlet从request对象中读取信息,并通过 response对象发送响应信息。当你阅读具体的章节时,你会看到关于 servlet容器 Catalina的详细描述。Catalina框图Catalina是一个成熟的软件,设计和开发得十分优雅,功能结构也是模块化的。上一节“ serylet容器是如何工作的”中提到了 servlet容器的任务,基于这些任务可以将 Catalina划分为两个模块:连接器( connector)和容器( container)。图I-1很简单,在后续的章节中,你会逐个接触到所有的组件匚连接器servlet容器图I- I Catalina的主要模块现在,回到图Il,这里的连接器负责将一个请求与容器相关联。它的工作包括为它接收到的每个HTP请求创建一个rque对象和一个 response对象。然后,它将处理过程交给容器。容器从连接器中接收到 request对象和 response对象,并负责调用相应的 Servlet的 service(0方法。但是请记住,上面所描述的处理过程只是 Catalina容器处理请求的整个过程的一小部分,犹如冰山的一角,在容器中还包括很多其他的事情要做。例如,在容器调用相应的 Servlet的serviceD方法之前,它必须先载入该 Servlet类,对用户进行身份验证(如果有必要的话),为用户更新会话信息等。因此,当你发现容器使用了很多不同的模块来处理这些事情时,请不要太惊讶。例如,管理器模块用来处理用户会话信息,载入器模块用来载入所需的 Servlet类等omat4和 Tomcat5本书涵盖了 Tomcat4和 Tomcat5两个版本。下面是这两个版本的一些区别之处Tomcat 5支持 Servlet2.4和JSP2.0规范, Tomcat4支持 Servlet2.3和JsP1.2规范;Tomcat s默认的连接器比 Tomcat4默认的连接器执行效率更高;Tomcat5使用共享线程来执行后台任务,而 Tomcat4的组件使用各自的线程执行后台任务,因此,相比于 Tomcat4, Tomcat5更节省资源;Tomcat5不再使用映射器组件来査找子组件,因此,代码更简单。本书结构本书共20章,前两章概述了全书内容。第1章介绍了HTTP服务器是如何工作的,第2章介绍了一个简单的 servlet容器。第3章和第4章着重于连接器的说明,第5~20章介绍容器中的各个组件。下面是每一章的内容简介。注意每一章都配有一个应用程序用于对该章所介绍组件进行实际应用的说明。第1章:本书从介绍一个简单的HTTP服务器开始。为了建立一个可以运行的HTTP服务器,你需要了解 Java. net包下 Socket类和 Server Socket类的内部运行机制。该章有详细的背景信息介绍,使你可以理解该章中应用程序的运行机制。第2章:阐明一个简单的 serve容器是如何工作的。该章有两个与 servlet容器有关的应用程序,可以服务于静态资源的请求和简单 Servlet的请求。此外,你会学习到如何创建 request对象和 response对象,并将它们传递给被请求的 Servlet的 seryice0方法。此外,在该 servlet容器中有一个可以运行的 Servlet,可以从Web浏览器中进行调用。第3章:将对 Tomcat4中的默认连接器的精简版进行说明。该章中建立的应用程序可以作为一个学习工具,有助于理解在第4章中讨论的连接器。第4章:对 Tomcat4的默认连接器进行说明。该连接器已经弃用,而是推荐使用另一个称为Cσyote的执行速度更快的连接器。但是,原先的默认连接器更简单、更容易理解。第5章:讨论容器模块。容器由org. apache. catalina Container接口表示,共有4种类型的容器,分别是 Engine、Host、 Context和 Wrapper。该章提供了两个分别与 Context和 Wrapper相关的应用程序第6章:对 Lifecycle接口进行说明。该接口定义了 Catalina组件的生命周期,并提供了种优雅的方法来通知其他组件在该组件中发生了某种事件。此外, Lifecycle接口提供了一种优雅的机制来启动和关闭 Catalina中所有的组件,只需要启动/关闭一次即可。第7章:介绍日志记录器组件,该组件用于记录错误消息和其他的相关消息。第8章:对载入器组件进行介绍,载入器是 Catalina中的重要模块,负责载入 Servlet和Web应用程序中所需要的其他类。该章还将说明Web应用程序的重载是如何实现的。第9章:介绍管理器组件。该组件负责在会话管理中管理会话。该章介绍了几种不同类型的管理器,并说明了管理器组件是如何持久化一个 session对象的。在该章末尾,介绍如何使用StandardManager实例构建一个使用 session对象保存数据的应用程序。第10章:该章将讨论Web应用程序的安全限制,以限制对某些内容的访问。你会学习到些与安全相关的实体,如主体、角色、登录配置和身份验证等。该章有两个应用程序,分别在StandardContext对象中安装了验证器阀,并使用基本验证来对用户进行身份验证。第11章:对 org, apache. catalina. core Standard Wrapper类进行了详细阐述,该类表示Web应用程序中的一个 Servlet对象。该章还说明了过滤器和 Servlet的 service(O方法是如何调用的。该章的应用程序使用 StandardWrapper实例来表示实际的 Servlet对象。第12章:介绍org. apache. catalina. core. StandardContext类,该类表示一个Web应用程序该章还说明了如何对一个Standardcontext对象进行配置(这是在接收到HTTP请求时进行的)如何支持Wb应用程序的自动重载,以及 Tomcat5如何通过一个共享线程来执行其相关联组件中的周期性任务第13章:对另外两种容器(Host和 Engine)进行说明。该章对这两种容器的标准实现orgapache. catalina. core. StandardHost和org. apache. catalina. core. StandardEngine进行了说明。第14章:对服务器组件和服务组件进行介绍。服务器组件提供了一种优雅的机制来启动或关闭整个 servlet容器,服务组件可作为一个容器和一个或多个连接器的持有者。该章通过应用VII程序来说明如何使用服务器组件和服务组件。第15章:说明如何通过 Digester组件来对Web应用程序进行配置。 Digester是 Apache软件基金会的一个开源项目。即使你对这个不熟悉也没有关系,该章会简要介绍 Digester库,说明如何使用该库来将XML文档中的节点转换为Java对象。该章然后说明 Tomcat是如何通过ContextConfig对象来对 Standard context对象进行配置的。第16章:对 Tomcat中的关闭钩子进行说明。不论用户如何关闭 Tomcat(即通过发送关闭命令,或是突然直接关闭控制台),通过使用关闭钩子, Tomcat总是可以执行一些清理工作,第17章:对使用批处理文件和 shell脚本来启动和关闭 Tomcat进行说明。第18章:对部署器组件进行说明,该组件负责部署和安装Web应用程序。第19章:对一个特殊接口( Containerservlet)进行说明。使用该接口, Servlet对象可以访问Catalina中的内部对象。此外,该章会对用来管理已部署应用程序的 Manager应用程序进行说明。第20章:对JMX进行说明,并阐述 Tomcat是如何为其内部对象创建 MBean,并使这些内部对象可托管的。每一章的应用程序每一章都会有一个或多个应用程序用来解释 Catalina中的某个特定组件的使用方法。一般情况下,在该应用程序中你会找到该组件的精简版,或是为说明如何使用 Catalina组件而编写的代码。在每一章的应用程序中编写的所有的类和接口都在ex章号/ pyrmont包下。例如,第1章的应用程序类会在 exel, pyrmont包下。准备必需的软件本书的应用程序会运行在J2SE的1.4版本下。源文件的压缩包可以从作者的网站wwwbrainysoftware.com上下载。该压缩包包含了Tomcat41.2的源代码,以及本书中的应用程序的代码。假设你已经安装了J2SE的1.4版本,而且环境变量path也已经包含了JDK的路径,那么只需执行下面的步骤。1)解压缩zip文件。解压缩后会有一个名为 How Tomcat works的新文件夹。 How Tomcat works是工作目录,其下有一些子目录,包括li(包含所有必需的库文件)、src(包含所有源文件)、webroot(包含一个HTML文件和三个 Servlet示例文件)和 webapps(包含示例应用程序)2)进入到工作目录中,编译Java文件。若你使用 Windows操作系统,则运行wn- compile.bat批处理文件。若你使用 Linux操作系统,则执行下面的命令(必要时,不要忘记用 chmod命令修改文件的执行权限).小1inux-cmpi1e.sh注意更多的信息可以在压缩包的 Readme.κt文件中找到。目录译者序321启动应用程序………………35前言322 Http Connector类……36323创建 Httprequest对象……38第1章一个简单的Web服务器e arar324创建 Httpresponse对象……491. 1 httP……………………………325静态资源处理器和 servlet处理器…501.1.1HTTP请求…326运行应用程序………501.1.2HTTP响应…………23.3小结………521.2 Socket类…t日 cnnnn香音 teere十t+t3第4章 Tomcat的默认连接器…………531.3应用程序54.1HTTP1.I的新特性…541.3. Httpserver类中·+…“-44“+4.1.1持久连接……………541.3.2 Request类84.1.2块编码……………………541.3.3 Response类…04.1.3状态码100的使用…………551.34运行应用程序……………l24.2 Connector接口…5514小结………………………l343 Http connectoR类…………………56第2章一个简单的 servlet容器……l4.3.1创建服务器套接字………·562.1 javax. servlet Servlet接口……l44.3.2维护 Httpprocessor实例…5622应用程序1……………………l04.3.3提供HTTP请求服务…57221 Http SErverl类………I744 Http processor类5822.2 Request类…1945 Request对象…61223 Response类………46 Response对象………………“62224 Static Resource Processor类……2347处理请求6222.5 servletProcessor 1类…244.7.1解析连接…6522.6运行应用程序……………………274.7.2解析请求…………6523应用程序2……………274.7.3解析请求头…………6524小结304.8简单的 Container应用程序…66第3章连接器…3149小结……………………………703.1 String Manager类…31第5章 servlet容器32应用程序……………………………335.1 Container接口…7IX52管道任务……7364 Lifecycle Support类…………9552.1 Pipeline接口…7665应用程序·中中·"·::中中·:中“·有9752.2 Valve接口…766.5.1 ex06 pyrmont. core.523 Valve Context接口………76Simple Context类…………………97524 Contained接口…776.5.2 ex06 pyrmont. core.5.3 Wrapper接口………77SimpleContextlifecyclelistener类…10054 Context接口………………786. 5. 3 ex06 pyrmont. core.55 Wrapper应用程序………78Simpleloader类…………………10l5.1ex05 pyrmont.. core. SimpleLoader类…786.5.4 ex06 pyrmont.core552cx05 pyrmont. core. SimplePipeline类……79ple Pipeline类……l05.53ex05 pyrmont. core. Simple Wrapper类…796.5.5 exO6 pyrmont core.5.5.4 ex05pyrmontcoreSimple Wrapper类…………I0lSimple Wrapper Valve类………806.56运行应用程序…………………/035.5.5 ex05 pyrmont valves6.6小结……104ClientIPLogger Valve类……8l第7章日志记录器…………………055.5.6 ex05 pyrmont valves7.1 Logger接口………………I05HeaderLogger Valve类………8l72 Tomcat的日志记录器…065.5.7 exO5 pyrmont. startup. Bootstrap1-8272.1 LoggerBase类…………l06558运行应用程序…。曹看申中排着鲁由中着甲847.22 SystemOutLogger类………………0756 Context应用程序…………………84723 SystemErrLogger类……l075.6.1 exo5pyrmont.core724 FileLogger类………08Simple Context Valve类…………877.3应用程序………………l5.6.2 ex05pyrmontcore74小结………ll2Simple ContextMapper类…………87第8章载入器…35.6.3 exO5 pyrmont. core.8.1Java的类载人器…lI3Simple Context类…………898.2 Loader接口……4564ex05 pyrmont. startup. Bootstrap2…898.3 Reloader接口………………Il656.5运行应用程序…91·84 Webapploader类657小结………………………928.4.1创建类载入器………7第6章生命周期93842设置仓库Ⅰ186.1 Lifecycle接口…9384.3设置类路径…………I862 LifecycleEvent类94844设置访问权限I1863 LifecycleListener接口…9484.5开启新线程执行类的重新载入…118X8.5 Webappclassloader 3e曹日,薛南科面面品12010.6应用程序………I47851类缓存………………………12010.6.1 exo pyrmont. core.852载入类…………………l2ISimple Context Config类…l47853应用程序……………………………l2110.6.2 ex10 pyrmontrealm.86运行应用程序………………………l24Simplerealm类…………!l4987小结……………"……""…d2410.6.3 ex10pyrmont realm.第9章 Session管理…5SimpleUserDatabaseRealm……529.1 Session对象2610.6.4 ex10 pyrmont startup9.1.1 Session接口………26Bootstrap类……………………l5491.2 StandardSession类………12710.6.5 ex10 pyrmont startup91.3 StandardSessionFacade类……I29Bootstrap2类……………l5692 Manager………………………l30106.6运行应用程序……………1589.21 Manager接口…………………l3010.7小结…………l58922 Manager Base类…13l第1章 Standard Wrapper…l59923 StandardManager类…13211.1方法调用序列…599,24 PersistentManager Base类………l331.2 SinglethreadModel……………16092.5 PersistentManager类…13511.3 Standard Wrapper………………l6l9.2.6 Distributed Manager >e13511.3.1分配 servlet实例6293存储器手!甲士t音世+普+"tm自由m由·和·审;··l3611.3.2载入 servlet类,6493.1 Store Base类…l371.3.3 Servletconfig对象…l6793.2 FileStore类………………3811.34 servlet容器的父子关系………l69933 JDBCStore类……3914 Standard Wrapper Facade类…………17094应用程序…………3911.5 Standard Wrapper valve类………17l941 Bootstrap类13911.6 FilterDef类康中17294.2 Simple wrapper valve类…14011.7 Application FilterConfig类……l7494.3运行应用程序……………l41118 Application FilterChain类…………17595小结…………………14211.9应用程序…………………………175第10章安全性…………………/43·11.10小结77710.1领域……f量d·干··d“由·;········审143第12章 Standardcontext类………7810.2 GenericPrincipal类…….14412.1 StandardContext的配置……………7810.3 Login Config类…………4512.1.1 StandardContext类的构造函数…l7910.4 Authenticator接口…重,中和和世曹145121.2启动 StandardContext实例………l7910.5安装验证器阀…146121,3 invoke(方法………………183XI12.2 StandardContextMapper类……l84第15章 Digester库……20123对重载的支持………8715.1 Digester库……22124 background Process(0方法……815.1.1 Digester类……………22125小结审pg音+留1901512 Digester库示例1………225第13章Host和 Engine……l9151.3 Digester库示例222713 I Host接口………1911514Rule类……………230132 StandardHost类…………………19315.1.5 Digester库示例3:133 StandardHostMapper类……195使用 RuleSet……………232134 StandardHost valⅤe类……196152 ContextConfig类…………23413.5为什么必须要有一个1521 default config(方法……………236Host容器…971522 application Config方法……23813.应用程序1………………………1981523创建 Web Digester…:239137 Engine接口199153应用程序…………………24313.8 StandardEngine类………………201154小结………24413.9 StandardEngine valve 3201第16章关闭钩子……24513.10应用程序2…202161关闭钩子的例子……24613.11小结203162 Tomcat中的关闭钩子…250第14章服务器组件和服务组件204163小结…………………………25014.1服务器组件…上是+.·204第17章启动 Tomcat………………25114.2 StandardServer类…206171 Catalina类……………2114.2.1 initialize(方法…………20017.1.1 start方法…2531422 start(方法…………………20717.1.2 stop方法…2561.23stop方法………20717.13启动 Digester对象……2561424 awant0方法……………………20817.14关闭 Digester对象………………25814.3 Service接口………………………………209172 Bootstrap类…25914.4 StandardService类……2ⅠI73在 Windows平台上运行 Tomcat…264144 1 connector和 container……………2r17.3.1如何编写批处理文件2641442与生命周期有关的方法21317.3.2 catalina, bat批处理文件…………26714.5应用程序………"·.···*“““!「…21517.33在 Windows平台上启动 Tomcat…27614.51 Bootstrap类……………………251734在 Windows平台上关闭 Tomcat…27714.52 Stopper类·21774在 Linux平台上运行 Tomcat……27814.53运行应用程序……81741如何编写 UNIX /Linux shel本…27814.6小结………………2191742 catalina.sh脚本……283
用户评论
码姐姐匿名网友 2019-05-15 16:14:55

还是比较清晰的 但是tomcat版本太旧