zoukankan      html  css  js  c++  java
  • Tomcat学习笔记(四)

       Servlet容器部分

          servlet容器用来处理请求servlet资源,并为web客服端填充response对象模块,在tomcat中,共有4种类型的容器,分别是:Engine、Host、Contex和Wrapper。 
          4种类型的容器,分别对应不同的层次: 
              Engine:表示整个Catalina servlet引擎 
              Host:表示包含有一个或者多个Context容器的虚拟机 
              Context:表示一个Web应用程序。一个Context可以多个Wrapper。 
              Wrapper:表示独立的servlet。 
              ContainerBase的抽象类实现了Container接口,同时这4个接口的实现并且继承ContianerBase类为StandardEngine,StandardHost,StandardContext,StandardWrapper

          Engine与Host的关系 
          StandardEngine

    public void addChild(Container child) {
    
            if (!(child instanceof Host))
                throw new IllegalArgumentException
                    (sm.getString("standardEngine.notHost"));
            super.addChild(child);
    
        }

          Host与Context的关系 
         StandardHost

    public void addChild(Container child) {
            child.addLifecycleListener(new MemoryLeakTrackingListener());
            if (!(child instanceof Context))
                throw new IllegalArgumentException
                    (sm.getString("standardHost.notContext"));
            super.addChild(child);
    
        }

        Context与Wrapper的关系 
       StandardContext

        

    public void addChild(Container child) {
            // Global JspServlet
            Wrapper oldJspServlet = null;
    
            if (!(child instanceof Wrapper)) {
                throw new IllegalArgumentException
                    (sm.getString("standardContext.notWrapper"));
            }
            boolean isJspServlet = "jsp".equals(child.getName());
    
            // Allow webapp to override JspServlet inherited from global web.xml.
            if (isJspServlet) {
                oldJspServlet = (Wrapper) findChild("jsp");
                if (oldJspServlet != null) {
                    removeChild(oldJspServlet);
                }
            }
    
            super.addChild(child);
    
            if (isJspServlet && oldJspServlet != null) {
                /*
                 * The webapp-specific JspServlet inherits all the mappings
                 * specified in the global web.xml, and may add additional ones.
                 */
                String[] jspMappings = oldJspServlet.findMappings();
                for (int i=0; jspMappings!=null && i<jspMappings.length; i++) {
                    addServletMapping(jspMappings[i], child.getName());
                }
            }
        }

           然而StandardWrapper不能addChild

    public void addChild(Container child) {
            throw new IllegalStateException
                (sm.getString("standardWrapper.notChild"));
        }

    容器关系如下:

        

  • 相关阅读:
    数据分析人员常犯的五大错误以及预防方法
    SAS中的Order By - Proc Sort
    SAS中的Order By - Proc Sort
    安全数据分析理念的变化
    安全数据分析理念的变化
    spss如何选择需要的变量?
    更改VS2010的[默认开发语言]
    POJ 1273 Drainage Ditches (网络最大流)
    HLS图像处理系列——肤色检測
    并发问题:大数据量的訪问
  • 原文地址:https://www.cnblogs.com/lzeffort/p/7044216.html
Copyright © 2011-2022 走看看