[Tomcat剖析] 1 Tomcat整体架构
来源:互联网 发布:淘宝鞋子关键词 编辑:程序博客网 时间:2024/04/28 16:16
Tomcat是一个Servlet容器,提供了对Servlet/JSP技术的支持,也提供了JNDI与JMX API的实现。Tomcat并不是完整的JavaEE应用服务器,因为它并未对完整的JavaEE api提供支持。但是如今流行开源框架如Spring、Struts、Hibernate等均可运行在tomcat中。
1 整体架构
上图表示了Tomcat的整体架构,Tomcat为上述结构中的每一个功能定义了一个接口(Interface),就像分层模式中,层与层之间定义的接口一样,这样整个Tomcat依赖于接口而不依赖与实现,可以灵活的更新实现方法。
- Server:表示Tomcat服务器本身,是对服务器功能最顶层的抽象,一般情况下,均需要一个顶层抽象来表示整个软件。它包含了其他所有的组件。
- Service:表示对服务器提供的服务。比如提供Servlet功能的服务、静态Http资源的服务等。Service包含一个或者多个Connector、以及一个Engine。
- Connector:连接器就像客户端浏览器与服务器的桥梁,从桥的一端接受客户请求,在另一端将请求翻译成Tomcat需要的信息格式。连接器可以针对不同通信协议,如HTTP协议、AJP协议,分别实现。
- Engine:Engine表示整个Servlet容器。它提供了Servlet规范中的功能,既然Tomcat是Servlet容器,那么必须有这样一个抽象来表示整个Servlet容器。
- Logger:作为Servlet容器的组件提供日志功能
- Valve:阀这个词乍一听有些费解,它像一个阀门,打开后就会实现某种功能,Servlet中含有多个阀,并且阀之间相互连接,打开一个阀后会自动打开下一个阀。在处理客户端的请求时候,用这种方式,来执行一系列的动作。
- Realm:Realm用于执行用户验证、授权,它就像一个存储了所有用户信息的数据库,从而对客户端用户身份进行验证授权。
- Host:Host表示虚拟主机的功能。由于一个Tomcat上可能为多个主机提供服务,因此Tomcat将这种功能抽象出来。比如一个Tomcat中同时为多个不同的域名、主机名提供服务,就对应了多个不同的Host实现。
- Context: 在一个单独的Web应用中,不同的资源也有不同的路径。Context就表示一个Web应用所有资源的结合。
- Wrapper:一个Wrapper表示一个Sevlet类,Tomcat对Servlet类进行包装,使其能够通其他组件相互兼容。
2 按需配置
$CATALINA_HOME/conf
目录下的server.xml
是Tomcat的基本配置文件,描述了整个Tomcat的骨架。文件中xml元素也上述的整体结构是一一对应的,可以根据实际需要来修改这个配置文件,表现了良好的软件架构带来的灵活扩展能力。
参考文献
[1]库尔尼亚万, 德克曹旭东. 深入剖析Tomcat : How Tomact works: a guide to developing your own Java Servlet container[M]. 机械工业出版社, 2012.
[2]Vivek Chopra Sing Li Jeff Genender. APACHE TOMCAT 6高级编程[M]. 人民邮电出版社, 2009.
阅读全文
0 0
- [Tomcat剖析] 1 Tomcat整体架构
- Tomcat整体架构分析
- Tomcat整体架构浅析
- Tomcat探秘(3):tomcat整体架构
- tomcat原理解析(二):整体架构
- Tomcat源码解析(一):tomcat整体架构解析
- Tomcat整体架构(Tomcat源码阅读系列之二)
- 深度剖析应用服务器Tomcat - 架构设计
- 从整体解读tomcat
- Tomcat整体框架总结
- [Tomcat源码]-架构1
- 《深入剖析tomcat》读书笔记1
- 【tomcat】tomcat架构
- Tomcat架构
- Tomcat 架构
- tomcat架构
- tomcat系列之整体结构
- Tomcat启动大剖析
- Centos6.5使用yum安装mysql
- 结构体中字节对齐的问题
- vc 消息与事件的区别
- 文章标题
- Maven配置Log4j
- [Tomcat剖析] 1 Tomcat整体架构
- Androdi平台camera的相关知识总结
- 不能将参数 1 从“const char [11]”转换为“LPCWSTR”
- HDU 6208 The Dominator of Strings (kkkkkk....mp)
- redis持久化存储
- 消息和事件的区别 VC++解惑
- Android 布局XML性能优化
- weight-init.lua
- 应用SSH增强产品竞争力