首页>参考读物>计算机科学与技术>综合

深入剖析Tomcat
作者 : (美)Budi Kurniawan; Paul Deck 著
译者 : 曹旭东 译
出版日期 : 2011-12-31
ISBN : 978-7-111-36997-4
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 354
开本 : 16
原书名 : How Tomcat Works: A Guide to Developing Your Owen Java Servlet Container
原出版社: Brainy Software
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。本书从最基本的HTTP请求开始,直至使用JMX技术管理Tomcat中的应用程序,逐一剖析Tomcat的基本功能模块,并配以示例代码,使读者可以逐步实现自己的Web服务器。

图书特色

本书深入剖析Tomcat 4和Tomcat 5中的每个组件,并揭示其内部工作原理。通过学习本书,你不仅可以自行开发Tomcat组件,而且可以扩展已有的组件。
本书主要内容:
● 如何开发Java Web服务器。
● Tomcat是否会为每个servlet类创建多个实例。
● Tomcat如何运行一个实现SimpleThreadModel接口的servlet类。
● servlet容器的两个主要模块:连接器和servlet容器。
● 如何构建或者扩展已有的连接器。
● 4种servlet容器:Engine、Host、Context和Wrapper。
● Tomcat如何管理Session,以及如何在分布式环境下扩展Session管理器。
● Tomcat中的类载入器和如何创建自定义载入器。
● Tomcat如何实现安全性和基本/基于表单/摘要的身份验证。
● Tomcat中的领域与登录配置是如何工作的。
● Tomcat如何处理配制文件(server.xml),以及如何通过Digester库将XML元素转换为Java对象。
● Tomcat中的关闭钩子。
● JMX、Apache的 Commons Modeler和Tomcat中的JMX托管资源。

图书前言

欢迎阅读本书。本书剖析了Tomcat 4.1.12版本和Tomcat 5.0.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》一书。为了使你更好地理解本书的内容,每一章的开头都会有一段与该章内容相关的背景信息的介绍。
servlet容器是如何工作的
  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.http.ServletResponse接口的一个实例;
  调用Servlet的service()方法,将request对象和response对象作为参数传入。Servlet从request对象中读取信息,并通过response对象发送响应信息。
  当你阅读具体的章节时,你会看到关于servlet容器Catalina的详细描述。
Catalina框图
  Catalina是一个成熟的软件,设计和开发得十分优雅,功能结构也是模块化的。上一节“servlet容器是如何工作的”中提到了servlet容器的任务,基于这些任务可以将Catalina划分为两个模块:连接器(connector)和容器(container)。
  图I-1很简单,在后续的章节中,你会逐个接触到所有的组件。

图I-1 Catalina的主要模块
  现在,回到图I-1,这里的连接器负责将一个请求与容器相关联。它的工作包括为它接收到的每个HTTP请求创建一个request对象和一个response对象。然后,它将处理过程交给容器。容器从连接器中接收到request对象和response对象,并负责调用相应的Servlet的service()方法。
  但是请记住,上面所描述的处理过程只是Catalina容器处理请求的整个过程的一小部分,犹如冰山的一角,在容器中还包括很多其他的事情要做。例如,在容器调用相应的Servlet的service()方法之前,它必须先载入该Servlet类,对用户进行身份验证(如果有必要的话),为用户更新会话信息等。因此,当你发现容器使用了很多不同的模块来处理这些事情时,请不要太惊讶。例如,管理器模块用来处理用户会话信息,载入器模块用来载入所需的Servlet类等。
Tomcat 4和Tomcat 5
  本书涵盖了Tomcat 4和Tomcat 5两个版本。下面是这两个版本的一些区别之处:
   Tomcat 5支持Servlet 2.4和JSP 2.0规范,Tomcat 4支持Servlet 2.3和JSP 1.2规范;
   Tomcat 5默认的连接器比Tomcat 4默认的连接器执行效率更高;
   Tomcat 5使用共享线程来执行后台任务,而Tomcat 4的组件使用各自的线程执行后台任务,因此,相比于Tomcat 4,Tomcat 5更节省资源;
   Tomcat 5不再使用映射器组件来查找子组件,因此,代码更简单。
