[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.

原创粉丝点击