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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
序文最近、多くの新しい同僚がこの質問をしてきました。特に、homebrew を通じて自動的にインスト...
MySQL を学習すると、インストール後にいくつかのデフォルトのデータベースが付属していることに気付...
概要MySQL データベースで主キーのないテーブルを表示するための SQL ステートメントをいくつか...
導入通常、バックグラウンド サーバー プログラムには 1 つのプロセスのみが必要ですが、単一のプロセ...
この記事では、タブバーの切り替えコンテンツバーを簡単に実現するためのJavaScriptの具体的なコ...
製造手順を分析します。 1. リソースを準備してシーンを構築するオンラインでリソースを探すか、私のリ...
Vue プロジェクトで div ホイールのズームインとズームアウト、ドラッグ効果、キャンバス効果に似...
目次Tomcat でプロジェクトを展開する 3 つの方法プロジェクトをwebappsディレクトリに直...
ウィンドウ環境にmysql5.7.21をインストールします。詳細は次のとおりです。 1. MySQL...
今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...
目次1. 基本的な使い方2. 指示の動作原理2.1. 初期化2.2 テンプレートのコンパイル2.3....
sudo 権限委譲の概要su スイッチ ID: su –l ユーザー名 –c 'コマンド...
データベースはスロークエリログを有効にします設定ファイルを変更する設定ファイルmy.iniに次の2つ...
マイグレーションアドバンテージ:小型、高速、総所有コストが低い、オープンソース。複数のオペレーティン...
Tomcat サーバーは、無料でオープン ソースの Web アプリケーション サーバーです。軽量のア...