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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次序文1. 例で理解する2. ソースコードを分析する3. まとめ要約する序文他の人のコンポーネント...
簡単なレビュー: ブラウザの互換性の問題は、しばしば頭痛の種となります。ここでは、これらの問題を回避...
(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...
目次導入1. 事例の概要2. 環境の展開3. Nginxホストのインストール4. Tomcatのイン...
この記事では、雨滴効果を実現するためのJavaScriptキャンバスの具体的なコードを参考までに紹介...
目次要約する仕事の都合で Apple の Mac OS に対応するソフトウェアをインストールする必要...
HTML コメント。コードの横に HTML コメントを付ける必要があることがよくあります。そうするこ...
1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...
CSS画像結合技術1. 画像のステッチ画像ステッチング技術は、個々の画像を収集する技術です。画像の多...
1. 概念分析 1: UE ユーザー エクスペリエンス <br />英語ではユーザー エ...
この記事では、例を使用して、MySQL でストアド プロシージャを作成し、データ テーブルに新しいフ...
現在、Redis とコンテナについて学習中なので、Docker を使用して Redis マスタースレ...
目次序文Vue CLI での設定基本コードVueルーターの登場ネストされたルートの設定要約する序文V...
insert into employee values(null,'張三','...
例えば: <link rel="スタイルシート" href="h...