欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

tomcat 5 啟動過程官方文檔

系統(tǒng) 1922 0

http://tomcat.apache.org/tomcat-7.0-doc/architecture/startup/serverStartup.txt

      Licensed to the Apache Software Foundation (ASF) under one or more

  contributor license agreements.  See the NOTICE file distributed with

  this work for additional information regarding copyright ownership.

  The ASF licenses this file to You under the Apache License, Version 2.0

  (the "License"); you may not use this file except in compliance with

  the License.  You may obtain a copy of the License at



      http://www.apache.org/licenses/LICENSE-2.0



  Unless required by applicable law or agreed to in writing, software

  distributed under the License is distributed on an "AS IS" BASIS,

  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

  See the License for the specific language governing permissions and

  limitations under the License.



Tomcat 5 Startup Sequence



Sequence 1. Start from Command Line

Class: org.apache.catalina.startup.Bootstrap

What it does:

    a) Set up classloaders

        commonLoader (common)-> System Loader

        sharedLoader (shared)-> commonLoader -> System Loader

        catalinaLoader(server) -> commonLoader -> System Loader

    b) Load startup class (reflection)

        org.apache.catalina.startup.Catalina

        setParentClassloader -> sharedLoader

        Thread.contextClassloader -> catalinaLoader

    c) Bootstrap.daemon.init() complete



Sequence 2. Process command line argument (start, startd, stop, stopd)

Class: org.apache.catalina.startup.Bootstrap (assume command->start)

