Tomcatアーキテクチャ第1編

5027 ワード

一、Tomcatの定義
Tomcatはオープンソース軽量級Webアプリケーションサーバであり、優れたサーブレットコンテナで実現されています.
サーブレットはJavaサーブレットの略称で、小サービスプログラムまたはサービスコネクタと呼ばれ、Javaで作成されたサーバ側プログラムは、プラットフォームとプロトコルとは独立した特性を持ち、主な機能はインタラクティブにデータを閲覧し、生成し、動的なWebコンテンツを生成することである.
サーブレットは厳密にはJava言語で実装されるインタフェースの1つであり、一般的にはこのサーブレットインタフェースを実装したクラスを指す.
サーブレットライフサイクル
  • インスタンス化:init()メソッドを実行し、
  • を1回のみ実行します.
  • 要求処理:サービス()メソッドを実行し、複数回実行し、異なるメソッドに従ってdoGet()、doPost、および他のメソッド
  • を呼び出す.
  • 破棄:destroy()メソッドを実行し、
  • を1回のみ実行します.
    サーブレットの処理フロー
  • クライアントは、Http要求を送信し、サーブレットコンテナ
  • に委任する.
  • サーブレットコンテナが要求を受信と、サーブレットがロードされ、サービス()メソッド
  • が呼び出されます.
  • サーブレットコンテナは、複数のスレッドによって生成する複数の要求を処理し、各スレッドは、単一のサーブレットインスタンスのサービス()メソッド
  • を実行する.
    二、Tomcat起動
    一般的な起動
    Tomcatのbinディレクトリの下の起動ファイルstartupを直接起動します.bat/startup.sh
    IDEで起動
    ideでTomcat Serverを構成し、起動
    組み込み起動
    Springbootでmainメソッド埋め込み式でTomcatを起動
    三、Tomcatプロジェクトの配置
    暗黙的な導入
    プロジェクトフォルダ、warパッケージを直接webappsディレクトリの下に置くと、Tomcatはフォルダ名に基づいて仮想パスを自動的に生成し、プロジェクト関連ファイルおよびTomecatプロファイルを変更し、Tomcatサーバを再起動し、アクセスパスはhttp://localhost:8080
    配置の表示
  • context要素を追加:server.xmlのHostタグにContext要素(パスとファイルアドレスを指定)を追加し、変更後にTomcatサーバを再起動する必要があります.この仮想パスはD:projectdemoディレクトリの下にマッピングされます(warはファイルに解凍されます).アクセスパスはhttp://localhost:8080/demo
    
        
    
  • xmlファイルの作成:conf/Catalina/localhostでxmlファイルを作成します.アクセスパスはファイル名、アクセスパスはhttp://localhost:8080/demo
    #  localhost     demo.xml,    
    

  • 3つの導入方法の比較
  • 暗黙的な導入:すぐに導入でき、手動でWebアプリケーションをwebappsの下に置く必要があります.操作中はあまり人間的ではありません
  • context要素の追加:構成速度が速い;serverを変更します.xmlファイルはTomcatサーバを再起動し、
  • を再配置する必要があります.
  • xmlファイルを作成する:サーババックグラウンドは自動的に配置され、バックグラウンドの配置を一度変更し、Tomcatサーバを繰り返し起動することなく、
  • をインテリジェント化する.
    四、Tomcatディレクトリ構造
    bin実行スクリプトディレクトリ
  • startupファイル:主にcatalinaをチェックします.bat/catalina.sh必要な環境を実行しcatalinaを呼び出す.bat/catalina.shスタートTomcat
  • catalinaファイル:Tomcatを本格的に起動するファイルで、jvmパラメータをファイルに設定し、パフォーマンスのチューニングを行うことができます
  • shutdownファイル:Tomcat
  • を閉じる
  • versionファイル:現在のTomcatのバージョン番号
  • を表示
  • configtestファイル:Tomcatプロファイルserverを確認します.xmlのフォーマット、内容などが合法的で正しいかどうか
  • serviceファイル:Tomcatサービスをインストールし、net start tomcatでTomcat
  • を起動できます.
    confプロファイルディレクトリ
    web.xml:Tomcatでは、デフォルトの配置記述ファイルがすべて適用されます.主にベースのサーブレットとMIMEマッピング(mime-mappingファイルタイプであるTomcatで処理されるファイルタイプ)を定義し、配置されたアプリケーションにweb.xmlが含まれていない場合はファイルをロードし、Tomcat起動時にアプリケーションのweb.xmlファイルとマージする場合は、Tomcatに組み込まれたservletをロードする(DefaultServicelet--静的ファイルhtml,js,jpgなどのロード;JspServicelet--jspの処理)
    server.xml:Listener(Listener)、Connector(Link)などを含むTomcatサービスを構成するファイル
    context.xml:Webアプリケーションが自身のcontextを定義場合、すべてのWebアプリケーションがロードする必要があるContext構成をカスタマイズする.xml、そのファイルの構成が上書きされます
    catalina.policy:権限関連Permission、Tomcatはjvm上で実行されるため、デフォルトの権限があります.
    tomcat-users.xml:Tomcatの管理ユーザ情報の構成
    logging.properties:Tomcatログの設定
    説明:context.xmlとserver.xmlでcontextを構成する違い:server.xmlは動的に再ロードできないリソースであり、サーバが起動した後、ファイルを変更するには、再ロードするにはサーバを再起動する必要があります.そしてcontext.xmlファイルはそうでない場合、Tomcatサーバは定期的にファイルをスキャンし、ファイルが変更されたこと(タイムスタンプが変更された)を発見すると、サーバを再起動する必要がなく、自動的にファイルを再ロードします.
    libディレクトリ
    Tomcatのクラスライブラリで、Tomcat依存jarパッケージを追加する必要がある場合は、そのディレクトリの下に配置します.アプリケーション依存のjarパッケージをこのディレクトリに配置することもできます.このディレクトリのjarはすべての項目を共有できますが、アプリケーションが他のTomcatに配置されると、そのディレクトリの下のjarパッケージを共有することはできません.そのため、Tomcatに必要なjarパッケージだけをディレクトリの下に配置することをお勧めします.
    logsディレクトリ
    ログファイルが格納されているディレクトリには、Tomcatの起動と停止の情報が記録されています.
  • localhost-xxx.log:Webアプリケーションの内部プログラムログ、推奨
  • catalina-xxx.log:コンソールログ
  • host-manager.xxx.log:Tomcat管理ページのhost-managerの操作ログは、
  • を閉じることをお勧めします.
  • localhost_access_log_xxx.log:Tomcatのアクセスログ(conf/server.xmlで構成)をユーザーが要求し、
  • を閉じることを推奨します.
    Webappsディレクトリ
    各フォルダが1つのアイテム(いずれも削除可能)であるWebアイテムを格納するディレクトリ.ROOTは特殊なアイテムであり、アドレスバーにアイテムディレクトリが表示されていない場合、対応するのがROOTアイテムであり、その他のフォルダがアイテム名である
    ワークディレクトリ
    実行時に生成されたファイル、最終的に実行されたファイルはすべてここにあります.wenappsのプロジェクトで生成されたもので、このディレクトリの下の内容は削除でき、再実行時に再生成されます.クライアント・ユーザーがJSPファイルにアクセスすると、TomcatはJSPでJavaファイルを生成し、Javaファイルをコンパイルしてclassファイルを生成します.生成されたjavaファイルとclassファイルはこのディレクトリの下に保存されます.
    tempディレクトリ
    Tomcatの一時ファイルを保存します.このディレクトリの下の内容はTomcatを停止した後に削除できます.
    五、Tomcatコンポーネント及びアーキテクチャ
    Server
    Serverは最上位のコンポーネントであり、Tomcatの実行コンポーネントを表します.
  • は、Tomcatのライフサイクル全体にわたって異なる時間を処理するためのリスニング機構を提供する
  • .
  • はTomcatコンテナのグローバルなネーミングリソース実装を提供し、JNDI
  • ポートをリスニングしてShutdownコマンドを受け取り、Tomcat
  • を閉じる
    Service
    1つのサービスで複数の接続と1つのContainerを維持
    コネクタコンポーネント
    リンク、Socket要求の変換を傍受し、要求をContainer処理に渡し、異なるプロトコルと異なるI/O方式をサポートする
    Container
    クライアント要求を実行して応答を返すことができるオブジェクトのクラスを示します.このクラスには、異なるレベルのコンテナ(Engine、Host、Context、Wrapper)があります.
    Engine
    サーブレットエンジン全体、最上位コンテナオブジェクト
    Host
    サーブレットエンジンの仮想マシンを表します.主にドメイン名に関係しています.1つのサーバに複数のドメイン名がある場合は、複数のホストを使用できます.
    Context
    サーブレットContextを表し、1つのサーブレットContextは独立したWebアプリケーションを表します.
    Wrapper
    Webアプリケーションで定義されたサーブレットを表す
    Executor
    Tomcatコンポーネント間で共有できるスレッドプール