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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
序文JavaScriptを学ぶ学生は、 AJAX (非同期JavaScriptとxml) 変換は非同...
コミットされていない読み取りの例の操作プロセス - コミットされていない読み取り1. 2 つの My...
この記事では、検証コードのランダム生成と検証を実現するためのJavaScriptの具体的なコードを参...
Ubuntu にインストールされているバージョンをアンインストールします。 sudo apt-get...
目次ノードはMysqlに接続しますMySQLモジュールをインストールするMySQLに接続するよく使わ...
プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...
Dockerの概要Docker はオープンソースのソフトウェア展開ソリューションです。 Docker...
背景要件:ビジネスがどんどん大きくなると、サーバーの数も増え、さまざまなアクセスログ、アプリケーショ...
1. 行の形式は何ですか? MySQL の行形式の設定は次のように表示されます。 実際、MySQL ...
アルファベット順DTD: このタグが許可される XHTML 1.0 DTD を示します。 S=厳密、...
1. 新しいユーザーを作成します。 1. SQL ステートメントを実行して新しいものを作成します (...
目次タイムスタンプ比較クエリで遭遇する落とし穴タイムスタンプクエリ範囲の問題タイムスタンプ比較クエリ...
この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...
許可ベースの電子メール マーケティングにより、マーケティングとプロモーションのコストを大幅に削減でき...
目次クラスコンポーネントイベントバインディング関数コンポーネントイベントバインディング要約するRea...