【Tomcat 9ソース分析】コンポーネントとフレームワークの概要


転載は出典を明記してください.http://blog.csdn.net/linxdcn/article/details/73321304
1コンポーネントとフレームワークの説明
【Tomcat9源码分析】组件与框架概述_第1张图片
Server:Catalinaサーブレットコンテナ全体を表し、1つ以上のサービスを含めることができます.
Service:ConnectorとContainerの集合を含み、Serviceは適切なConnectorでユーザーの要求を受信し、対応するContainerに送信して処理する
Connector:クライアントから送信されたプロトコルを処理するためのプロトコルを実装するコネクタ.デフォルトの実装プロトコルにはHTTP、HTTPS、AJPがある.
Engine:異なるコネクタからのリクエストを受け、処理後に結果をコネクタに返します.Engineは論理コンテナです
Host:仮想ホスト、すなわちドメイン名またはネットワーク名で、1つのEngineに複数のHostを含めることができます.
Context:導入された特定のWebアプリケーションのコンテキスト.各リクエストはwarパッケージのような対応するコンテキストで処理されます.
Wrapper:定義されたサーブレットに対応
以上から分かるように、Catalinaにはコネクタとコンテナの2つの主要なモジュールがあります.
2コンポーネント機能
2.1 Server
サーバは定義されたインタフェースであり、デフォルトの実装はStandardServerであり、主な役割は
  • は、サーブレット容器に関する構成、すなわちserver.xmlの構成
  • を定義する.
  • 起動ServerはすべてのTomcatコンポーネントを起動し、Serverを閉じるとすべてのコンポーネント
  • を閉じる.
    Serverインタフェースで重要な方法は次のとおりです.
    public interface Server extends Lifecycle {
    
        public int getPort();
    
        public void setPort(int port);
    
        public String getAddress();
    
        public void setAddress(String address);
    
        public String getShutdown();
    
        public void setShutdown(String shutdown);
    
        public void addService(Service service);
    
        public Service findService(String name);
    
        public Service[] findServices();
    
        public void removeService(Service service);
    }
    

    2.2 Service
    サービスは定義されたインタフェースであり、デフォルトの実装はStandardServiceであり、主な役割は
  • 論理的にConnectorとContainer
  • を含む
    Serviceインタフェースで重要な方法は次のとおりです.
    public interface Service extends Lifecycle {
    
        public Engine getContainer();
    
        public void setContainer(Engine engine);
    
        public String getName();
    
        public void setName(String name);
    
        public Server getServer();
    
        public void setServer(Server server);
    
        public void addConnector(Connector connector);
    
        public Connector[] findConnectors();
    
        public void removeConnector(Connector connector);
    }
    

    2.3 Connector
    コネクタは定義されたコネクタクラスであり、デフォルトで実装されるプロトコルはhttp、http、AJPであり、主な役割は
  • クライアントの要求
  • を異なるプロトコルに従って解析する.
  • 解析済み要求をConnector関連Engineコンテナ処理
  • に転送する
    コネクタのデフォルトでサポートされているプロトコルは次のとおりです.
    /**
     * Defaults to using HTTP/1.1 NIO implementation.
     */
    public Connector() {
        this("org.apache.coyote.http11.Http11NioProtocol");
    }
    
    
    public Connector(String protocol) {
        boolean aprConnector = AprLifecycleListener.isAprAvailable() &&
                AprLifecycleListener.getUseAprConnector();
    
        if ("HTTP/1.1".equals(protocol) || protocol == null) {
            if (aprConnector) {
                protocolHandlerClassName = "org.apache.coyote.http11.Http11AprProtocol";
            } else {
                protocolHandlerClassName = "org.apache.coyote.http11.Http11NioProtocol";
            }
        } else if ("AJP/1.3".equals(protocol)) {
            if (aprConnector) {
                protocolHandlerClassName = "org.apache.coyote.ajp.AjpAprProtocol";
            } else {
                protocolHandlerClassName = "org.apache.coyote.ajp.AjpNioProtocol";
            }
        } else {
            protocolHandlerClassName = protocol;
        }
    
        // Instantiate protocol handler
        ProtocolHandler p = null;
        try {
            Class> clazz = Class.forName(protocolHandlerClassName);
            p = (ProtocolHandler) clazz.getConstructor().newInstance();
        } catch (Exception e) {
            log.error(sm.getString(
                    "coyoteConnector.protocolHandlerInstantiationFailed"), e);
        } finally {
            this.protocolHandler = p;
        }
    }

    2.4 Engine
    【Tomcat9源码分析】组件与框架概述_第2张图片
    Engineは定義されたインタフェースで、デフォルトの実装はStandardEngineで、主に以下のモジュールがあります.
  • Cluster:tomcat管理を実現する
  • Realm:ユーザー権限管理モジュール
  • を実現
  • PipelineとValve:Pipeline上の各Valveを処理する責任チェーンモデルです.コネクタからの変数をホスト容器
  • に簡単に渡すだけです
    2.5 Host
    【Tomcat9源码分析】组件与框架概述_第3张图片
    Hostは定義されたインタフェースであり、デフォルトの実装はStandardHostであり、主に以下のモジュールがある.
  • Cluster:tomcat管理を実現する
  • Realm:ユーザー権限管理モジュール
  • を実現
  • PipelineとValve:Pipeline上の各Valveを処理し、責任チェーンモード
  • である.
    2.6 Context
    【Tomcat9源码分析】组件与框架概述_第4张图片
    Contextは定義されたインタフェースであり、デフォルトの実装はStandardContextであり、主に以下のモジュールがある.
  • Realm:ユーザー権限管理モジュール
  • を実現
  • PipelineとValve:Pipeline上の各Valveを処理し、責任チェーンモード
  • である.
  • Manager:主にアプリケーションのセッション管理モジュール
  • Resources:各ウェブappに対応する配置構造のパッケージ
  • Loader:各web appに対する独自のclassloaderのパッケージ
  • です.
  • Mapper:要求リソースURIと各対応する処理wrapperコンテナとのマッピング関係をカプセル化する
  • 2.7 Wrapper
    【Tomcat9源码分析】组件与框架概述_第5张图片
    Wrapperは定義されたインタフェースであり、デフォルトの実装はStandardWrapperであり、主に以下のモジュールがある.
  • PipelineとValve:Pipeline上の各Valveを処理し、責任チェーンモード
  • である.
  • サーブレットとサーブレットStack:Wrapperパッケージを保存するサーブレット
  • 転載は出典を明記してください.http://blog.csdn.net/linxdcn/article/details/73321304