Java Web——アクセスtomcatプロセス

6308 ワード

Java Web——アクセスtomcatプロセス
tomcatにアクセスすると、server.xml、web.xmlはサーバーを提供するプロセスを設定しています。
server.xmlファイル分析
Tomcat構成分析Tomcat Serverの構成部分Serviceは、一つ以上のConnectorからなり、一つのEngineからなります。すべてのConnectorが獲得した顧客の要求を処理します。Connector一つのConnectorは、ある指定されたポートで顧客の要求を聴取し、獲得した要求をEngineに渡します。Engineから回答を得て、顧客TOMCATの典型的なConnectorに戻ります。browserからのhttp要求を直接聞きます。一つは他のWebServerからの要求Coyote Http/1.1 Connectorがポート8080でクライアントbrowserからのhttp要求Coyote JK 2 Coyote JConnectorを聞きます。のservlet/jspエージェント要求Coyote SSL HTTP/1.1 Connectorは、ポート8443でクライアントからSSLセキュリティ要求Engine Engineに対して複数の仮想ホストVirtual Hostを設定することができ、各仮想ホストは一つのドメイン名を持っています。この要求をHostに渡してEngineにデフォルトの仮想ホストがあります。要求がどのHostにもマッチしない場合は、HostはVirtual Hostを表すデフォルトHostに渡されます。仮想ホストは、各仮想ホストとあるネットワークドメインDomain Nameが一致する仮想ホストの下に配置されます。各Webアプリは一つのContectに対応しています。一つのContect pathはHostが一つの要求を獲得した時に、この要求をあるConteextに一致させ、そしてこの要求をこのContextに渡してマッチングを処理する方法が「最長マッチング」であるため、一つのpath==「」です。のContectは、HostのデフォルトContectとなります。他のContectのパス名と一致できないすべての要求は最終的にこのデフォルトContectとContectを一致させます。一つのウェブAppliationは一つ以上のServletからContectを構成します。ホーム/conf/web.xmlと$WEBAPP_HOME/WEB-INF/web.xml Servlet類をロードし、Conteetが要求された場合は、自分のマッピングテーブル(mapping table)にマッチするServlet類を探します。見つけたら、このクラスを実行して、要求の応答を得て、戻ってきます。
%TOMCAT_HOME%/conf/web.xmlファイル分析
<servlet>
            <servlet-name>default</servlet-name>
            <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
            <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
            </init-param>
            <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
            </servlet>
サーバー上でモニターを開始し、デフォルトのサーバデフォルトservletをロードし、ユーザのHTTP要求がどのservletにもマッチしない場合、このservletが実行されます。
<servlet>
            <servlet-name>jsp</servlet-name>
            <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
            <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
            </init-param>
            <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
            </init-param>
            <load-on-startup>3</load-on-startup>
            </servlet>
要求されたのがJSPページである場合(*.jsp)、このservletはJSPコンパイラとして呼び出され、要求されたJSPページをservletとしてコンパイルして実行する。
 
Tomcat Serverはhttp要求を処理する過程
 
私の仮想ホストとサイトの情報構成は以下の通りであると仮定します。
<Host name="www.braden.com" appBase="e:\sohu">
<Context path="/" docBase="e:\www\braden\mail" />
</Host
お客様からの要求は:http://www.braden.com:8080/braden/hello.jsp
1)要求は本機のポート8080に送信され、そこで聞きつけられたCoyote HTTP/1.1 Connector取得2)Connectorはこの要求をその所在のServiceのEngineに渡して処理し、Engineからの応答を待つ。3)Engine取得要求wn.brade.com:8080/bradien/hello.jsp、それが所有する仮想ホストと一致するHoness.com。(一致しない場合は、Engineのデフォルトホストと一致します)
<Engine name="Catalina" defaultHost="localhost">
5) www.braden.com Host /braden/hello.jsp , Context
6) Host /braden Context( "" Context )
7) path="/braden" Context /hello.jsp, mapping table servlet
8) Context URL PATTERN *.jsp servlet, JspServlet , servlet , servlet
9) HttpServletRequest HttpServletResponse , JspServlet doGet doPost
10)Context HttpServletResponse Host
11)Host HttpServletResponse Engine
12)Engine HttpServletResponse Connector
13)Connector HttpServletResponse browser
    DNS      tomcat                 ,