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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
公式の MySQL イメージを使用するには、構成ファイル、DB データ ファイル ディレクトリなどの...
目次1. はじめに2. インストール3. 基本的な使い方3.1、-rパラメータ3.2、-aパラメータ...
この記事の例では、すべてのチェックボックスの選択を実現するためのJavaScriptの具体的なコード...
目次1. JDKをインストールする手動インストール2. トムキャット1. JDKをインストールする注...
目次序文レンダリングサンプルコード要約する序文ダイアログ ボックスは非常に一般的なコンポーネントであ...
ユニアプリコード <テンプレート> <表示> <image v-for...
入力ボックスの値を取得する複数の方法最初の方法は、制御されていないコンポーネントの取得です2番目の方...
現在、Docker には中国向けの公式ミラーがあります。詳細については、https://www.do...
目次概要node.js でマルチコア CPU を最大限に活用する方法Node で子プロセスを作成する...
[LeetCode] 183.注文しない顧客Web サイトに、Customers テーブルと Or...
一つの環境CentOS 7にVMware Toolsをインストールしてホストの共有フォルダへのアクセ...
最近、「フットボール ナビゲーション」Web サイトに取り組んでいるときに、上部の固定ナビゲーション...
目次背景解決策1アイデア:コード:解決策2アイデア:要約する参照する背景日付と時間をフォーマットする...
1. MySQLイメージを取得するターミナルから最新のMySQLイメージを取得するdocker pu...
目次1. スクリプトを使用してDockerのTLSを暗号化する2. Dockerの設定を変更してリモ...