Tomcatのの基礎知識(A)

アーキテクチャトップ
トップレベル構造(図A)Tomcatに、次のように

 

 

 

Tomcatの一番上のコンテナは、サーバーである、サービスサーバは特定のサービスのために、少なくとも1つを含むことができる、サーバ全体が上の図から分かるように表します。

コネクタおよびコンテナ:サービスは、主に2つの部分からなります。Tomcatは、次のように上の図から心のこれら二つの成分は、自らの役割であることがわかります。

図1に示すように、接続に関連するものを処理するためのコネクタ、及び関連する変換ソケット要求および応答を提供する、パッケージングおよび管理サーブレット、および特定の処理要求の要求に対して2、容器と

サービスは、HTTPとHTTPSのリンクを提供しながらなど、複数の接続が、提供することもできることができますので、一つだけのTomcatサーバーの、サーバーは複数のサービスを含むことができ、サービスは、唯一のコンテナですが、複数のコネクタを持つことができます(エンジン、ホスト、我々は以下議論するコンテキスト)を次のように同じプロトコルの異なるポートに接続され、概略図です。

 

 

 

サービスはサービスだけでなく、生活環境のサービスを提供することができてより多くのコネクタおよびサービスの形成にコンテナ、誰かが、彼女の人生を与えることができる生と死の力を把握する必要があり、それは非サーバーに他なりませんアップ!だから、全体のライフサイクルは、Tomcatのサーバによって制御されます。

さらに、包含関係や親子関係は、Tomcatののconfディレクトリにあるserver.xml構成ファイルで見ることができ、下の図は、完全な設定ファイルのserver.xmlである(Tomcatのバージョンは、コメントの内容を削除8.0)

 

 

 

Tomcatに詳細な設定ファイルの内容は、公式ウェブサイトを閲覧することができます:http://tomcat.apache.org/tomcat-8.0-doc/index.html

上部プロファイルは、また、より明確にブロック図の下側から理解することができます。

 

 

 

8005に設定されたサーバーのポート番号タグ、シャットダウン=「SHUTDOWN」、受信はTomcatに閉鎖される場合、8005にポートモニタ「SHUTDOWN」コマンドを語りました。サーバがサービスを持っている、もちろん、また構成することができ、サービスよりも多い、サービスの内容は、コンテナの左に属し、下記サービスはコネクターです。

Tomcatのトップアーキテクチャの概要:
(1)一つだけのTomcatサーバー、サーバーは複数のサービスを持つことができ、サービスは、複数のコネクタおよびコンテナを持つことができます; 
(2)サーバのTomcat生と死の電力の全体を担当する; 
(4)サービスがあります外部サービスプロバイダ、 
;要求を受信するためのコネクタおよび特定のプロセスの要求と応答にパッケージ(5) 
パッケージングおよび管理サーブレット、および特定の処理要求の要求のコンテナ(6)。

私は本当に遠く、私たちのために、開発者のサーバーとサービスの大多数のための全体と階層化アーキテクチャおよびさまざまなコンポーネントのTomcatのトップの役割との関係を、知っている、と私たちは、コンテンツ構成のほとんどで開発していますコネクタおよびコンテナは、その次のコネクタおよびコンテナを教えに属します。

コネクタおよびコンテナの微妙な関係
、我々は要求をTomcatに送信される一般た後、最初のサービスを通じて、次に私たちにコネクタを与えることを知っている以上、要求し、特定の処理に受け取ったカプセル化された要求と応答のための要求を受信するためのコネクタ、パッケージを完了し、その後の処理で、その後、それは全体の要求の処理を完了するように、要求は、プロセスによって得られたソケットコネクタの結果を通って処理し、最終的にクライアントに返された後にコネクタコンテナに戻った後、リクエストとレスポンスのコンテナ!

必要性はTCP / IPプロトコルとHTTPプロトコルながらコネクタを達成するように、コネクタの底部には、HTTPプロトコルのカプセル化に従い、ソケット、リクエストとレスポンスを接続するために使用されます!

Tomcatがリクエストを処理しているので、その後、確かにこの要求を受信する必要が、要求は私達がコネクタを見て必要がある最初の事を受けています!

コネクタアーキテクチャ分析
コネクタコンテナへの処理が完了した後、コンテナの処理に、その後のリクエストを受信し、リクエストとレスポンスにパッケージ化、および用コネクタは、クライアントに返さ。

したがって、我々は、コネクタが4つの領域に分割されて理解することができます。

どのように(1)コネクタの要求を受け入れるようにするには?(2)要求および応答の中にカプセル化され、要求にどのように?(3)パッケージのリクエストとレスポンスコンテナ方法の完了後に処理すべき?(4)コネクタにどのように処理した後、コンテナを、クライアントに返さ?

次のようにまず、図コネクタ(図B)の構造を見て:

 

 

 

コネクタProtocolHandlerが要求を処理するために使用される、などの異なる接続タイプ異なるProtocolHandler代表:Http11Protocol共通接続を使用してソケットは、Http11NioProtocolはNioSocketを接続するために使用されます。

エンドポイント、プロセッサ、アダプタ:ProtocolHandlerからの3つのコンポーネントが含まれています。

(1)エンドポイントソケットは、基礎となるネットワーク接続の処理のために、ソケットエンドポイントのプロセッサが特定の処理を実行するコンテナの要求に対して、アダプタカプセル化要求を受信しました。

