深入剖析Tomcat
第一章 一个简单的web服务器
用ServerSocket 来接受浏览的请求,将socket inputstream得到的内容转换成HTTP request并得到URI,通过socket的outputstream输出到页面
第二章 一个简单的servlet容器
Request 实现ServletRequest 接口
Response 实现 ServletResponse 接口
用URLClassLoader动态加载指定的servlet
PrimitiveServlet 实现Servlet接口
第三章 连接器A
Request实现 HttpServletRequest 接口
Response 实现 HttpServletResponse 接口
加上了点解析url后参数的代码
第四章 Tomcat的默认连接器
持久连接 connection : keep-alive? 等所有资源文件都下载好后再断开连接 (建立/关闭http连接系统开销大)
在HttpConnector类中 用Stack对象来存放 HttpProcessor对象的 线程池 stack对象有push pop操作
HttpProcessor 接受客户端的request,解析
Connect负责接受request,解析,并将request和response发送到container
Container 根据request 实例化具体的serlvet,并调用service方法
Servlet 负责具体的业务逻辑操作
connect为主 connector.setContainer(container);
第五章 servlet容器
Engine -- Host -- Context -- Wrapper
管道任务 过滤器
第六章 生命周期 Lifecycle
为了在servlet容器关闭时,调用servlet的destory方法,session管理器将session对象保存到辅助设备上。
其实没啥用
第七章 日志记录器
第八章 载入器
目的
1> servlet应该只允许载入WEB-INF/classes下的类
2> 提供自动重载功能 用一个线程不断检查类文件的时间戳
Bootstrap -- extension -- system
先用父类加载,如果没有则用子类, 为了保护JVM
防止别人重写java.lang.Object
第九章 Session管理
StandardManager session存放在内 存
如果更加lifecycle来停服务的话,会将当前session信息放到SESSION.ser中,这是个二进制文件
PersistentManager 和Store类连用可以放到File中或是JDBC中
DistributedManager 集群环境中session的复制,能发送/接受其他节点的session信息
也需要和Store连用
第18章 钩子
注册一个 Runtime.getRuntime().addShutdownHook(hook);
程序结束时执行,用以垃圾回收, 但如果强行停止该程序,则无效,鸡肋
第19章 manager
manager管理员UI可以部署启动应用,监控其session数量
第20章 基于JMX管理
用JConsole能看到很多tomcat的配置参数