黑马android74期基础中的stm探索_第1页
黑马android74期基础中的stm探索_第2页
黑马android74期基础中的stm探索_第3页
黑马android74期基础中的stm探索_第4页
黑马android74期基础中的stm探索_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论