Tomcat 源码学习 之 StandardService

 

类名org.apache.catalina.core.StandardService
继承关系

LifecycleMBeanBase

Service

关联类

Container

Connector

Excecutor

实现功能管理子组件

 

 

 

 

分析

从这节开始,我们就真正进入了对开发人员来说至关重要的一些内容,Connector,Container以及Excecutor。而所有这些,都是被StandardService类管理和维护的。

 

 

 

 

Connector

Tomcat官方对于Connector的定义这样的:A "Connector" represents an endpoint by which requests are。  received and response are returned. 也就是说,Connector是Tomcat接受Request和发送response的端口。

 

Tomcat目前支持两种Connector:

 

  • HTTP
  • AJP

HTTP Connector

Http Connector顾名思义,是Tomcat用来接收HTTP Request和发送HTTP Response的端口,支持HTTP/1.1协议。正是因为拥有了HTTP Connector, Tomcat得以处理servlet和JSP页面,并可以被用作独立的web Server。而HTTP Connector监听server上的某个端口,并将request发送到后台的Engine中进行处理,并返回response.

 

对于每一个request, Connector都会使用一个单独的线程来处理。如果request数量大于线程数量,Connector就会创建更多的线程,直到达到峰值。后面再来的request就会被丢弃。(拒绝服务攻击就是基于这样的原理)

 

Tomcat7中使用的HTTP Connector的代号是Coyote.

AJP Connector

相应的,AJP Connector支持AJP协议,其通常被用于两个web connector之间的通讯。

 

常用的case是当你希望将Tomcat集成到Apache中时,你希望Apache帮你处理静态内容,而Tomcat专注于动态内容时,AJP Connector便可以从中协调。

 

 

Executor

Executor是一个可以在Tomcat各个组件中共享的线程池。Tomcat在过去版本中,曾经有过各个组件拥有自己的线程池,但现在你可以用Executor在各个组件中共享,提高性能。

 

 

Container

Tomcat 7中包含以下几种Container:

 

  • Context
  • Engine
  • Host
  • Cluster

Context

一个Context代表了一个web application. 而根据Sevlet Specification中的描述,WAR包或者具有WAR包文件结构的文件夹都可以被认为是一个web application. 因此,对于部署在Tomcat中的每一个应用,都相应的是一个Context.

 

任何一个Context都包含在一个Host中。

 

Engine

Engine包含了整个request机制的流程,当Connector接收到request后,就发送给Engine来处理。

 

Host

Host是一台虚拟主机,一个虚拟主机会拥有一个独立的网络服务器名,这个名字会在DNS上注册并供客户访问使用。

 

任何一个host都包含在Engine中。

 

Cluster

Tomcat的cluster提供了会话复制,上下文属性复制已经全局WAR包部署等功能。我们可以通过配置Cluster来实现负载均衡。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值