`
onlyor
  • 浏览: 370617 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

tomcat 组件 Top level view

阅读更多

Tomcat 分为很多组件,这些组件一起协同工作。

这些组件包括: Server,Service,Connector,Engine,Host,Context,Wrapper.

这么一堆组件,看起来比较复杂,怎么去理解呢?本文主要来个top level view

 

回到我们最初的对servlet 容器的理解,一个servlet 容器最重要的功能无非就是接受http 请求,解析http 请求生成request ,并调用servlet ,生成响应response 。那么以上工作的入口在哪里,没错,那就是Connector 组件。先来认识一下Connector 组件。

 

Connector组件

Connector 主要功能是Socket 连接等待Http 请求,创建javax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletResponse 实例,并将其作为参数调用容器。当然Connector 并不只处理http 协议的请求,支持多种协议如httpsAJP/1.3 等。不同的Connector 代表了不同的协议,同时在不同的端口上面监听。这个可以再Server.xml 里进行配置。connector的工作就像下图的前半部分:

 



(上图截自 tomcat developer guide )

 

 

从以上看出Connector 负责接受请求和生成requestRequest 创建过程:parse headerparse cookieparse parameter 、设置encodeing 等)和response 。再把参数传给容器。最后我们是要由url 请求对应的servletservice 方法来接收这两个参数,并处理生成response 。那么后面的load servletinvoke servlet 的工作就交给容器来处理了,容器说起来很抽象诶,它代表什么?下面介绍一下Container

 

Container组件

没错,容器只是一个抽象的概念,在tomcatEngine,Host,Context,Wrapper 都代表容器。它们各自的功能如下:

Engine :代表了整个Catalina servlet 引擎.

Host: 代表了一个具有多个应用实例(Context) 的虚拟主机( 注:tomcat 里默认只有一个localhost 虚拟主机,所有的请求默认都转发给它,它的应用实例都默认的放在webapps 目录下面。Tomcat 支持多虚拟主机,可以再server.xml 里面进行配置).

Context 代表了一个应用实例,也就是我们平常的一个web 应用。一个Context 有一个或者多个wrappers.

Wrapper: 代表了一个单独的servlet.

有了ConnectorContainer(Engine,Host,Context,Wrapper) 似乎一个servlet 容器就可以工作了,那么文章一开始提到的ServerService 干啥用的呢?

Service组件

Service 包含了一个Engine 元素和多个Connector 元素。上文提到的connector 有多种,这些connector 可以共享一个servlet 引擎。同时分开运行。而其管理是有service 来管理的。

Server组件

Server 它代表了整个Servlet 容器。它提供了一套启动和停止整个系统的机制。而我们不用去关心内部的原理。它包含了一个或者多个service 实例。当你启动一个server ,它把所有的内部组件都初始化。同时它提供一个监听端口,时刻监听shutdown 命令。并负责整个系统的stop 过程。同时Server 也提供了JNDI 等其他java EE 服务的实现。可以再server 里初始化JNDI 数据源(server.xml 里配置)

 

以上包括了tomcat的全部组件,其关系可由下图片表示:



(上图截自 tomcat developer guide )

 

 

Server.xml配置文件

关心内部的一个Server起来的时候,它怎么知道要启动哪些Service或Connector?在server起来的时候是通过读取server.xml里的配置来组织和初始化整个容器,也就是说server.xml实际上就代表了一个server实例,它包含了server要在哪个端口上面监听shutdown,server使用哪个类?connector应该包括哪些,各个connector的监听端口和协议是什么?以及有几个host,host名称是什么?host的base目录在哪里?默认的context是哪个?还有Engine、service等等一些列属性。

下面看看一个tomcat默认的server.xml:

Xml代码 复制代码 收藏代码
  1. <Server port="8005" shutdown="SHUTDOWN">
  2. <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  3. <Listener className="org.apache.catalina.core.JasperListener" />
  4. <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  5. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  6. <!-- Global JNDI resources
  7. Documentation at /docs/jndi-resources-howto.html
  8. -->
  9. <GlobalNamingResources>
  10. <Resource name="UserDatabase" auth="Container"
  11. type="org.apache.catalina.UserDatabase"
  12. description="User database that can be updated and saved"
  13. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  14. pathname="conf/tomcat-users.xml" />
  15. </GlobalNamingResources>
  16. <Service name="Catalina">
  17. <Connector port="8080" protocol="HTTP/1.1"
  18. maxThreads="150" connectionTimeout="20000"
  19. redirectPort="8443" />
  20. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  21. <Engine name="Catalina" defaultHost="localhost">
  22. <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  23. resourceName="UserDatabase"/>
  24. <Host name="localhost" appBase="webapps"
  25. unpackWARs="true" autoDeploy="true"
  26. xmlValidation="false" xmlNamespaceAware="false">
  27. </Host>
  28. </Engine>
  29. </Service>
  30. </Server>

最后再发一份关于tomcat的学习资料(How tomcat works.),感觉不错,有需要可以下载研究一下,不过是基于tomcat4、5的。

分享到:
评论

相关推荐

    tomcat 安装 详细安装java tomcat组件

    tomcat 安装 详细安装java tomcat组件 并为你解决http://localhost:8080上不去问题 网上有很多人都弄不明白为什么这个网站上不去

    tomcat组件启动时序图.vsdx

    对于tomcat的启动流程分析,从主流程Bootstrap -&gt; Catalina -&gt; Server -&gt; service -&gt; engine,connector;和分流程1.engine-&gt;host-&gt;context-&gt;wrapper ;2.connector -&gt; ProtocolHandler-&gt;Endpoint;之中的方法调用进行...

    深入剖析TOMCAT中文版

    本书深入剖析Tomcat4和Tomcat5中的每个组件,并揭示其内部工作原理。通过学习本书,你将可以自行开发Tomcat组件,或者扩展已有的组件。Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器...

    tomcat5.5tomcat最新客户端

    tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat...

    tomcat7tomcat8tomcat9

    内含tomcat7 tomcat8 tomcat9免安装版本;供需要的人下载。

    tomcat7,tomcat8,tomcat9

    包含tomcat7,tomcat8,tomcat9,解压、在eclipse配置好即可。

    tomcat 5.0 tomcat 5.0

    tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0

    Tomcat Tomcat Tomcat Tomcat

    Tomcat Tomcat Tomcat Tomcat

    tomcat8.0版本下载

    tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本下载tomcat8.0版本...

    tomcat 系列tomcat 系列

    tomcat 系列tomcat 系列tomcat 系列

    tomcat组件图解 一个web服务器的架构演化史

    主要介绍了tomcat组件图解 一个web服务器的架构演化史,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    tomcat8.0.33

    This is the top-level entry point of the documentation bundle for the Apache Tomcat Servlet/JSP container. Apache Tomcat version 8.0 implements the Servlet 3.1 and JavaServer Pages 2.3 specifications ...

    tomcat6.0.35_tomcat_

    tomcat 6.0.35

    tomcat安装包~~

    部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat...

    tomcat license

    tomcat

    tomcat6、tomcat7、tocmat8、tomcat9 linux版、windox版百度云

    tomcat6、tomcat7、tocmat8、tomcat9 linux版、windox版 32位 64位

    Tomcat配置技巧Top10

    Tomcat按照自己的方式,同样提供一个成熟的管理工具,并且丝毫不逊于那些商业化的竞争对手。Tomcat的AdminWebApplication最初在4.1版本时出现,当时的功能包括管理context、datasource、user和group等。当然也可以...

    tomcat8资源下载链接tomcat8

    tomcat8资源下载链接tomcat8tomcat8资源下载链接tomcat8tomcat8资源下载链接tomcat8tomcat8资源下载链接tomcat8

    Tomcat7及Tomcat8

    tomcat工具包,包含tomcat7和tomcat8两个版本

    tomcat 系列 tomcat 系列

    tomcat各个版本大全,tomcat各个版本大全,tomcat各个版本大全,tomcat各个版本大全。

Global site tag (gtag.js) - Google Analytics