• 1. TOMCAT与管理模式介绍 京东研发-零售平台 2016/9
  • 2. Tomcat核心结构
  • 3. Server组件Server是最外层元素,在Service中通过不同的Connector来连接Engine。Engine中包括多个Host,而Host又可以配置多个Context。 Server:该元素是server.xml中最重要的元素,他代表了整个JVM,也代表了Tomcat服务器,启动后将在端口8005出等待关闭命令,如果收到“SHUTDOWN”字符串,则关闭服务器。 在server.xml代码如下:  
  • 4. Service组件Service:该元素包含一个Engine元素以及一个或多个Connector元素。Tomcat安装后Service默认的名称为:Catalina,此外还可以配置一个与Apache联合的ServiceCatalina处理所有直接从Tomcat服务器接收的Web请求 Apache处理所有有Apache服务器转发过来的Web请求在server.xml代码如下:                  
  • 5. Connector组件Connector:表示客户端和Service之间的链接。Connector的主要功能是接受、响应用户请求。常用的Connector有HTTP/1.1 Connector和AJP Connector。HTTP/1.1 Connector的实例监听在用户配置的端口上,当应用服务器启动时,HTTP/1.1 Connector负责创建若干线程,用于处理用户请求,创建的线程数目取决于用户配置的minThreads值,默认为5,当有更多的用户请求到来时,HTTP/1.1 Connector将会创建更多的线程用于处理请求,创建线程的最大值由maxThreads定义,默认值为20,当所有的线程都在忙于处理用户请求时,新到来的请求将会放入HTTP/1.1 Connector创建的Socket队列中,队列的长度由acceptCount属性定义,当等待队列也被占用满了,新来的用户请求将会收到connection refused错误。AJP Connector主要使用AJP协议和Web Connector通信,通常用于集群中。
  • 6. Connector组件3.1.HTTP/1.1 Connector: 会创建处理客户端请求的线程池,下限minProcessors,上maxProcessors属性中配置。3.1.1.non-SSL HTTP Connector:非安全的HTTP连接器,能够执行servlet和jsp,监听端口8080 3.1.2.SSL HTTP Connector:安全的HTTP连接器,采用RSA加密,监听端口8443 3.1.3.Prox HTTP Connector:代理HTTP连接器,监听端口80823.2.JK 2 Connector:和其他Web Connector通过AJP协议通信。可以将tomcat和apache集成,使用apache处理静态文件,支持均衡负载。在server.xml代码如下:   
  • 7. Connector组件
  • 8. Connector组件属性连接器解释默认值必有enableLookupsHTTP,JK调用request.getRemoteHost()方法时获取到客户端的机器True是RedirectPortHTTP,JK如果Connector的配置是支持非SSL的请求,当一个SSL请求到来时,服务器会自动的将请求重定位到redirectPort。8443是acceptCountHTTP等待队列的长度,默认值是10。100否maxThreadsHTTP用于处理用户请求的最大线程数20否portHTTP,JK监听端口…是DebugHTTP,JK输出日志,数字越大,日志越详细0否Connector常用属性
  • 9. Engine组件Engine:每个Service只能有一个Engine,处理同一个Service的所有Connector接收到的客户请求。在server.xml代码如下: Engine重要配置属性: jvmRoute:指定名字是apache认识的唯一表示,使得在集群中他们的的session是共享的。
  • 10. Host组件 Host:一个Engine可以包含多个Host,每个Host代表一个虚拟主机,他包含一个或多个Web应用。在server.xml 代码如下 Host常用属性:                    appBase:虚拟主机目录,默认为webapps                    alias:指定虚拟主机别名,可以指定多个别名                    代码如下                                                 …                             www.mycompany.com                             www.company.com                             …                       则可以通过localhost、www.mycompany.com、www.company.com访问该虚拟主机下的Web应用,为了使这个策略生效,所有域名必须在DNS服务器映射,并指向运行Catalina实例的同一个主机
  • 11. Context组件5. Context:表示一个Web应用 Context常用属性: path:指定访问Web的URL入口,写作”/myweb”,这样的请求url为:http://localhost:8080/myweb/***,默认为””,既可以不需要          docBase:应用程序的路径,可以使绝对路径,默认“ROOT“Server.xml配置  
  • 12. Valve组件(嵌套组件)Valve:管道过滤器  访问日志Valve:AccessLogValve 代码如下:           主要属性:          Directory:日志保存路径          Prefix:log文件前缀,如access_log.          Suffix:log文件后缀,如.txt          Pattern:日志格式
  • 13. Valve组件单次登录Valve:SingleSignOnValve 如果希望用户可以登录到虚拟主机中的任意一个web应用,而且登录以后所有其他的web应用都能使用用户的身份(即不需要重新登录),就可以使用单次登录远端地址过滤器:RemoteAddrValve 将发起请求的客户端的IP地址和一个或多个正则表达式进行比较,以决定或拒绝这个请求 代码如下:        
  • 14. Listener和Cluster组件(嵌套组件)Listener          用于创建一个LifecycleListener对象,监视所在容器的创建和销毁。可以出现在Server、Engine、Host、Context中(嵌套组件)Cluster          未Host配置集群服务,以提高更高的服务性能,他可以出现在Host元素中、代码如下          
  • 15. Tomcat核心结构
  • 16. Tomcat时序图
  • 17. 管道模式
  • 18. 管道模式类图
  • 19. 具体代码
  • 20. 具体代码
  • 21. 具体代码
  • 22. 具体代码
  • 23. Tomcat运行流程图
  • 24. 模拟计算模型
  • 25. 模拟计算模型
  • 26. 有问题吗?Q&A
  • 27. 谢 谢! 京东技术学院官方微信北京市朝阳区北辰西路8号北辰世纪中心A座6层 6F Building A, North-Star Century Center, 8 Beichen West Street, Chaoyang District, Beijing 100101 T. 010-5895 1234 F. 010-5895 1234 E. xingming@jd.com www.jd.com