本书结构
  本书共20章,前两章概述了全书内容。第1章介绍了HTTP服务器是如何工作的,第2章介绍了一个简单的servlet容器。第3章和第4章着重于连接器的说明,第5~20章介绍容器中的各个组件。下面是每一章的内容简介。
  注意 每一章都配有一个应用程序用于对该章所介绍组件进行实际应用的说明。
  第1章:本书从介绍一个简单的HTTP服务器开始。为了建立一个可以运行的HTTP服务器,你需要了解java.net包下Socket类和ServerSocket类的内部运行机制。该章有详细的背景信息介绍,使你可以理解该章中应用程序的运行机制。
  第2章:阐明一个简单的servlet容器是如何工作的。该章有两个与servlet容器有关的应用程序,可以服务于静态资源的请求和简单Servlet的请求。此外,你会学习到如何创建request对象和response对象,并将它们传递给被请求的Servlet的service()方法。此外,在该servlet容器中有一个可以运行的Servlet,可以从Web浏览器中进行调用。
  第3章:将对Tomcat 4中的默认连接器的精简版进行说明。该章中建立的应用程序可以作为一个学习工具,有助于理解在第4章中讨论的连接器。
  第4章:对Tomcat 4的默认连接器进行说明。该连接器已经弃用,而是推荐使用另一个称为Coyote的执行速度更快的连接器。但是,原先的默认连接器更简单、更容易理解。
  第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.StandardWrapper类进行了详细阐述,该类表示Web应用程序中的一个Servlet对象。该章还说明了过滤器和Servlet的service()方法是如何调用的。该章的应用程序使用StandardWrapper实例来表示实际的Servlet对象。
  第12章:介绍org.apache.catalina.core.StandardContext类,该类表示一个Web应用程序。该章还说明了如何对一个StandardContext对象进行配置(这是在接收到HTTP请求时进行的)、如何支持Web应用程序的自动重载,以及Tomcat 5如何通过一个共享线程来执行其相关联组件中的周期性任务。
  第13章:对另外两种容器(Host和Engine)进行说明。该章对这两种容器的标准实现org.apache.catalina.core.StandardHost和org.apache.catalina.core.StandardEngine进行了说明。
  第14章:对服务器组件和服务组件进行介绍。服务器组件提供了一种优雅的机制来启动或关闭整个servlet容器,服务组件可作为一个容器和一个或多个连接器的持有者。该章通过应用程序来说明如何使用服务器组件和服务组件。
  第15章:说明如何通过Digester组件来对Web应用程序进行配置。Digester是Apache软件基金会的一个开源项目。即使你对这个不熟悉也没有关系,该章会简要介绍Digester库,说明如何使用该库来将XML文档中的节点转换为Java对象。该章然后说明Tomcat是如何通过ContextConfig对象来对StandardContext对象进行配置的。
  第16章:对Tomcat中的关闭钩子进行说明。不论用户如何关闭Tomcat(即通过发送关闭命令,或是突然直接关闭控制台),通过使用关闭钩子,Tomcat总是可以执行一些清理工作。
  第17章:对使用批处理文件和Shell脚本来启动和关闭Tomcat进行说明。
  第18章:对部署器组件进行说明,该组件负责部署和安装Web应用程序。
  第19章:对一个特殊接口(ContainerServlet)进行说明。使用该接口,Servlet对象可以访问Catalina中的内部对象。此外,该章会对用来管理已部署应用程序的Manager应用程序进行说明。
  第20章:对JMX进行说明,并阐述Tomcat是如何为其内部对象创建MBean,并使这些内部对象可托管的。
