2018年8月24日08:56:57评论1.2K
深入剖析Tomcat 内容简介
《深入剖析Tomcat》深入剖析Tomcat4和Tomcat5中的每个组件,并揭示其内部工作原理。通过学习本书,你将可以自行开发Tomcat组件,或者扩展已有的组件。Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器,Tomcat易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。《深入剖析Tomcat》从最基本的HTTP请求开始,直至使用JMX技术管理Tomcat中的应用程序,逐一剖析Tomcat的基本功能模块,并配以示例代码,使读者可以逐步实现自己的Web服务器。
深入剖析Tomcat 目录
译者序
前言
第1章 一个简单的Web服务器
1.1 HTTP
1.1.1 HTTP请求
1.1.2 HTTP响应
1.2 Socket类
1.3 应用程序
1.3.1 HttpServer类
1.3.2 Request类
1.3.3 Response类
1.3.4 运行应用程序
1.4 小结
第2章 一个简单的servlet容器
2.1 javax.servlet.Servlet接口
2.2 应用程序
2.2.1 HttpServer1类
2.2.2 Request类
2.2.3 Response类
2.2.4 StaticResourceProcessor类
2.2.5 servletProcessor1类
2.2.6 运行应用程序
2.3 应用程序
2.4 小结
第3章 连接器
3.1 StringManager类
3.2 应用程序
3.2.1 启动应用程序
3.2.2 HttpConnector类
3.2.3 创建HttpRequest对象
3.2.4 创建HttpResponse对象
3.2.5 静态资源处理器和servlet处理器
3.2.6 运行应用程序
3.3 小结
第4章 Tomcat的默认连接器
4.1 HTTP 1.1的新特性
4.1.1 持久连接
4.1.2 块编码
4.1.3 状态码100的使用
4.2 Connector接口
4.3 HttpConnector类
4.3.1 创建服务器套接字
4.3.2 维护HttpProcessor实例
4.3.3 提供HTTP请求服务
4.4 HttpProcessor类
4.5 Request对象
4.6 Response对象
4.7 处理请求
4.7.1 解析连接
4.7.2 解析请求
4.7.3 解析请求头
4.8 简单的Container应用程序
4.9 小结
第5章 servlet容器
5.1 Container接口
5.2 管道任务
5.2.1 Pipeline接口
5.2.2 Valve接口
5.2.3 ValveContext接口
5.2.4 Contained接口
5.3 Wrapper接口
5.4 Context接口
5.5 Wrapper应用程序
5.5.1 ex05.pyrmont.core.SimpleLoader类
5.5.2 ex05.pyrmont.core.SimplePipeline类
5.5.3 ex05.pyrmont.core.SimpleWrapper类
5.5.4 ex05.pyrmont.core.SimpleWrapperValve类
5.5.5 ex05.pyrmont.valves.ClientIPLoggerValve类
5.5.6 ex05.pyrmont.valves.HeaderLoggerValve类
5.5.7 ex05.pyrmont.startup.Bootstrap
5.5.8 运行应用程序
5.6 Context应用程序
5.6.1 ex05.pyrmont.core.SimpleContextValve类
5.6.2 ex05.pyrmont.core.SimpleContextMapper类
5.6.3 ex05.pyrmont.core.SimpleContext类
5.6.4 ex05.pyrmont.startup.Bootstrap
5.6.5 运行应用程序
5.7 小结
第6章 生命周期
6.1 Lifecycle接口
6.2 LifecycleEvent类
6.3 LifecycleListener接口
6.4 LifecycleSupport类
6.5 应用程序
6.5.1 ex06.pyrmont.core.SimpleContext类
6.5.2 ex06.pyrmont.core.SimpleContextLifecycleListener类
6.5.3 ex06.pyrmont.core.SimpleLoader类
6.5.4 ex06.pyrmont.core.SimplePipeline类
6.5.5 ex06.pyrmont.core.SimpleWrapper类
6.5.6 运行应用程序
6.6 小结
第7章 日志记录器
7.1 Logger接口
7.2 Tomcat的日志记录器
7.2.1 LoggerBase类
7.2.2 SystemOutLogger类
7.2.3 SystemErrLogger类
7.2.4 FileLogger类
7.3 应用程序
7.4 小结
第8章 载入器
8.1 Java的类载入器
8.2 Loader接口
8.3 Reloader接口
8.4 WebappLoader类
8.4.1 创建类载入器
8.4.2 设置仓库
8.4.3 设置类路径
8.4.4 设置访问权限
8.4.5 开启新线程执行类的重新载入
8.5 WebappClassLoader类
8.5.1 类缓存
8.5.2 载入类
8.5.3 应用程序
8.6 运行应用程序
8.7 小结
第9章 Session管理
9.1 Session对象
9.1.1 Session接口
9.1.2 StandardSession类
9.1.3 StandardSessionFacade类
9.2 Manager
9.2.1 Manager接口
9.2.2 ManagerBase类
9.2.3 StandardManager类
9.2.4 PersistentManagerBase类
9.2.5 PersistentManager类
9.2.6 DistributedManager类
9.3 存储器
9.3.1 StoreBase类
9.3.2 FileStore类
9.3.3 JDBCStore类
9.4 应用程序
9.4.1 Bootstrap类
9.4.2 SimpleWrapperValve类
9.4.3 运行应用程序
9.5 小结
第10章 安全性
10.1 领域
10.2 GenericPrincipal类
10.3 LoginConfig类
10.4 Authenticator接口
10.5 安装验证器阀
10.6 应用程序
10.6.1 ex10.pyrmont.core.SimpleContextConfig类
10.6.2 ex10.pyrmont.realm.SimpleRealm类
10.6.3 ex10.pyrmont.realm.SimpleUserDatabaseRealm
10.6.4 ex10.pyrmont.startup.Bootstrap1类
10.6.5 ex10.pyrmont.startup.Bootstrap2类
10.6.6 运行应用程序
10.7 小结
第11章 StandardWrapper
11.1 方法调用序列
11.2 SingleThreadModel
11.3 StandardWrapper
11.3.1 分配servlet实例
11.3.2 载入servlet类
11.3.3 ServletConfig对象
11.3.4 servlet容器的父子关系
11.4 StandardWrapperFacade类
11.5 StandardWrapperValve类
11.6 FilterDef类
11.7 ApplicationFilterConfig类
11.8 ApplicationFilterChain类
11.9 应用程序
11.10 小结
第12章 StandardContext类
12.1 StandardContext的配置
12.1.1 StandardContext类的构造函数
12.1.2 启动StandardContext实例
12.1.3 invoke()方法
12.2 StandardContextMapper类
12.3 对重载的支持
12.4 backgroundProcess()方法
12.5 小结
第13章 Host和Engine
13.1 Host接口
13.2 StandardHost类
13.3 StandardHostMapper类
13.4 StandardHostValve类
13.5 为什么必须要有一个Host容器
13.6 应用程序1
13.7 Engine接口
13.8 StandardEngine类
13.9 StandardEngineValve类
13.10 应用程序2
13.11 小结
第14章 服务器组件和服务组件
14.1 服务器组件
14.2 StandardServer类
14.2.1 initialize()方法
14.2.2 start()方法
14.2.3 stop()方法
14.2.4 await()方法
14.3 Service接口
14.4 StandardService类
14.4.1 connector和container
14.4.2 与生命周期有关的方法
14.5 应用程序
14.5.1 Bootstrap类
14.5.2 Stopper类
14.5.3 运行应用程序
14.6 小结
第15章 Digester库
15.1 Digester库
15.1.1 Digester类
15.1.2 Digester库示例1
15.1.3 Digester库示例2
15.1.4 Rule类
15.1.5 Digester库示例3:使用RuleSet
15.2 ContextConfig类
15.2.1 defaultConfig()方法
15.2.2 applicationConfig()方法
15.2.3 创建Web Digester
15.3 应用程序
15.4 小结
第16章 关闭钩子
16.1 关闭钩子的例子
16.2 Tomcat中的关闭钩子
16.3 小结
第17章 启动Tomcat
17.1 Catalina类
17.1.1 start()方法
17.1.2 stop()方法
17.1.3 启动Digester对象
17.1.4 关闭Digester对象
17.2 Bootstrap类
17.3 在Windows平台上运行Tomcat
17.3.1 如何编写批处理文件
17.3.2 catalina.bat批处理文件
17.3.3 在Windows平台上启动Tomcat
17.3.4 在Windows平台上关闭Tomcat
17.4 在Linux平台上运行Tomcat
17.4.1 如何编写UNIX/Linux Shell脚本
17.4.2 catalina.sh脚本
17.4.3 在UNIX/Linux平台上启动Tomcat
17.4.4 在UNIX/Linux平台上关闭Tomcat
17.5 小结
第18章 部署器
18.1 部署一个Web应用程序
18.1.1 部署一个描述符
18.1.2 部署一个WAR文件
18.1.3 部署一个目录
18.1.4 动态部署
18.2 Deploy接口
18.3 StandardHostDeployer类
18.3.1 安装一个描述符
18.3.2 安装一个WAR文件或目录
18.3.3 启动Context实例
18.3.4 停止一个Context实例
18.4 小结
第19章 Manager应用程序的servlet类
19.1 使用Manager应用程序
19.2 Containerservlet接口
19.3 初始化ManagerServlet
19.4 列出已经部署的Web应用程序
19.5 启动Web应用程序
19.6 关闭Web应用程序
19.7 小结
第20章 基于JMX的管理
20.1 JMX简介
20.2 JMX API
20.2.1 MBeanServer类
20.2.2 ObjectName类
20.3 标准MBean
20.4 模型MBean
20.4.1 MBeanInfo接口与ModelMBeanInfo接口
20.4.2 ModelMBean示例
20.5 Commons Modeler库
20.5.1 MBean描述符
20.5.2 mbean元素示例
20.5.3 自己编写一个模型 MBean类
20.5.4 Registry类
20.5.5 ManagedBean
20.5.6 BaseModelMBean
20.5.7 使用Modeler库API
20.6 Catalian中的MBean
20.6.1 ClassNameMBean类
20.6.2 StandardServerMBean类
20.6.3 MBeanFactory类
20.6.4 MBeanUtil
20.7 创建Catalina的MBean
20.8 应用程序
20.9 小结
深入剖析Tomcat 精彩文摘
MBean服务器中保存了应用程序中注册的所有的MBean。管理应用程序通过MBean服务器来访问MBean实例。可以将JMX与servlet应用程序做个类比,管理应用程序的作用类似于Web浏览器,MBean服务器的作用类似于selfMet容器。MBean服务器提供了使客户端,也就是管理应用程序,访问托管资源的方法。MBean实例就好比是servlet类或JSP页面。Web浏览器无法直接访问selfMet实例或JSP页面,必须要通过servlet容器才可以;管理应用程序也必须要通过MBean服务器来访问MBean实例。
共有4种类型的MBean,分别是标准类型、动态类型、开放类型和模型类型。其中标准类型的MBean最容易编写,但灵活性最低。其他3种类型的灵活型较好,其中我们对模型MBean尤其感兴趣,因为Catalina中就使用了这种类型的,MBean标准gBean将在下一节介绍,并展示如何编写一个MBean。然后,会对模型MBean进行讨论。我们会跳过动态MBean和开放Mgean,因为它们与本章内容无关。感兴趣的读者可以阅读./MX规范1.2.1来获取更多详细信息。
从结构上讲,JMX规范分为3层:设备层、代理层和分布式服层。MBean服务器位于代理层,MBean位于设备层。分布式服务层会在JMx规范将来的版本中涉及。
设备层规范定义了编写可由JMx管理的资源的标准,即如何写MBean。代理层定义了创建代理的规范。代理封装了MBean服务器,提供了处理MBean的服务。代理和它所管理的MBean通常都位于同一个Java虚拟机中。由于JMx规范附带了一个参考实现,因此并不需要自己编写M_Bean服务器。参考实现提供了创建默认MBean服务器的方法。
本文来自润情无声投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。