Tomcatの:オーソドックスなクラスローダアーキテクチャ

結果コードがコンパイルされたマシンコードは、局所的にバイトコードから変換しました

マシンコード(マシンコード)、機械語命令の学名、時にはネイティブコード(ネイティブコード)、直接データを解釈することができ、コンピュータのCPUと呼ば:エンコーディングとは何ですか。言葉の通常の意味で理解、あること、コンピュータが直接マシンコードを実行し、最速のコードを実行することができます。

どのようなバイトコード:バイトコード(バイトコード)命令コード/バイナリファイル内のデータの順序で実行されるプログラムを備えます。中間バイトコードをマシンコードより抽象的であるコードは、インタプリタが中間コードを機械コードに翻訳する必要があります。

多くの場合、それが構築されていないが、特定のマシン・コードとは何の関係もされています。バイトコードは、通常、同じ人は、ソースコードを読んで、しかし一定の値、参照、一連の命令などをエンコードすることができません。

ハードウェア環境に依存しない、メインのバイトコードの実行、特定のソフトウェアおよびソフトウェア環境を実現するために。バイトコードコンパイラと仮想マシンによって実装。特定のプラットフォーム上の仮想マシンは、バイトコード命令を変換し、バイトコードにソースコードをコンパイルするコンパイラを直接実行することができます。バイトコードJavaバイトコードのための代表的なアプリケーション。

開発ツールは、より良好できるクロスプラットフォームの操作にバイトコード、実行時にマシン命令によって生成された変換を行うためのバイトコードJVM(Java仮想マシン)にソースコードをコンパイル。

TomcatはJVMは、ビジネス・ロジックを実行するために、機械語命令を生成して、バイトコードの戦争パッケージを読み込むクラスローダ、です。一般的には、以下の問題を解決するには、Webサーバー:

  • 同じWebアプリケーションサーバーにデプロイされた2つのJavaライブラリが互いに孤立使用することができます。これは基本的な要件である、2つの異なるアプリケーションが同じサードパーティのライブラリの異なるバージョンに依存している可能性があるため、1つのサーバのみ2つのライブラリの適用を確保する必要があり、サーバーにライブラリーを求めることができませんでしたあなたは、互いに独立して使用することができます。
  • 単一のサーバーにデプロイされ、Javaライブラリを使用して2つのWebアプリケーションを共有することができます。隔離に格納されたスプリング10個の部分は、次いで、ライブラリーを過膨張の恐れがある大規模な仮想マシンにロードされたメモリによって占有される場合、例えば、同じサーバ上に配備Springアプリケーションを使用して、10件の組織が存在します。
  • サーバーは、アプリケーションが独自のセキュリティへの影響をデプロイされていないことを確認するために、できるだけ多くを必要とします。
  • JSP Webサーバアプリケーションのサポート、それらのほとんどは、ホットスワップ機能をサポートする必要があります。

これらの問題のため、Webアプリケーションを展開するときに、別のクラスパスには、需要を満たすことができません。三つのグループは、Javaクラスライブラリを保存することができます(/共通/、/サーバー/、/共有/)構造のtomcatディレクトリにあります。また、独自のWebアプリケーションディレクトリ/ WEB-INF /、4基の合計、Javaクラスを追加することができますライブラリは、次のような意味があるこれらのディレクトリに配置されています。

  • 共通:Tomcatのライブラリは、すべてのWebアプリケーションと一緒に使用することができます。
  • サーバー:Tomcatのライブラリは、すべてのWebアプリケーションには見えません使用することができます
  • 共有:ライブラリは、すべてのWebアプリケーションで使用することができますが、彼らはTomcatに表示されません
  • WEB-INF:Tomcatと他の不可視にのみ、このWebアプリケーションを使用して、Webアプリケーション

このディレクトリ構造のサポートでは、ディレクトリとライブラリがロードし、隔離します。これらの古典的な親委任モデルに従ってTomcatの複数のカスタムクラスローダークラスローダーが実装されています。
Tomcatサーバークラスローダアーキテクチャ
JDK 3つの暗い背景には、デフォルトで提供されています。その他は、カスタムのTomcatです。CommonClassLoader、CatalinaClassLoader、SharedClassLoaderはそれぞれロードしWebappClassLoader共通、サーバー、共有、WEB-INFを、およびJavaクラスライブラリ。多くの場合、複数のインスタンスがあるJSP Webアプリケーションクラスローダとクラスローダ、WebアプリケーションWebアプリケーションクラスローダに対応するそれぞれが、それぞれのファイルは、JSP、JSPクラスローダに対応することを特徴とします。
Tomcatの6.xは、サーバーは、3がデフォルトディレクトリのlibディレクトリにマージ共有、共通となり、このディレクトリは、以前の共通のカタログライブラリ内のライブラリの役割と同等です。

おすすめ

転載: blog.csdn.net/huqianlei/article/details/91478653