2011年(264)
分类: Java
2011-08-01 21:23:17
PPT1. Tomcat7核心架构
分两大块
1.容器就绪阶段
容器启动、组件装配、部署Web应用、Connector启动
2.请求处理阶段
接收请求、http解析、uri mapping、执行servlet
1.1 容器启动
• 建立ClassLoader
1. 由lib目录下的jar包组成
2. 主要用来加载Tomcat自身的类
3. 或者加载其他共用的类,比如JDBC Driver
4. 避免与应用冲突,尽量不要放log4j这样的jar包
• 建立Digester XML解析嚣
1. 用途: 解析conf/server.xml文件
2. 解析器实现分析
① 前缀模式匹配
② 基于规则
例:
Xml
:
Java:
digester.addObjectCreate("Server",
"org.apache.catalina.core.StandardServer",
"className");
digester.addSetProperties("Server");
代码含义:
遇到“Server”元素时,建立一个StandardServer实例, 并把此元素的属性的值注入到此实例中。
1.2 组件装配
• 有哪些组件?
– Server、Service
– Engine、Host、Context、Wrapper
– Pipeline、Valve
– …….
• 组件生命周期(Lifecycle)
– Init => start => stop => destroy
核心架构
1.3 部署web应用
• 基于LifecycleListener机制
1. HostConfig Listener
• 监听Host组件的生命周期
• 加载conf\Catalina\localhost目当中的xml文件
• 加载webapps下的war包
• 加载webapps下的目录名
• 生成Context组件
2. ContextConfig Listener
• 监听Context组件的生命周期
• conf/context.xml文件解析
• conf/web.xml文件解析
• WEB-INF/web.xml文件解析
• 合并三个文件的配置信息
1.4 Connector启动
• 支持两种协议
1. HTTP
① BIO
Blocking IO 有时也叫JIO( java.io))
2.NIO
New IO 对应java.nio)
3.APR
Apache Portable Run-time libraries,Apache可移植运行
2. AJP
① BIO
② NIO
③ AP