每一章的应用程序
  每一章都会有一个或多个应用程序用来解释Catalina中的某个特定组件的使用方法。一般情况下,在该应用程序中你会找到该组件的精简版,或是为说明如何使用Catalina组件而编写的代码。在每一章的应用程序中编写的所有的类和接口都在ex[章号].pyrmont包下。例如,第1章的应用程序类会在ex01.pyrmont包下。
准备必需的软件
  本书的应用程序会运行在J2SE的1.4版本下。源文件的压缩包可以从作者的网站www.brainysoftware.com上下载。该压缩包包含了Tomcat 4.1.12的源代码,以及本书中的应用程序的代码。假设你已经安装了J2SE的1.4版本,而且环境变量path也已经包含了JDK的路径,那么只需执行下面的步骤。
  1)解压缩zip文件。解压缩后会有一个名为HowTomcatWorks的新文件夹。HowTomcatWorks是工作目录,其下有一些子目录,包括lib(包含所有必需的库文件)、src(包含所有源文件)、webroot(包含一个HTML文件和三个Servlet示例文件)和webapps(包含示例应用程序);
  2)进入到工作目录中,编译Java文件。若你使用Windows操作系统,则运行win-compile.bat批处理文件。若你使用Linux操作系统,则执行下面的命令(必要时,不要忘记用chmod命令修改文件的执行权限):./linux-compile.sh
  注意 更多的信息可以在压缩包的Readme.txt文件中找到。

上架指导

计算机\程序设计

封底文字

本书者深入剖析Tomcat 4和5中的每个组件,并揭示了其内部工作原理。通过学习本书,你将可以自行开发Tomcat组件,或者扩展已有的组件。

本书主要内容:
 如何开发Java Web服务器
 Tomcat是否会为每个Servlet类创建多个实例
 Tomcat如何运行一个实现SimpleThreadModel接口的Servlet类
 Servlet容器的两个主要模块:连接器和Servlet容器
 如何构建或者扩展已有的连接器
 4种Servlet容器:Engine、Host、Context和Wrapper
 Tomcat如何管理Session,以及如何在分布式环境下扩展Session管理器
 Tomcat中的类载入器和如何创建自定义载入器
 Tomcat如何实现安全性和基本/基于表单/摘要的身份验证
 Tomcat中的领域与登录配置是如何工作的
 Tomcat如何处理配制文件(server.xml),以及如何通过Digester库将XML元素转换为Java对象
 Tomcat中的关闭钩子
 JMX、Apache的 Commons Modeler和Tomcat中的JMX托管资源

作者简介

(美)Budi Kurniawan; Paul Deck 著:Budi Kurniawan是《Java for Web With Servlets, JSP and EJB》的作者,同时也是一位IT咨询师,主要研究方向包括互联网与面向对象程序设计。除了其他一些计算机图书,他已经在10多种出版物上发表了约100篇文章,其中包括一些享有盛誉的Java杂志,如《Java.net》、《JavaPro》、《JavaWorld》等。Budi也是Brainysoftware.com的应用程序File Upload Bean的作者,在世界范围内很多公司都获得授权并使用该应用程序。 Paul Deck是一个有15多年经验的IT架构师,参与了很多项目的开发,这些项目遍布在美国、加拿大、中国和澳大利亚。他喜欢旅行,对网络、互联网编程、设计模式和用户界面交互设计非常感兴趣。

译者简介

曹旭东 译:暂无简介

译者序

