![黑马android74期基础中的stm探索_第1页](http://file4.renrendoc.com/view/86a7377842610a23a9a2a93c0b917110/86a7377842610a23a9a2a93c0b9171101.gif)
![黑马android74期基础中的stm探索_第2页](http://file4.renrendoc.com/view/86a7377842610a23a9a2a93c0b917110/86a7377842610a23a9a2a93c0b9171102.gif)
![黑马android74期基础中的stm探索_第3页](http://file4.renrendoc.com/view/86a7377842610a23a9a2a93c0b917110/86a7377842610a23a9a2a93c0b9171103.gif)
![黑马android74期基础中的stm探索_第4页](http://file4.renrendoc.com/view/86a7377842610a23a9a2a93c0b917110/86a7377842610a23a9a2a93c0b9171104.gif)
![黑马android74期基础中的stm探索_第5页](http://file4.renrendoc.com/view/86a7377842610a23a9a2a93c0b917110/86a7377842610a23a9a2a93c0b9171105.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
tomcat4种容器:engine(引擎),host(主机(上下文)wrapper(包装器。一个上下文一般包括一个或者多个包装器,每一个包装器表示一个servlet。首先介绍一个HTTP请求会唤醒的一系列方法,接下来介绍了javax.servlet.SingleThreadModel接口。对于每接,连接器都会调用关联容器的invoke方法。接下来容器调用它的所有子容器的invoke方法.(如上图).上图展示了接器收到一个HTTP连接器调用StandardContext的invoke方法.并且StandardContext的invoke方法必须调用该上下文invokeStandardContextStandardContextValveinvokeStandardContextValve的invoke方法得到合适的包装器来对请求进行服务并调用包装器的invoke方法.(web.xmlservlet信息)StandardWrapperValve的invoke方调用包装器的allocate方法获得一个servlet的实例。(如果servlet实例在tomcat内存中存在,allocate方加载该servlet实例而不是创建servlet实例,loadservletinitservletjavax.servlet.SingleThreadModel接口.ServletSIngleThreadModel就能保证它们的servlet是线程安全的。但显然并非如此.请看下文StandardWrapperservlet在servlet第一次被请求的时候,StandardWrapper加载servlet类。它是动态的加载servlet,所以需要知道servlet类的完全限定名称。通过StandardWrapper类的setServletClass方法将servlet的类名传递给StandardWrapperStandardWrapperValveservletservlet是否实现了SingleThreadModel接口。AllocateservletSingleThreadModel接口,StandardWrapperservlet一次,对于以后的请求返STMservlet,情况就有所不同了。StandardWrapperSingleThreadModelservletserviceStandardWrapper维持一个SingleThreadModelservlet的实例,下面是它如何调用servlet的service方法:可以看到,servletservice方法调用保持单线程(862loadServlet方法).显然,SingleThreadModelservlet实例池(instancePool).这在下面会详细介绍AllocatingtheStandardWrapperValveinvokeallocateservlet的实例。该方法签名如下:publicjavax.servlet.Servletallocate()throwsServletException;由于要支持STMservletSTMservlet。基本结构如下(见下图singleThreadModelservletSingleThreadModelservlet。它的初始值是false,loadServlet方检测加载的servlet是否是STM的,如果true第一部分:对于非STM第二部分:STMStandardWrapperSTMservletallocate尝试返回池中的一个实例,变量intancePool是一个java.util.Stack类型的STMservletloadServletallocateSTMservlet实例,前提是实例的数目不超过最大数目,该数目由maxInstances整型定义,默认值是20.(下图)StandardWrappernInstancesSTMallocate上面的代码使用一个while循环等待直到nInstances的数目少于或等于countAllocated(。在循环里,allocate方法检查nInstance的值,如果低于maxInstances的值,调用loadServlet方法并将该实例添加到池中,增加nInstances的值。如果nInstances的值等于或大于maxInstanceswait方法,直到一个实例被返回。STMservlet实例.servlet创建一个容器(栈),当同时有多个请求同一个servlet时会尝试从容器中取得servlet实例(如果取完了就会继续创建),当servlet完成任务后,servlet放回容器中待命.Servlet的serviceservlet容器可以保证同步进入一个servl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (高清版)DB37∕T 3048-2017 自主可控软件测试与认证规范
- 《避雷器测试》课件
- 【语文】学习活动三 辨识媒介信息课件 2024-2025学年统编版高一语文必修下册
- 《财务预算》课件2
- 语言和感知课件
- 秘书公共卷复习测试题
- 环境监测站-水分析练习卷含答案
- 汽车底盘电控系统检修-练习测试题附答案
- 二零二五年度文化传播公司艺人经纪合同
- 临床化疗药物外渗预防处理
- JJF1175-2021试验筛校准规范-(高清现行)
- 产品结构设计概述课件
- 八年级下综合实践教案全套
- 第8课《山山水水》教学设计(新人教版小学美术六年级上册)
- word 公章 模板
- Python程序设计ppt课件完整版
- T∕ZSQX 008-2020 建设工程全过程质量行为导则
- 质量管理体系基础知识培训-2016
- 《腹膜透析》ppt课件
- 甲醇催化剂说明书
- 北京课改版(2021年春修订版)数学四年级下册全册教学课件
评论
0/150
提交评论