What it does:

    a) Catalina.setAwait(true);

    b) Catalina.load()

        b1) initDirs() -> set properties like

                          catalina.home

                          catalina.base == catalina.home (most cases)

        b2) initNaming

            setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,

                    org.apache.naming.java.javaURLContextFactory ->default)

        b3) createStartDigester()

            Configures a digester for the main server.xml elements like

            org.apache.catalina.core.StandardServer (can change of course :)

            org.apache.catalina.deploy.NamingResources

                Stores naming resources in the J2EE JNDI tree

            org.apache.catalina.LifecycleListener

                implements events for start/stop of major components

            org.apache.catalina.core.StandardService

                The single entry for a set of connectors,

                so that a container can listen to multiple connectors

                ie, single entry

            org.apache.coyote.tomcat5.CoyoteConnector

                Connectors to listen for incoming requests only

            It also adds the following rulesets to the digester

                NamingRuleSet

                EngineRuleSet

                HostRuleSet

                ContextRuleSet

        b4) Load the server.xml and parse it using the digester

            Parsing the server.xml using the digester is an automatic

            XML-object mapping tool, that will create the objects defined in server.xml

            Startup of the actual container has not started yet.

        b5) Assigns System.out and System.err to the SystemLogHandler class

        b6) Calls initialize on all components, this makes each object register itself with the

            JMX agent.

            During the process call the Connectors also initialize the adapters.

            The adapters are the components that do the request pre-processing.

            Typical adapters are HTTP1.1 (default if no protocol is specified,

            org.apache.coyote.http11.Http11Protocol)

            AJP1.3 for mod_jk etc.



    c) Catalina.start()

        c1) Starts the NamingContext and binds all JNDI references into it

        c2) Starts the services under <Server> which are:

            StandardService -> starts Engine (ContainerBase ->Logger,Loader,Realm,Cluster etc)

        c3) StandardHost (started by the service)

                Configures a ErrorReportValvem to do proper HTML output for different HTTP

                errors codes

                Starts the Valves in the pipeline (at least the ErrorReportValve)

                Configures the StandardHostValve,

                    this valves ties the Webapp Class loader to the thread context

                    it also finds the session for the request

                    and invokes the context pipeline

                Starts the HostConfig component

                    This component deploys all the webapps

                        (webapps & conf/Catalina/localhost/*.xml)

                    Webapps are installed using the deployer (StandardHostDeployer)

                    The deployer will create a Digester for your context, this digester

                    will then invoke ContextConfig.start()

                        The ContextConfig.start() will process the default web.xml (conf/web.xml)

                        and then process the applications web.xml (WEB-INF/web.xml)



        c4) During the lifetime of the container (StandardEngine) there is a background thread that

            keeps checking if the context has changed. If a context changes (timestamp of war file,

            context xml file, web.xml) then a reload is issued (stop/remove/deploy/start)



    d) Tomcat receives a request on an HTTP port

        d1) The request is received by a separate thread which is waiting in the PoolTcpEndPoint

             class. It is waiting for a request in a regular ServerSocket.accept() method.

             When a request is received, this thread wakes up.

        d2) The PoolTcpEndPoint assigns the a TcpConnection to handle the request.

            It also supplies a JMX object name to the catalina container (not used I believe)

        d3) The processor to handle the request in this case is Coyote Http11Processor,

            and the process method is invoked.

            This same processor is also continuing to check the input stream of the socket

            until the keep alive point is reached or the connection is disconnected.

        d4) The HTTP request is parsed using an internal buffer class (Coyote Http11 Internal Buffer)

            The buffer class parses the request line, the headers, etc and store the result in a

            Coyote request (not an HTTP request) This request contains all the HTTP info, such

            as servername, port, scheme, etc.

        d5) The processor contains a reference to an Adapter, in this case it is the

            Coyote Tomcat 5 Adapter. Once the request has been parsed, the Http11 processor

            invokes service() on the adapter. In the service method, the Request contains a

            CoyoteRequest and CoyoteRespons (null for the first time)

            The CoyoteRequest(Response) implements HttpRequest(Response) and HttpServletRequest(Response)

            The adapter parses and associates everything with the request, cookies, the context through a

            Mapper, etc

        d6) When the parsing is finished, the CoyoteAdapter invokes its container (StandardEngine)

            and invokes the invoke(request,response) method.

            This initiates the HTTP request into the Catalina container starting at the engine level

        d7) The StandardEngine.invoke() simply invokes the container pipeline.invoke()

        d8) By default the engine only has one valve the StandardEngineValve, this valve simply

            invokes the invoke() method on the Host pipeline (StandardHost.getPipeLine())

        d9) the StandardHost has two valves by default, the StandardHostValve and the ErrorReportValve

        d10) The standard host valve associates the correct class loader with the current thread

             It also retrieves the Manager and the session associated with the request (if there is one)

             If there is a session access() is called to keep the session alive

        d11) After that the StandardHostValve invokes the pipeline on the context associated

             with the request.

        d12) The first valve that gets invoked by the Context pipeline is the FormAuthenticator

             valve. Then the StandardContextValve gets invoke.

             The StandardContextValve invokes any context listeners associated with the context.

             Next it invokes the pipeline on the Wrapper component (StandardWrapperValve)

        d13) During the invocation of the StandardWrapperValve, the JSP wrapper (Jasper) gets invoked

             This results in the actual compilation of the JSP.

             And then invokes the actual servlet.

    e) Invocation of the servlet class


  

?

tomcat 5 啟動過程官方文檔


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 奇米影视 首页 | 99中文字幕| 三级成人在线 | 亚洲 欧美精品 | 亚洲欧美韩国日产综合在线 | 播放毛片| 国产精品成人免费一区久久羞羞 | 欧美日韩一区二区三区四区五区 | 电影通午夜 | 私房色播 | av在线免费播放网站 | 亚州精品天堂中文字幕 | 亚洲精品一区中文字幕乱码 | 欧美剧场成人精品午夜 | 一级毛片视频在线 | 国产网站在线播放 | 欧日韩在线视频 | 欧美日韩性高爱潮视频 | 最新国产网址 | 亚洲国产午夜 | 欧美黄色网| 欧美亚洲视频在线观看 | 一级a毛片免费观看久久精品 | 欧美一区二区在线观看 | 欧美日一区 | 噜噜噜动态图超猛烈 | 成人国内精品久久久久影院 | 久久中文字幕一区二区三区 | 久久高清免费视频 | 国产精品毛片久久久久久久 | 欧美精品一区二区在线观看 | 免费无遮挡www小视频 | 看全色黄大色黄大片爽一次 | 污视频在线网站 | 蜜桃视频在线观看免费视频网站www | 亚洲www在线| 四影虎影ww4hu55.com | 亚洲免费一区 | 刮伦人妇A片1级 | 91网站国产 | 国产精品999 |