Tomcat のコンテナは Servlet をロードするために使用されます。では、Tomcat のサーブレット コンテナはどのように設計されているのでしょうか? コンテナ階層Tomcatは、エンジン、ホスト、コンテキスト、ラッパーの4つのコンテナを設計しました。 この階層化により、Tomcat はサーブレット コンテナーを非常に柔軟にします。
Tomcat の server.xml 構成ファイルを確認します。 Tomcatはコンポーネント化された設計を採用しており、最外層はサーバーである。 これらのコンテナは親子関係を持ち、ツリー構造を形成します。Tomcat は複合モードを使用してこれらのコンテナを管理します。 すべてのコンテナコンポーネントはコンテナインターフェースを実装しているため、複合モードではユーザーは 単一のコンテナオブジェクトの最下位レベルのラッパー 複合コンテナオブジェクトのコンテキスト、ホスト、またはエンジン コンテナインターフェースの定義: パブリックインターフェースコンテナはライフサイクルを拡張します { パブリック void setName(文字列名); パブリック コンテナ getParent(); パブリック void setParent(コンテナー コンテナー); パブリック void addChild(コンテナの子); パブリック void removeChild(コンテナの子); パブリック コンテナ findChild(文字列名); } サーブレットの検索を要求するプロセスコンテナーのレベルが非常に多い場合、Tomcat はどの Wrapper コンテナー内のどの Servlet がリクエストを処理するかをどのように決定するのでしょうか? マッパーはユーザーが要求したURLをサーブレットに見つけます 仕組みマッパーコンポーネントは、Webアプリケーションの構成情報(コンテナコンポーネントとアクセスパス間のマッピング関係など)を保存します。
これらの構成情報は、複数レベルのマップです。 リクエストが届くと、Mapper コンポーネントはリクエスト URL 内のドメイン名とパスを解析し、保存されているマップ内を検索することでサーブレットを見つけることができます。 オンラインショッピングシステムがあれば、
2 つのシステムは同じ Tomcat 上で実行されます。アクセス ドメイン名を分離するために、2 つの仮想ドメイン名が構成されています。 管理ショッピング ユーザー.shopping.com このデプロイメントでは、Tomcat はサービス コンポーネントとエンジン コンテナ コンポーネントを作成し、エンジン コンテナの下に 2 つのホスト サブコンテナを作成し、各ホスト コンテナの下に 2 つのコンテキスト サブコンテナを作成します。 Web アプリケーションには通常複数のサーブレットがあるため、Tomcat は各コンテキスト コンテナーに複数の Wrapper サブコンテナーも作成します。各コンテナには対応するアクセスパスがある Tomcat はどのようにしてサーブレットへの URL を見つけるのでしょうか? まず、プロトコルとポート番号に応じてサービスとエンジンを選択します。 ドメイン名に基づいてホストを選択します。 URLパスに基づいてコンテキストコンポーネントを見つける 最後に、URLパスに基づいてラッパー(サーブレット)を見つけます。 リクエストを処理するのはサーブレットだけではありません。検索パス上の親コンテナと子コンテナもリクエストを処理します。
この呼び出しプロセスは、Pipeline-Valve パイプラインと責任連鎖モデルを使用します。リクエスト処理プロセス中、多くのハンドラーが順番にリクエストを処理します。各ハンドラーは独自の処理を担当します。処理後、次のハンドラーが呼び出され、処理が続行されます。 Valve は、権限認証やログ記録などの処理ポイントを表します。 パブリックインターフェースValve { パブリック Valve getNext(); public void setNext(Valve バルブ); public void invoke(Request リクエスト、Response レスポンス) } Valve は処理ポイントであるため、リクエストを処理するためにinvoke メソッドが使用されます。 パブリックインターフェースPipelineはContainedを拡張します{ public void addValve(Valve バルブ); パブリック Valve getBasic(); public void setBasic(Valve バルブ); パブリック Valve getFirst(); } したがって、Valve のリンク リストがパイプライン内に維持され、Valve をパイプラインに挿入できます。 各コンテナにはパイプライン オブジェクトがあります。パイプラインの最初のバルブがトリガーされると、このコンテナのパイプライン内のすべてのバルブが呼び出されます。しかし、異なるコンテナのトリガー パイプラインを連鎖するにはどうすればよいでしょうか? 呼び出しプロセス全体はコネクタ内のアダプタによってトリガーされ、エンジンの最初のバルブを呼び出します。
コンテナの最後のバルブはフィルター チェーンを作成し、doFilter メソッドを呼び出します。このメソッドは最終的にサーブレットのサービス メソッドに呼び出されます。 バルブとフィルターの違いは何ですか?
Tomcat マルチレイヤー コンテナの設計に関するこの記事はこれで終わりです。Tomcat マルチレイヤー コンテナに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
垂直方向では、ヘッダーの配置を上、中央、下に設定できます。基本的な構文構文Top は上、Middle...
メインのオペレーティング システムを Windows から Ubuntu に切り替えたとき、最初に考...
MySQLの概要MySQL はリレーショナル データベース管理システムです。データベースは構造化され...
この記事では、例を使用して、MySQL クエリのソート関数とクエリ集計関数の使用方法を説明します。ご...
すべてには基礎が必要です。家を建てるには基礎が必要です。方程式を解くには、まず九九を覚える必要があり...
目次機能紹介関数関数の作成コンストラクタは関数を作成する関数宣言は関数を作成する関数式関数を作成する...
シンプルなリストビュー効果を実現するHTML結果: CSS スタイル ファイル listviewTe...
背景SQL クエリを実行するときに、where 条件の vachar 型フィールドの単一引用符を削除...
最近のウェブサイトでは SSL を有効にするのが標準となっています。ただし、SSL を設定した後も、...
要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...
1. はじめにMySQL ロックは、その範囲に応じて、グローバル ロック、テーブル ロック、行ロック...
目次1. 開発前にエンティティの種類を決定する2. インターフェースをリクエストするときは、使用する...
目次要約する仕事の都合で Apple の Mac OS に対応するソフトウェアをインストールする必要...
Docker を初めて使い始めると、通常とは異なる問題に遭遇して、必然的に混乱してしまいます。大丈夫...
この記事では、参考までにMySQLの無料インストール構成チュートリアルを紹介します。具体的な内容は次...