Tomcat是Apache 软件基金会(Apache Software Foundation)的一个顶级项目,由Apache、Sun和其他一些公司及个人共同开发,是目前比较流行的Web服务器之一。作为一个开源的、小型的轻量级应用服务器,Tomcat深受广大程序员的喜爱,具有占用系统资源少,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断地改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
  虽然Tomcat易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块密切合作,各司其职,构成了Tomcat的核心结构。作者从最基本的HTTP请求开始,直至使用JMX技术管理Tomcat中的应用程序,逐步深入,逐一剖析Tomcat的基本功能模块,并配以示例代码,使读者可以逐步实现自己的一个Web服务器。
  当然,本书并不能完全覆盖Tomcat,书中并没有包含Tomcat的太多设计思路及具体的实现细节,而是更注重对Tomcat基本结构的分析介绍。在每一章中都有与本章内容相关的示例应用程序,帮助读者更好地理解该章的内容。
  本书由曹旭东翻译,由于时间仓促,加上译者水平有限,书中难免有疏漏之处,望广大读者予以指正。

曹旭东

图书目录

译者序
前 言
第1章 一个简单的Web服务器1
1.1 HTTP1
1.1.1 HTTP请求1
1.1.2 HTTP响应2
1.2 Socket类3
1.3 应用程序5
1.3.1 HttpServer类5
1.3.2 Request类8
1.3.3 Response类10
1.3.4 运行应用程序12
1.4 小结13
第2章 一个简单的servlet容器14
2.1 javax.servlet.Servlet接口14
2.2 应用程序 116
2.2.1 HttpServer1类17
2.2.2 Request类19
2.2.3 Response类21
2.2.4  StaticResourceProcessor类23
2.2.5 servletProcessor1类24
2.2.6 运行应用程序27
2.3 应用程序227
2.4 小结30
第3章 连接器31
3.1 StringManager类31
3.2 应用程序33
3.2.1 启动应用程序35
3.2.2 HttpConnector类36
3.2.3 创建HttpRequest对象38
3.2.4 创建HttpResponse对象49
3.2.5 静态资源处理器和servlet处理器50
3.2.6 运行应用程序50
3.3 小结52
第4章 Tomcat的默认连接器53
4.1 HTTP 1.1的新特性54
4.1.1 持久连接54
4.1.2 块编码54
4.1.3 状态码100的使用55
4.2 Connector接口55
4.3 HttpConnector类56
4.3.1 创建服务器套接字56
4.3.2 维护HttpProcessor实例56
4.3.3 提供HTTP请求服务57
4.4 HttpProcessor类58
4.5 Request对象61
4.6 Response对象62
4.7 处理请求62
4.7.1 解析连接65
4.7.2 解析请求65
4.7.3 解析请求头65
4.8 简单的Container应用程序66
4.9 小结70
第5章 servlet容器71
5.1 Container接口71
5.2 管道任务73
5.2.1 Pipeline接口76
5.2.2 Valve接口76
5.2.3 ValveContext接口76
5.2.4 Contained接口77
5.3 Wrapper接口77
5.4 Context接口78
5.5 Wrapper应用程序78
5.5.1 ex05.pyrmont.core.SimpleLoader类78
5.5.2 ex05.pyrmont.core.SimplePipeline类79
5.5.3 ex05.pyrmont.core.SimpleWrapper类79
5.5.4 ex05.pyrmont.core.SimpleWrapperValve类80
5.5.5 ex05.pyrmont.valves.ClientIPLoggerValve类81
5.5.6 ex05.pyrmont.valves.HeaderLoggerValve类81
5.5.7 ex05.pyrmont.startup.Bootstrap182
5.5.8 运行应用程序84
5.6 Context应用程序84
5.6.1 ex05.pyrmont.core.SimpleContextValve类87
5.6.2 ex05.pyrmont.core.SimpleContextMapper类87
5.6.3 ex05.pyrmont.core.SimpleContext类89
5.6.4 ex05.pyrmont.startup.Bootstrap289
5.6.5 运行应用程序91
5.7 小结92
第6章 生命周期93
6.1 Lifecycle接口93
6.2 LifecycleEvent类94
6.3 LifecycleListener接口94
6.4 LifecycleSupport类95
6.5 应用程序97
6.5.1 ex06.pyrmont.core.SimpleContext类97
6.5.2 ex06.pyrmont.core.SimpleContextLifecycleListener类100
6.5.3 ex06.pyrmont.core.SimpleLoader类101
6.5.4 ex06.pyrmont.core.SimplePipeline类101
6.5.5 ex06.pyrmont.core.SimpleWrapper类101
6.5.6 运行应用程序103
6.6 小结104
第7章 日志记录器105
7.1 Logger接口105
7.2 Tomcat的日志记录器106
7.2.1 LoggerBase类106
7.2.2 SystemOutLogger类107
7.2.3 SystemErrLogger类107
7.2.4 FileLogger类108
7.3 应用程序111
7.4 小结112
第8章 载入器113
8.1 Java的类载入器113
8.2 Loader接口114
8.3 Reloader接口116
8.4 WebappLoader类116
8.4.1 创建类载入器117
8.4.2 设置仓库118
8.4.3 设置类路径118
8.4.4 设置访问权限118
8.4.5 开启新线程执行类的重新载入118
8.5 WebappClassLoader类120
8.5.1 类缓存120
8.5.2 载入类121
8.5.3 应用程序121
8.6 运行应用程序124
8.7 小结124
第9章 Session管理125
9.1 Session对象126
9.1.1 Session接口126
9.1.2 StandardSession类127
9.1.3 StandardSessionFacade类129
9.2 Manager130
9.2.1 Manager接口130
9.2.2 ManagerBase类131
9.2.3 StandardManager类132
9.2.4 PersistentManagerBase类133
9.2.5 PersistentManager类135
9.2.6 DistributedManager类135
9.3 存储器136
9.3.1 StoreBase类137
9.3.2 FileStore类138
9.3.3 JDBCStore类139
9.4 应用程序139
9.4.1 Bootstrap类139
9.4.2 SimpleWrapperValve类140
9.4.3 运行应用程序141
9.5 小结142
第10章 安全性143
10.1 领域143
10.2 GenericPrincipal类144
10.3 LoginConfig类145
10.4 Authenticator接口145
10.5 安装验证器阀146
10.6 应用程序147
10.6.1 ex10.pyrmont.core.SimpleContextConfig类147
10.6.2 ex10.pyrmont.realm.SimpleRealm类149
10.6.3 ex10.pyrmont.realm.SimpleUserDatabaseRealm152
10.6.4 ex10.pyrmont.startup.Bootstrap1类154
10.6.5 ex10.pyrmont.startup.Bootstrap2类156
10.6.6 运行应用程序158
10.7 小结158
第11章 StandardWrapper159
11.1 方法调用序列159
11.2 SingleThreadModel160
11.3 StandardWrapper161
11.3.1 分配servlet实例162
11.3.2 载入servlet类164
11.3.3 ServletConfig对象167
11.3.4 servlet容器的父子关系169
11.4 StandardWrapperFacade类170
11.5 StandardWrapperValve类171
11.6 FilterDef类172
11.7 ApplicationFilterConfig类174
11.8 ApplicationFilterChain类175
11.9 应用程序175
11.10 小结177
第12章 StandardContext类178
12.1 StandardContext的配置178
12.1.1 StandardContext类的构造函数179
12.1.2 启动StandardContext实例179
12.1.3 invoke()方法183
12.2 StandardContextMapper类184
12.3 对重载的支持187
12.4 backgroundProcess()方法188
12.5 小结190
第13章 Host和Engine191
13.1 Host接口191
13.2 StandardHost类193
13.3 StandardHostMapper类195
13.4 StandardHostValve类196
13.5 为什么必须要有一个Host容器197
13.6 应用程序1198
13.7 Engine接口199
13.8 StandardEngine类201
13.9 StandardEngineValve类201
13.10 应用程序2202
13.11 小结203
第14章 服务器组件和服务组件204
14.1 服务器组件204
14.2 StandardServer类206
14.2.1 initialize()方法206
14.2.2 start()方法207
14.2.3 stop()方法207
14.2.4 await()方法208
14.3 Service接口209
14.4 StandardService类211
14.4.1 connector和container211
14.4.2 与生命周期有关的方法213
14.5 应用程序215
14.5.1 Bootstrap类215
14.5.2 Stopper类217
14.5.3 运行应用程序218
14.6 小结219
第15章 Digester库220
15.1 Digester库221
15.1.1 Digester类221
15.1.2 Digester库示例1225
15.1.3 Digester库示例2227
15.1.4 Rule类230
15.1.5 Digester库示例3:使用RuleSet232
15.2 ContextConfig类234
15.2.1 defaultConfig()方法236
15.2.2 applicationConfig()方法238
15.2.3 创建Web Digester239
15.3 应用程序243
15.4 小结244
第16章 关闭钩子245
16.1 关闭钩子的例子246
16.2 Tomcat中的关闭钩子250
16.3 小结250
第17章 启动Tomcat251
17.1 Catalina类251
17.1.1 start()方法253
17.1.2 stop()方法256
17.1.3 启动Digester对象256
17.1.4 关闭Digester对象258
17.2 Bootstrap类259
17.3 在Windows平台上运行Tomcat264
17.3.1 如何编写批处理文件264
17.3.2 catalina.bat批处理文件267
17.3.3 在Windows平台上启动Tomcat276
17.3.4 在Windows平台上关闭Tomcat277
17.4 在Linux平台上运行Tomcat278
17.4.1 如何编写UNIX/Linux Shell脚本278
17.4.2 catalina.sh脚本283
17.4.3 在UNIX/Linux平台上启动Tomcat288
17.4.4 在UNIX/Linux平台上关闭Tomcat289
17.5  小结290
第18章 部署器291
18.1 部署一个Web应用程序291
18.1.1 部署一个描述符294
18.1.2 部署一个WAR文件295
18.1.3 部署一个目录297
18.1.4 动态部署297
18.2 Deploy接口299
18.3 StandardHostDeployer类302
18.3.1 安装一个描述符303
18.3.2 安装一个WAR文件或目录304
18.3.3 启动Context实例305
18.3.4 停止一个Context实例306
18.4 小结306
第19章 Manager应用程序的servlet类307
19.1 使用Manager应用程序307
19.2 Containerservlet接口309
19.3 初始化ManagerServlet309
19.4 列出已经部署的Web应用程序311
19.5 启动Web应用程序312
19.6 关闭Web应用程序313
19.7 小结314
第20章 基于JMX的管理315
20.1 JMX简介315
20.2 JMX API316
20.2.1 MBeanServer类316
20.2.2 ObjectName类317
20.3 标准MBean318
20.4 模型MBean321
20.4.1 MBeanInfo接口与ModelMBeanInfo接口322
20.4.2 ModelMBean示例323
20.5 Commons Modeler库326
20.5.1 MBean描述符327
20.5.2 mbean元素示例328
20.5.3 自己编写一个模型 MBean类329
20.5.4 Registry类329
20.5.5 ManagedBean329
20.5.6 BaseModelMBean329
20.5.7 使用Modeler库API330
20.6 Catalian中的MBean332
20.6.1 ClassNameMBean类333
20.6.2 StandardServerMBean类333
20.6.3 MBeanFactory类334
20.6.4 MBeanUtil335
20.7 创建Catalina的MBean335
20.8 应用程序339
20.9 小结342

教学资源推荐
作者: (美) Wayne Wolf 著
作者: [美]克利福德·斯坦(Clifford Stein) 罗伯特 L. 戴斯得尔(Robert L. Drysdale) 肯尼斯·博加特(Kenneth Bogart) 著
作者: (英)Bob Hughes; Mike Cotterell著
参考读物推荐
作者: [印]苏尼拉·格拉普蒂(Sunila Gollapudi)著
作者: [澳] 詹姆斯·特恩布尔(James Turnbull) 著
作者: 寇圆圆 孙玲延 孙迪 等编著