Tomcatのルートディレクトリ構造

Tomcatをインストールすると、以下のディレクトリが作成される。

/
├── **bin**
├── **conf**
├── lib
├── **logs**
├── temp
├── **webapps**
├── work
├── LICENCE
├── NOTICE
├── RELEASE-NOTE
└── RUNNNING.txt


|フォルダ名|説明|
|-|-|
|**bin**|Tomcat実行(起動/停止)ファイル|
|**conf**|Tomcatの起動時に読み込む設定ファイル。Tomcatを制御する主な設定ファイルはserver.xml|
|lib|共有ライブラリファイル(*.jar)を管理。このディレクトリに管理した*.jarファイルは、全てのWebアプリケーションからimport文で利用可。（TomatのデフォルトAPI）|
|**logs**|アクセスログ、エラーログ、実行ログなどのログファイルを管理|
|temp|一時ファイルを保存|
|**webapps**|Webアプリを配備|
|work|JSPファイルをサーブレットに解析した結果のJavaソースとクラスファイルをWebアプリケーション別に格納|
★Webアプリの実行に関しては**太字部分(bin,conf,logs,webapps)**が特に重要


##各ディレクトリ
### binディレクトリ
Windows用Tomcat8.5系のbinディレクトリについて

|名称|説明|
|-|-|
|bootstrap.jar|Tomcatの起動用Javaライブラリ。catalina.bat,service.bat,tool-wrapper.batから指定され各種バッチ実行時に梱包されているorg.apache.catalina.startup.Bootstrapが実行される。 利用者がこのjarファイルを直接操作することはまずない。|
|catalina.bat|Tomcatを起動させるための最もコアなバッチファイル(古いバージョンから伝わる起動用バッチ)。 Tomcatを実行する場合には、startup.batを利用。|
|configtest.bat|confディレクトリ以下に格納された設定ファイル各種の妥当性チェックを実施。Tomcatを仮起動するためにTomcatが停止している必要がある。|
|digest.bat|標準Realmで指定するユーザ名に対するパスワードを暗号化するためのバッチ。server.xmlファイルなどの設定ファイルにデータベースの接続ユーザを定義する場合ときに ユーザに対するパスワードを暗号化することでセキュリティ要件を高める事が目的。|
|service.bat|TomcatをWindowsのサービスとして登録・削除。|
|service.bat|install [サービス名] ：サービスの登録|
|service.bat|remove [サービス名] ：サービスの削除|
|setclasspath.bat|環境変数設定用バッチファイル。catalina.bat及びtool-wrapper.batからサブバッチとして実行される。|
|shutdown.bat|Tomcatプロセスの停止用バッチファイル|
|startup.bat|Tomcatプロセスの起動用バッチファイル|
|tomcat8.exe|WindowsサービスとしてTomcat 8を実行するためのサービスアプリケーション|
|tomcat8w.exe|Tomcatサービスを監視および設定するためのGUIアプリケーション|
|tomcat-juli.jar|Apache Tomcatの内部ログはJULIを使用している。catalina.bat及びtool-wrapper.bat実行時にクラスパスに本jarファイルが指定される。|
|tool-wrapper.bath|これは、環境変数を設定するために使用できる一般的なTomcatコマンドラインツールラッパースクリプト。 設定されたクラスパスにある完全修飾クラスのmainメソッドを呼び出します。 これはdigest.batによって内部的に使用される。|

###confディレクトリ
|名称|説明|
|-|-|
|catalina.policy|Tomcatの起動時のオプション(catalina.bat run -security)で起動するセキュリティ・マネージャーが管理する Javaに対するセキュリティ制御の設定ファイル。 本設定ファイルを設定することで悪意のあるapplet,サーバーサイドJavaのプログラムの抑制を行います。|
|catalina.properties|Tomcatに特化したプロパティファイル。<br>サーバーサイドJavaからSystem.getProperty("ファイル内で定義された値")で取得可能|
|context.xml|全てのWebアプリケーションに適用されるデフォルト・コンテキスト<br>【コンテキスト評価順：１】|
|jaspic-providers.xml|JavaTM Authentication Service Provider Interface for Containers用の設定ファイル<br>Webコンテナに対してサードパーティの認証システムを連携する機能<br>例えばGoogle OAuthを利用してGoogleアカウント所有者のみシステムを利用可能とする場合には、<br>本設定ファイルに Google OAuthの設定を明記し、lib配下に対応するjarファイルを格納する。 デフォルトでは、何も指定されていません。|
|jaspic-providers.xsd|jaspic-providers.xmlファイルの構文を定義したxsdファイル|
|logging.properties|Tomcatの起動、エラー、アクセスログの設定ファイル。フォーマットはjava.util.loggingを利用|
|server.xml|Tomcatの実行ポート番号、Apacheの連携設定、バーチャルホスト設定などTomcatの動作を決める主設定ファイル|
|tomcat-users.xml|Tomcat Webアプリケーションマネージャ(http://localhost:8080/manager)の管理者アカウント管理用ファイル|
|tomcat-users.xsd|tomcat-users.xmlファイルの構文を定義したxsdファイル|
|web.xml|全てのコンテキスト(Webアプリケーション)に適用される配備記述子（Deployment Descriptor)<br>【web.xml評価順：１】<br>個別のコンテキストを操作する場合には、conf/エンジン名/ホスト名/コンテキスト名.xml又は<br>warファイルに梱包したWEB-INF/web.xmlで指定します。|

confディレクトリで重要な点は、conf/context.xmlとconf/web.xmlは全てのコンテキスト(Webアプリケーション)に適用される共通のファイルである点。
Tomcatサーバの動作を操作する起点となるファイルは、server.xmlファイルになる。

###WEB-INFディレクトリ
「webapps/examples」の構成は以下のようになっている。
examples
├── jsp
├── servlets
├── **WEB-INF**
│   ├── classes
│   ├── jsp
│   ├── jsp2
│   ├── lib
│   ├── tags
│   └── web.xml
├── websockets
└── index.html

このうち、**WEB-INF**以下について

|名称|説明|
|-|-|
|classes|作成したプログラムをコンパイルして置く|
|lib|Webアプリケーションを動かすために必要なライブラリがあった場合、このフォルダへ|
|web.xml|設定ファイル。ここに使用するサーブレットクラスを記述したり、追加したライブラリ情報を記述したりする。|