(2)エンドポイント・プロセスのエンドポイントは、プロセッサ、特定の処理に適合サーブレットコンテナへのアダプタ要求を実現するためにTCP / IPプロトコル、HTTPプロトコルを達成するために使用されているので、それは、基礎となるネットワークソケット接続であるためです。

ハンドラで定義さAsyncTimeoutアクセプターと二つの内部クラスおよびインタフェース内部(3)エンドポイントの抽象実装AbstractEndpoint。非同期タイムアウトをチェックするための要求、AsyncTimeout要求を聞くためにアクセプターは、ハンドラは、受信ソケットを処理するために、プロセッサの呼び出しが内部で処理されています。

この時点で、我々は答えることは非常に簡単でなければなりません(1)(2)(3)質問のが、(4)はまだわかりません、我々はコンテナがどのように処理されるかを見て、処理後に処理する方法であります結果は、コネクタに戻っていますか?

コンテナアーキテクチャ分析
パッケージとサーブレットを管理し、コネクタ4の内部の特定の処理依頼要求のコンテナ、サブコンテナ、次のグラフ(図C)を含みます。

 

 

 

4子コンテナのアクションは以下のとおりです。

(1)エンジン:複数のサイトを管理するために使用されるエンジン、サービスは、エンジンの最大値を有することができる;(2)ホスト:、サイトを表す仮想ホストと呼ばれることができ、ホストは、サイトを構成することによって追加することができる;(3)コンテキスト;ラッパー正常な発達、またはWEB-INFディレクトリとweb.xmlファイル以下に対応するアプリケーションプログラムを表す(4):各ラッパーにサーブレットを囲みます。

下記に示すように、ここではTomcatのファイルディレクトリには、制御ビットを見つけるために:

 

 

 

ホストは、メインアプリケーション、アプリケーションの他のサブディレクトリ、および全体を格納するルートディレクトリコンテキストおよびコンテキストの違いはアプリケーションを表し、私たちのデフォルトの設定ディレクトリの下のTomcatのwebapps内の各ファイルは、フォルダのコンテキストでありますWebアプリケーションは、ホストサイトです。

我々はアプリケーションコンテキストにアクセスすると、それが直接ルートの下にドメイン名を使用している場合は、アクセスすることができ、例えば:www.ledouit.com、他のアプリケーションがホスト(Webアプリケーション)の下にある場合、あなたはwww.ledouit.com/docsでも使用することができますデフォルトでは、アプリケーションのルート(ルート)がメインホストサイトの下にのみデフォルトで設定することができ、指定訪問し、もちろん、ルートディレクトリの下に使用されています。

ここでは、コンテナが何であるかを知っている参照してください、まだコンテナが処理され、取引終了後の結果がどのようにコネクタのへの復帰に対処する方法を知っているのですか?しかし、待って!以下は、コンテナの処理方法を模索し始めました!

コンテナ処理要求の
コンテナ処理要求は、パイプラインのバルブ・パイプライン処理を使用することです!(バルブは、バルブが目的です)

パイプライン・バルブは、Chain of Responsibilityパターンで、Chain of Responsibilityパターンが要求を処理するためにたくさん持っている順番に要求ハンドラの処理プロセスを意味する、各ハンドラは、自分自身の適切な治療を行うための責任があるのリターンを処理した後に処理を要求します、プロセスは継続させるための契約の下で。

 

 

 

しかし!責任パターンパイプライン、バルブおよびChain of Responsibilityパターンの一般的な使用のチェーンは多少違います!以下の2点間の主な違い:

(1)各パイプラインは、特定のバルブを有し、パイプラインの最後の実行、これはBaseValveバルブと呼ばれ、BaseValve削除されない;(2)パイプラインの上部容器BaseValveパイプラインで下部容器を呼び出します。

StandardEngineValve、StandardHostValve、StandardContextValve、StandardWrapperValve:私たちは、コンテナは、対応するBaseValveで、それぞれ4つのサブコンテナ、サブコンテナおよび4が含まれています知っています。

(図D)以下のようにフローチャートのパイプライン処理です。

 

 

 

最初の呼要求を受信した後、(1)コネクタは、最上位のコンテナパイプラインがEnginePipeline(エンジン導管)で処理するためのパイプラインの最上位のコンテナであろう。

(2)注文が実行されるエンジンのパイプライン等EngineValve1、EngineValve2、および最終的にホストパイプラインを呼び出すStandardEngineValveに、StandardEngineValveを行い、その後HostValve1ホストの実装続いて、HostValve2は、最終的にStandardHostValveの実装では、コールを回しますコンテキストラッパーパイプとパイプライン、StandardWrapperValveへの最終的な実装。

(3)StandardWrapperValveを実行するとき、それはれるFilterChainでStandardWrapperValveで作成して、要求を処理するために、そのdoFilterメソッドを呼び出します、れるFilterChainはフィルターに一致し、私たちの設定をサーブレット・リクエストが含まれ、それはのdoFilterメソッドは、すべての呼び出します要求が対処されているように、doFilterメソッドおよびサーブレットサービスのメソッドをフィルター!

(4)パイプライン弁の全てが実行されており、プロセスが特定の要求を終了すると、今回は結果がコネクタに戻すことができる、コネクタは、ソケットの実施形態を介してクライアントに結果を返します。

要約
この点を、我々にTomcatの全体的なアーキテクチャの一般的な理解を持って、図A、B、C、Dは、基本的な構成要素と各成分の役割を見ることができます。私たちは心の中でのラフなアウトラインを持つべきです

おすすめ

転載: www.cnblogs.com/chz-blogs/p/11448635.html