【Tomcat 9ソース分析】コンポーネントとフレームワークの概要
9279 ワード
転載は出典を明記してください.http://blog.csdn.net/linxdcn/article/details/73321304
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インタフェースで重要な方法は次のとおりです.
2.2 Service
サービスは定義されたインタフェースであり、デフォルトの実装はStandardServiceであり、主な役割は論理的にConnectorとContainer を含む
Serviceインタフェースで重要な方法は次のとおりです.
2.3 Connector
コネクタは定義されたコネクタクラスであり、デフォルトで実装されるプロトコルはhttp、http、AJPであり、主な役割はクライアントの要求 を異なるプロトコルに従って解析する.解析済み要求をConnector関連Engineコンテナ処理 に転送する
コネクタのデフォルトでサポートされているプロトコルは次のとおりです.
2.4 Engine
Engineは定義されたインタフェースで、デフォルトの実装はStandardEngineで、主に以下のモジュールがあります. Cluster:tomcat管理を実現する Realm:ユーザー権限管理モジュール を実現 PipelineとValve:Pipeline上の各Valveを処理する責任チェーンモデルです.コネクタからの変数をホスト容器 に簡単に渡すだけです
2.5 Host
Hostは定義されたインタフェースであり、デフォルトの実装はStandardHostであり、主に以下のモジュールがある. Cluster:tomcat管理を実現する Realm:ユーザー権限管理モジュール を実現 PipelineとValve:Pipeline上の各Valveを処理し、責任チェーンモード である.
2.6 Context
Contextは定義されたインタフェースであり、デフォルトの実装はStandardContextであり、主に以下のモジュールがある. Realm:ユーザー権限管理モジュール を実現 PipelineとValve:Pipeline上の各Valveを処理し、責任チェーンモード である. Manager:主にアプリケーションのセッション管理モジュール Resources:各ウェブappに対応する配置構造のパッケージ Loader:各web appに対する独自のclassloaderのパッケージ です. Mapper:要求リソースURIと各対応する処理wrapperコンテナとのマッピング関係をカプセル化する 2.7 Wrapper
Wrapperは定義されたインタフェースであり、デフォルトの実装はStandardWrapperであり、主に以下のモジュールがある. PipelineとValve:Pipeline上の各Valveを処理し、責任チェーンモード である.サーブレットとサーブレットStack:Wrapperパッケージを保存するサーブレット 転載は出典を明記してください.http://blog.csdn.net/linxdcn/article/details/73321304
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であり、主な役割は
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であり、主な役割は
コネクタのデフォルトでサポートされているプロトコルは次のとおりです.
/**
* 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
Engineは定義されたインタフェースで、デフォルトの実装はStandardEngineで、主に以下のモジュールがあります.
2.5 Host
Hostは定義されたインタフェースであり、デフォルトの実装はStandardHostであり、主に以下のモジュールがある.
2.6 Context
Contextは定義されたインタフェースであり、デフォルトの実装はStandardContextであり、主に以下のモジュールがある.
Wrapperは定義されたインタフェースであり、デフォルトの実装はStandardWrapperであり、主に以下のモジュールがある.